Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown Menü zur Auswahl einer Tabelle

Einklappen

Neue Werbung 2019

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

  • Dropdown Menü zur Auswahl einer Tabelle

    Liebe Forumsmitglieder,

    Vorsicht Anfängerfrage:

    Ich würde gerne ein Dropdown Menü zur Auswahl einer Tabelle, in die später der Eintrag eingetragen werden soll, erstellen.

    Bis dato konnte ich das Menü nur mit den Daten einer Tabelle anzeigen lassen, nicht mit den Tabellennamen einer Datenbank.
    Meine bisherigen Bemühungen sehen folgerndermaßen aus:

    PHP-Code:
    <?php

    $sql
    =mysqli_query($connect"SELECT Frage FROM Tabelle_Lerneinheit");
    if(
    mysqli_num_rows($sql))
    {
    $select'<select name="select">';
    while(
    $rs=mysqli_fetch_array($sql))
    {
    $select.='<option value="'.$rs['Frage'].'">'.$rs['Frage'].'</option>';
    }
    }
    $select.='</select>';
    echo 
    $select;

    ?>

    Wie würdet Ihr so etwas realisieren?
    Das Projekt Frontend soll im Endeffekt so aussehen:
    Login/ Registrierung(fertig)
    Auswahl der Lerneinheit (via Dropdown)
    Eintragen der Fragen in die via Dropdown ausgewählte Tabelle
    Ausloggen, Änderung etc.

    Alternativ könnte man natürlich jeder eingegebenen Frage eine ID für den Themenbereich zuweisen lassen.


    Ich hoffe, ich konnte mich irgendwie verständlich machen.

    Vielen Dank im Voraus!!

  • #2
    Hallo,

    bitte PHP-Codetags hier im Forum nutzen.

    Ich würde gerne ein Dropdown Menü zur Auswahl einer Tabelle, in die später der Eintrag eingetragen werden soll, erstellen.
    Hast du für jede "Lerneinheit" in der Datenbank eine eigene Tabelle? Dann ist sehr warscheinlich dein DB Design nicht richtig. Bevor du weitermachst, lies dich mal zum Thema Normalisierung ein, sonst kann es sein das du später auf Grund des falschen DB Designs ausser Probleme nur Probleme hast.

    http://www.peterkropff.de/site/mysql/normalisierung.htm

    http://www.sqldocu.com/nine/normalform1.htm
    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
      Wahrscheinlich dann so,

      Code:
      "SELECT `question` FROM `mytable` WHERE `unit` = 1"
      für Lerneinheit 1

      Tabelle mytable
      id int primary key
      question_nr int
      unit int
      question varchar
      ...

      Kommentar


      • #4
        Vielen Dank für die schnellen Tipps.

        Habe mir schon gedacht, dass die DB falsch designt ist.

        Ja im Moment entspricht jede Lerneinheit einer Tabelle.
        Ich hatte Angst, dass die Anzahl der Fragen die Tabelle so groß macht, wenn alle Lerneinheiten nur über eine Id hinterlegt werden, dass die zufällige Abfrage in einem späteren Quiz zu lange dauert.
        Das ganze Quiz soll per multiple choice laufen.

        Kommentar


        • #5
          Zitat von handfeger Beitrag anzeigen
          Ich hatte Angst, dass die Anzahl der Fragen die Tabelle so groß macht, wenn alle Lerneinheiten nur über eine Id hinterlegt werden, dass die zufällige Abfrage in einem späteren Quiz zu lange dauert.
          Leg einen Index drauf (Stichwort: "use the index, luke"). Über wie viele Millionen IDs reden wir hier? Weniger als 1 Million? Dann mach dir keine Sorgen.
          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

          Kommentar


          • #6
            http://use-the-index-luke.com/de
            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


            • #7
              Ich bin ein gutes Stück weiter gekommen.
              Allerdings habe ich noch eine Frage und stelle sie mal frech hier unter das Thema

              Ich würde gerne Bilder via Ajax hochladen und ohne Page Refresh anzeigen. Das klappt auch schon sehr gut.
              Allerdings soll das Bild erst nur gezeigt und dann via submit zusammen mit anderen Daten eintragen werden.

              ajaximage.php:
              PHP-Code:
              $valid_formats = array("jpg""png""gif""bmp");
              if(isset(
              $_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
              {
              $name $_FILES['photoimg']['name'];
              $size $_FILES['photoimg']['size'];

              if(
              strlen($name))
              {
              list(
              $txt$ext) = explode("."$name);
              if(
              in_array($ext,$valid_formats))
              {
              if(
              $size<(1024*1024))
              {
              $actual_image_name time().substr(str_replace(" ""_"$txt), 5).".".$ext;
              $tmp $_FILES['photoimg']['tmp_name'];
              if(
              move_uploaded_file($tmp$path.$actual_image_name))
              {
              //Bild in Datenbank verschieben
              //mysqli_query($connect,"UPDATE table SET Frage_Bild='$actual_image_name' '");  <-- Um diese Query geht es!!!

              echo "<img src='uploads/".$actual_image_name."' class='preview'>";
              }
              else
              echo 
              "failed";
              }
              else
              echo 
              "Bildgröße max 1 MB";
              }
              else
              echo 
              "Falsches Format";
              }

              else
              echo 
              "Please select image..!";

              exit; 

              Den markierte Query würde ich also gerne in folgende Seite implantieren:
              senden.php:
              PHP-Code:
              <?php
              $Frage 
              $_POST ["Frage"];
              $Antwort1 $_POST ["Antwort1"];
              $Antwort2 $_POST ["Antwort2"];
              $Antwort3 $_POST ["Antwort3"];
              $Antwort4 $_POST ["Antwort4"];
              $korrekte_Antwort $_POST ["correct"];
              $Anmerkungen $_POST ["Anmerkungen"];


              if (
              $Frage == "" or $Antwort1 == "" or $Antwort2 == "" or $Antwort3 == "" or $Antwort4 == "")
              {
              echo 
              "Du hast leider in eins der Felder nichts eingetragen (Anmerkungen ausgenommen).</b> </p>
              Bitte gehe zurück und versuche es erneut.</b> </p></p>"
              ;
              }
              else
              {
              $connect mysqli_connect (DB_SERVER DB_USERDB_PASSWORDDB_DATABASE)
              or die (
              "Die Verbindung hat nicht funktioniert");
              }

              mysqli_select_db ($connect"DB_DATABASE" )
              or die (
              "Verbindung zur Datenbank hat nicht funktioniert");

              {
              $eintrag "INSERT INTO table
              (Frage, Antwort1, Antwort2, Antwort3, Antwort4, correct, Anmerkungen)

              VALUES
              ('
              $Frage', '$Antwort1', '$Antwort2', '$Antwort3', '$Antwort4', '$korrekte_Antwort', '$Anmerkungen')";
              }

              {
              $eintragen mysqli_query ($connect$eintrag);


              -------
              Query mit Bild aus AJAX--------


              mysqli_close ($connect);
              }

              ?>

              Ich hoffe ich konnte mich irgendwie klar ausdrücken

              Kommentar


              • #8
                Hier steht wie es geht und dort hast du auch ein Beispiel.

                Kommentar


                • #9
                  Leider habe ich noch eine Frage.
                  Ich wuerde gerne Daten dynamisch als Dropdown ausgeben.

                  PHP-Code:
                  <?php
                  if (!$connect) {
                  echo 
                  "Keine Verbindung zu DB möglich: " mysql_error();
                  exit;
                  }

                  $abfrage "SELECT Lernbereich FROM Lernbereiche ORDER BY ID ASC";
                  $result mysqli_query($connect$abfrage);

                  if (!
                  $result) {
                  echo 
                  "Konnte Abfrage ($abfrage) nicht erfolgreich ausführen von DB: " mysqli_error();
                  exit;
                  }
                  if (
                  mysqli_num_rows($result) == 0) {
                  echo 
                  "Keine Zeilen gefunden, nichts auszugeben, also Ende";
                  exit;
                  }
                  while (
                  $row mysqli_fetch_assoc($result)) {
                  echo 
                  $row["Lernbereich"];


                  // Hier die Dropdownausgabe
                  // dachte an folgendendes
                  // echo '<option>', htmlspecialchars($row['Lernbereich'].$row['ID']), '</option>';

                  }

                  mysqli_free_result($result);
                  // Hier habe ich ein Ergebnis, das ich aber nicht in eine Dropdown Auswahl bekomme

                  ?>





                  Sobald eine Auswahl getroffen wurde soll in einem zweiten Drop Down eine dementsprechende Auswahl an Daten sein.

                  Tausend Dank im Voraus!

                  Kommentar


                  • #10
                    PHP-Code:
                    echo '<select name="select_item">';
                    while (
                    $row mysqli_fetch_assoc($result)) {
                        echo 
                    '<option value="' $row['ID'] .  '">' htmlspecialchars($row['Lernbereich'ENT_QUOTES ENT_HTML5'UTF-8') . '</option>';
                    }
                    echo 
                    '</select>'
                    Ich kann bei dir kein Form-Element erkennen, daher habe ich mich erst mal auf das Wesentliche beschränkt.
                    Besser wäre es du würdest ohne echo im PHP Teil arbeiten und das HTML erst am Ende zusammenbauen.
                    Wenn die id ein primary key ist, was die id sein sollte, verzichte ich da auf htmlspecialchars, es macht aber nichts, htmlspecialchars immer beim Kontextwechsel anzuwenden.

                    Schau dir an was nach der Auswahl ankommt mit var_dump($_GET['select_item']), alternativ $_POST.
                    Es ist die id aus der Tabelle.

                    Kommentar

                    Lädt...
                    X