MySQL Tabelle anlegen über Formular!

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

  • MySQL Tabelle anlegen über Formular!

    Hallo ersteinmal...
    Mal wieder eine bestimmt simmple Frage:

    Bisher habe ich Tabellen immer über phpMyadmin eingerichtet, daher habe ich nciht so viel Ahnung wie man Tabellen über PHP usw richtig anlegt. Es geht um folgendes.

    Ich möchte einem Nutzer die Möglichkeit geben eine neue Tabelle in der Datenbank an zu legen, dessen Name der selbe ist der in einem Texteingabefeld eingegeben wird.

    Nun ist die frage, wie binder ich in den PHP Code das Formular so ein das der Tabellenname = dem Eingabefeld ist?

    PHP-Code:
    <?php
    require("../control/access/sqldaten.php");
    mysql_query("CREATE TABLE /*hier das Eingegebene aus dem Textfeld*/ (

    id int(255) NOT NULL auto_increment,
    interpret varchar(100) NOT NULL,
    titel varchar(100) NOT NULL,
    PRIMARY KEY (id) );"
    );
    mysql_close();


    ?>
    Und wie müsste dann das Formular genau aussehen?
    Jemand ne idee oder geht das vieleicht auch gar nicht!?

  • #2
    Zitat von Sonork Beitrag anzeigen
    Nun ist die frage, wie binder ich in den PHP Code das Formular so ein das der Tabellenname = dem Eingabefeld ist?
    http://tut.php-quake.net/de/concat.html#s1
    http://tut.php-quake.net/de/post.html

    Und wie müsste dann das Formular genau aussehen?
    http://de.selfhtml.org/html/formulare/

    oder geht das vieleicht auch gar nicht!?
    Das geht schon - aber ob es eine gute Idee ist, mit so etwas herumzuspielen, wenn ganz offensichtlich noch so wenig Grundlagenwissen vorhanden ist, ist eine ganz andere Frage.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo,

      das würde zwar ohne Probleme gehen, klingt aber ganz sehr nach schlechtem Design. Wenn es mehrere Tabellen mit unterschiedlichen Namen aber derselben Struktur und Semantik gibt, ist definitiv ein Denkfehler drin.

      Was willst du denn eigentlich damit bezwecken? Eventuell könnte man dir ja alternative Wege vorschlagen.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Also ersteinmal danke für die Fixen antworten!!!
        Habe es jetzt ersteinmal so hinbekommen wie ich es haben wollte...

        Das ich nen Denkfehler habe davon gehe ich auch aus, aber ich werde mal die lage etwas Schildern.
        Es geht um eine Datnebank, bei der User Bewertungen für Spiele abgeben können.
        Dabei soll aber berücksichtigt werden das jedes Spiel je nach Plattform auch andere Bewertungen bekommen kann, dem User soll es freigsetellt seine neuen Spiele selbständig hinzu zu fügen, dafür die Funktion der erstellung einer neuen Tabelle. Jede Tabelle ist dabei natürlich gleich aufgebaut.

        Meine idee war es auch erst alle Spiele egal auf welcher Plattform usw. in einer Tabelle an zu legen, allerdings finde ich dann das erstellen der Abfragen, um die Ergebnisse da zu stellen zu aufwändig.

        Ich weiß nciht ob man draus schlau geworden ist was ich da vor habe...

        Mal noch ein kleines bsp:

        Edit:
        geplanter inhalt für die jeweiligen angelegten Tabellen:

        Spielename / Platform / Grafik / Sound / Steuerung / Story / Schwierigkeitsgrad / Spieler / Bewertungtxt / vonusr / aktiv

        und in einer Haupttabelle werden dann lediglich die Spiele aufgelistet und o sie Aktiv sind...
        Zuletzt geändert von Sonork; 05.02.2010, 01:52.

        Kommentar


        • #5
          Zitat von Sonork Beitrag anzeigen
          Dabei soll aber berücksichtigt werden das jedes Spiel je nach Plattform auch andere Bewertungen bekommen kann
          Definiere: „andere“ Bewertungen.

          dem User soll es freigsetellt seine neuen Spiele selbständig hinzu zu fügen, dafür die Funktion der erstellung einer neuen Tabelle. Jede Tabelle ist dabei natürlich gleich aufgebaut.
          Das ist Unsinn. Daten gleicher Struktur gehören in die gleiche Tabelle.

          Meine idee war es auch erst alle Spiele egal auf welcher Plattform usw. in einer Tabelle an zu legen, allerdings finde ich dann das erstellen der Abfragen, um die Ergebnisse da zu stellen zu aufwändig.
          Das ist kein Argument.
          Wenn dir die Kenntnisse fehlen, um die nötigen Abfragen zu erstellen, um die jeweils gewünschten Daten zu erhalten - dann beschäftige dich intensiver mit SQL.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Naja also ein Spiel kann unter Playstation 3 ganz andere Bewertung in der Steuerung Grafik usw bekommen als unter PC oder Xbox360.

            Aber ich werde wohl euren Vorschlag beherzigen und lediglich 1 Tabelle dafür anlegen, muss ich mich halt wirklich mal mit SQL beschäftigen, was ich aj schon lange mal vor hatte

            Vielen dank!
            Kann soweit geclosed werden!

            Kommentar


            • #7
              Ich kann mich meinem Vorredner nur anschließen, will dir allerdings noch ein paar Tipps geben.

              Lies dir mal intensiv die Wikipedia-Seite zum Thema Normalformen durch, da bekommst du schon mal einen Überblick, wie man eine DB vernünfftig aufbaut. Im MySQL-Handbuch gibt es auch Realwelt-Beispiele zu den verschiedenen Themen. Eine Google-Suche nach Datenbank-Tutorials ist sicherlich auch nicht verkehrt.

              Du solltest es also erst richtig lernen, bevor du mit sowas online gehst und dir irgendein Script-Kiddie mit seinen zarten 14 Jahren deine Datenbank leerräumt, weil du schlecht und unsicher programmiert hast.

              Viel Erfolg.

              Edit: hier wird in der Regel nichts "geclosed"
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Nochmal ne frage, möchte keinen neuen Thread aufmachen dafür, ich habe nun mein Sytsem einigermaßen so hinbekommen wie ich es wollte, nun habe ich aber ein kleines Problem wozu ich unter Google oder unter diversen Tutorial Seiten nichts finde!

                Ich möchte gewisse ausgabewerte einer Tabelle als Bild darstellen
                Hier mal ein Bild der MySQL ausgabe:



                Ich möchte das PS3 und PC jeweils Bilder zugewiesen bekommen, meine Frage ist nun wie!?
                Wie gesagt habe leider keine Tuts gefunden! Und meine PHP/MySQL Buch was ich mir geholt habe, sagt auch ncihts zu einem solchem Thema!

                Kommentar


                • #9
                  Zitat von Sonork Beitrag anzeigen
                  Wie gesagt habe leider keine Tuts gefunden! Und meine PHP/MySQL Buch was ich mir geholt habe, sagt auch ncihts zu einem solchem Thema!
                  Von der Vorstellung, dass „Tuts“ und Bücher dir das Denken komplett abnehmen können, weil sie für jedes individuelle Problem schon eine Lösung auf Lager hätten, solltest du dich verabschieden.

                  Ich möchte gewisse ausgabewerte einer Tabelle als Bild darstellen
                  Dann überlege dir zuerst, was „als Bild darstellen“ eigentlich bedeutet.
                  Im Umfeld einer HTML-Seite bedeutet es, du möchtest Text ausgeben - und zwar den Text, der ein IMG-Element in HTML darstellt.

                  Ich möchte das PS3 und PC jeweils Bilder zugewiesen bekommen, meine Frage ist nun wie!?
                  Du fragst einfach ab, ob der Inhalt der Spalte den Wert "PS3" oder "PC" hat, und gibst dann jeweils den Code für das entsprechende Bild aus.

                  (Das kann man, wenn für jeden möglichen Spalteninhalt auch ein Bild vorhanden ist, darauf minimieren, dass man die Bilder mit Spalteninhalt+".jpg"/".gif" benennt - und dann nur noch den Spalteninhalt im src-Attribut eines IMG-Elements ausgibt, gefolgt von der (einheitlichen) Dateiendung, fertig. [Wobei man natürlich auch noch ein sinnvolles alt-Attribut ausgeben will, also ggf. ebenfalls den Spalteninhalt.])
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Also an sich hat es geklappt, aber eher Suboptimal, ich möchte ja das Feld für PS3 oder PC mit dem jeweiligen Symbol (Bild versehen wird!) Ich ahbe nun alles hin und her Probiert und bekomme das mit dem ersetzen nciht hin mein Quellcode sieht derzeit so aus: (finde ich aber eher Suboptimal)

                    PHP-Code:
                    <?php
                    //---------->Verbindungsaufbau<-----------//
                    require_once("../../control/access/sqldaten.php");
                    //----->Gesammte Tabelle
                    $sql "SELECT spname, os FROM Spiele WHERE spname LIKE 'A%' OR spname LIKE 'B%' OR spname LIKE 'C%' OR spname LIKE 'D%' GROUP BY spname, os";
                    $result=mysql_query($sql) or die("Fehler");
                    // SQL Daten Ausgeben
                    echo "Alle Spiele von A-D";
                    echo 
                    "<br>";
                    echo 
                    "<br>";
                    echo 
                    "<table border=\"0\">\n";
                    while (
                    $row=mysql_fetch_assoc($result))
                    {
                    echo 
                    "<tr>";
                    echo 
                    "<td bgcolor='C0C0C0'><input type='checkbox' name='$id' value='$id'></td>";
                    foreach (
                    $row as $item
                    echo 
                    "<td bgcolor='FFF87A'>$item</td>";
                        if(
                    $item == "PS3")
                            {
                            echo 
                    "<td bgcolor='FFF87A'><img src='PS3.jpg'></td>";
                            }
                        if(
                    $item == "PC")
                            {
                            echo 
                    "<td bgcolor='FFF87A'><img src='PC.jpg'></td>";
                            }
                    echo 
                    "</tr>\n";
                    }
                    echo 
                    "</table>\n";
                    ?>
                    Was muss genau geändert werden hat da wer ne Ahnung, habt da jetzt ne Stunde dran rumgebastelt, aber irgenetwas stimmt den immer nicht, dann ahtte ich zwischenzeitlich nur noch die Bilder ohne den Namen des Spieles davor usw!

                    Kommentar


                    • #11
                      Die foreach-Schleife ist überflüssig wie ein Kropf.
                      PHP-Code:
                      while ($row=mysql_fetch_assoc($result))
                      {
                      echo 
                      "<tr>";
                      echo 
                      "<td bgcolor='C0C0C0'><input type='checkbox' name='$id' value='$id'></td>";
                      echo 
                      '<td bgcolor="FFF87A">'.$row['spname'].'</td>';
                          if(
                      $row['spname'] == "PS3")
                              {
                              echo 
                      "<td bgcolor='FFF87A'><img src='PS3.jpg'></td>";
                              }
                          if(
                      $row['spname'] == "PC")
                              {
                              echo 
                      "<td bgcolor='FFF87A'><img src='PC.jpg'></td>";
                              }
                      echo 
                      "</tr>\n";

                      Peter
                      Zuletzt geändert von Kropff; 07.02.2010, 15:05. Grund: Fehler korrigiert
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        So Ähnlich hatte cih es auch schon allerdings kommt dan folgende Fehlermeldung:

                        Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /homepages/32/d313662005/htdocs/brotherhood/bewertung/alpha/a_d.php on line 16
                        Zeile 16 beginnt bei
                        PHP-Code:
                        echo "<td bgcolor='FFF87A'>'.$row['spname'].'</td>"
                        und hier der Komplette Code (bisschen angepasst)

                        PHP-Code:
                        <?php
                        //---------->Verbindungsaufbau<-----------//
                        require_once("../../control/access/sqldaten.php");
                        //----->Gesammte Tabelle
                        $sql "SELECT spname, os FROM Spiele WHERE spname LIKE 'A%' OR spname LIKE 'B%' OR spname LIKE 'C%' OR spname LIKE 'D%' GROUP BY spname, os";
                        $result=mysql_query($sql) or die("Fehler");
                        // SQL Daten Ausgeben
                        echo "Alle Spiele von A-D";
                        echo 
                        "<br>";
                        echo 
                        "<br>";
                        echo 
                        "<table border=\"0\">\n";
                        while (
                        $row=mysql_fetch_assoc($result)) 

                        echo 
                        "<tr>"
                        echo 
                        "<td bgcolor='C0C0C0'><input type='checkbox' name='$id' value='$id'></td>"
                        echo 
                        "<td bgcolor='FFF87A'>'.$row['spname'].'</td>"
                            if(
                        $row['os'] == "PS3"
                                { 
                                echo 
                        "<td bgcolor='FFF87A'><img src='PS3.jpg'></td>"
                                } 
                            if(
                        $row['os'] == "PC"
                                { 
                                echo 
                        "<td bgcolor='FFF87A'><img src='PC.jpg'></td>"
                                } 
                        echo 
                        "</tr>\n"

                        echo 
                        "</table>\n";
                        ?>
                        Wo liegt der fehler? (Wie gesagt so ähnlich hatte ich es ja acuh schon mal, habe ich etwas vergessen?)

                        Edit:

                        Ok hat sich erledigt:

                        Die Lösung sieht wie folgt aus:

                        PHP-Code:
                        while ($row=mysql_fetch_assoc($result)) 

                        echo 
                        "<tr>"
                        echo 
                        "<td bgcolor='C0C0C0'><input type='checkbox' name='$id' value='$id'></td>"
                        echo 
                        "<td bgcolor='FFF87A'>".$row['spname']."</td>"
                            if(
                        $row['os'] == "PS3"
                                { 
                                echo 
                        "<td bgcolor='FFF87A'><img src='PS3.jpg'></td>"
                                } 
                            if(
                        $row['os'] == "PC"
                                { 
                                echo 
                        "<td bgcolor='FFF87A'><img src='PC.jpg'></td>"
                                } 
                        echo 
                        "</tr>\n"

                        echo 
                        "</table>\n"
                        Danke Kropff
                        Zuletzt geändert von Sonork; 06.02.2010, 17:41.

                        Kommentar

                        Lädt...
                        X