Ankündigung

Einklappen
Keine Ankündigung bisher.

Variabler neuer Spalten titel

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variabler neuer Spalten titel

    Hi Leute ich versuche mittels einem Formular eine Variabel zu definieren, die später als Titel für eine neue Spalte in meiner Datenbank eingefügt werden soll.

    Das Erstellen der Spalte nimmt aber die Variabel nicht an:

    PHP-Code:
    <?php
            $variablertitel 
    eingabeausformular;
            
    $con mysqli_connect("localhost","name","pw");
            
    mysqli_select_db($con"name");
            
    $sql "ALTER TABLE dbname ADD '$variablertitel' INT (42)";
            
    mysqli_query($con$sql);
            
    mysqli_close($con);
            
    ?>
    Der Code funktioniert ohne Variabel $variablertitel, jedoch nicht mit. Habe ich einen Fehler gemacht, oder ist das prinzipiell nicht möglich?

  • #2
    Wie sieht denn die fertige von PHP geparste query aus? Siehe auch: http://php-de.github.io/jumpto/sql/

    Was ist der Sinn dieser neuen Spalte? Meistens ist es DB-Fehldesign, wenn man "dynamisch" Spalten anlegen möchte.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo, Danke erstmal, bin blutiger Anfänger

      Hab deine Pars-Kontrolle wie folgt angepasst:
      PHP-Code:
      if (false === mysqli_query($con$sql)) {
                 die(
      mysqli_error($con)); 
      Sollte richtig sein, oder?

      Folgende Fehlermeldung wird ausgegeben:
      You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''ert' INT (42)' at line 1

      Sinn der Spalte: In den ersten Spalten der DB werden Daten angegeben, zu denen neue Mitglieder Zeilenweise ihre Daten eingeben sollen. Die neuen Mitglieder geben ihre Namen an (->Spalte wird generiert), und können nun ihre Daten zeilenweise eingeben.

      Hab mir schon überlegt, die x und y Achse zu tauschen, um dann eine Spalte "Name" zu definieren, und die neuen Mitglieder jeweils eine neue Zeile eintragen. Dies macht aber darstellungstechnisch keinen Sinn.

      edit: Das ert bezieht sich auf die Formulareingabe, die die Variabel definiert. Es kommt die gleiche Fehlermeldung, wenn ich die Variabel fix definiere und das Formular auslasse:

      PHP-Code:
      $variablertitel ert
      edit2: Hab verschiedene Syntaxänderungen erfolglos getestet. der Code sieht momentan wie folgt aus:
      PHP-Code:
      <?php
       
               $neuerspieler 
      $_GET["neuerspieler"];
              
      $con mysqli_connect("localhost","name","pw");
              
      mysqli_select_db($con"name");
              
      $sql "ALTER TABLE Mitmacher ADD '" .$neuerspieler"' INT(42)";
              
      mysqli_query($con$sql);
              
              if (
      false === mysqli_query($con$sql)) {
                 die(
      mysqli_error($con));
              
      mysqli_close($con);
              }
      ?>
      Bekomm immer noch den Syntax Error für die Variabel..

      Kommentar


      • #4
        Sinn der Spalte: In den ersten Spalten der DB werden Daten angegeben, zu denen neue Mitglieder Zeilenweise ihre Daten eingeben sollen. Die neuen Mitglieder geben ihre Namen an (->Spalte wird generiert), und können nun ihre Daten zeilenweise eingeben.
        Befasse dich sofort mit den Grundlagen der Handhabung von Tabellen und stoppe unbedingt ohne Weiteres deine Weiterentwicklung!

        Hab mir schon überlegt, die x und y Achse zu tauschen, um dann eine Spalte "Name" zu definieren, und die neuen Mitglieder jeweils eine neue Zeile eintragen. Dies macht aber darstellungstechnisch keinen Sinn.
        Doch macht es. Und zwar sehr viel.

        Kommentar


        • #5
          Sinn der Spalte: In den ersten Spalten der DB werden Daten angegeben, zu denen neue Mitglieder Zeilenweise ihre Daten eingeben sollen. Die neuen Mitglieder geben ihre Namen an (->Spalte wird generiert), und können nun ihre Daten zeilenweise eingeben.
          Genau das meinte ich.. Das "passiert" Anfängern sehr oft. Eine Datenbank ist kein Excel Wichtig! Wie Chris. schon schrieb... Stopp, du rennst mit Vollgas gegen eine Wand!

          Stichwort: Normalisierung, schau mal hier: http://www.peterkropff.de/site/mysql/normalisierung.htm

          LG
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Neueinträge sind NIE NICHT Spalten, sondern Zeilen, wie die Vorposter schon schreiben! Kannst dich gerne per PN melden, aber die Grundlagen sollten schon vorhanden sein...

            Kommentar


            • #7
              Danke euch allen. Hab mich ein wenig eingelesen und ansatzweise das NICHT-Excel Prinzip von DB's verstanden. Hab den Aufbau nun mit drei verschiedenen DB realisiert, die jeweils in Arrays ausgeben werden.
              Mein Problem nun:

              Bei über 160Zeilen pro DB und rund 50 Spalten, ist das einzelne Einordnen der Arrays in HTML/CSS schlicht zu aufwendig.

              Mit folgendem Code lässt sich ja eine "db-spalte" als Schlaufe auslesen.

              PHP-Code:
              $res mysqli_query($con"select * from Infotabelle");
                      
                      echo 
              "<table class='infotabelle'>";
                      
                      echo 
              "<tr> <td>Spaltentitel</td>";
                      while (
              $dsatz mysqli_fetch_assoc($res))
                  {
                      echo 
              "<tr>";
                      echo 
              "<td>" $dsatz["Spaltentitel"] . "</td>";
                      echo 
              "</tr>";
                  }
                      echo 
              "</table>"
              Könnt ihr mir ein Stichwort geben, welchen Befehl ich brauche, um die einzelnen Arrays von den Arrays einer "db-zeile" als Schlaufe auslesen zu lassen?

              Kommentar


              • #8
                mit drei verschiedenen DB realisiert
                Du meinst drei Tabellen in einer DB?

                rund 50 Spalten
                sicher das du alle brauchst bzw. alle richtig sind?

                Könnt ihr mir ein Stichwort geben, welchen Befehl ich brauche, um die einzelnen Arrays von den Arrays einer "db-zeile" als Schlaufe auslesen zu lassen?
                foreach()

                Schlaufe
                besser "Schleife"

                "select * from Infotabelle"
                http://php-de.github.io/jumpto/code-smells/#select-

                LG
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  ALTER TABLE dbname ADD '$variablertitel' INT (42)
                  Der Tabellenname gehört nicht in Anführungszeichen.
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Sobald zur Laufzeit Spalten hinzugefügt, geändert oder gelöscht werden müssen ist das Datenbankdesign broken-by-design. Siehe Normalisierung.
                    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                    Kommentar

                    Lädt...
                    X