#1 4. Dezember 2008 Dynamisch erstellte inputs in DB übernehmen Hallo, habe folgendes Problem: Ich habe ein Formular mit dem ich eine Expertennummer aufnehmen und die Spezialisierung des Experten aus einer dropdown box auswählen kann. Der Experte kann mehrere Spezialisierungen haben. Nun habe ich mit prototype ermöglicht dass die select box mehrmals hinzugefügt werden kann. Jetzt habe ich aber Probleme beim einlesen der Daten aus den SELECT-Boxen, da diese ja nun alle gleich heißen und er mir da schon bei der ersten Prüfung einen fehler ausgibt. Wie kann ich das lösen? Formular: Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="prototype.js" type="text/javascript"></script> <script type="text/javascript"> function hol_dropdown() { var myAjax = new Ajax.Request( "dropdown.php", { method: 'get', onComplete: zeige_dropdown } ); } function zeige_dropdown( originalRequest ) { document.getElementById('dropdowns').innerHTML += originalRequest.responseText; } </script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> </head> <form name="experte" action="eintragen.php" method="POST"> <div class="beschreibung"> Expertennummer: </div> <div class="eingabe"><input name="expertennummer"type="text" size="5"/></div> <?php include('dropdown.php'); ?> <div id="dropdowns"> </div> <br /> <input type="button" value="Neues DropDown" onClick="hol_dropdown()" /> <br /> <input type="submit" value="Absenden" name"senden" /> </form> <body> </body> </html> PHP zum erzeugen der dropdowns: Code: <?php echo "<div class=\"beschreibung\">Spezialgebiet</div>"; $db = @new mysqli('localhost', 'root', '', 'experten'); if (mysqli_connect_errno()) { die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } $sql = 'SELECT schlagwort FROM schlagworte'; $result = $db->query($sql); if (!$result) { die ('Etwas stimmte mit dem Query nicht: '.$db->error); } echo "<select name=\"Spezialisierung\">\n"; echo "<option value=\"NULL\">Bitte waehlen</option>\n"; while ($row = $result->fetch_assoc()) { // NULL ist äquivalent zu false // $row ist nun das Array mit den Werten $string=$row['schlagwort']; echo "<option value=\"$string\">$string</option>\n"; } echo "</select><br>"; $result->close(); unset($result); // und referenz zum objekt löschen, brauchen wir ja nicht mehr... ?> PHP zum einlesen der Werte in DB: Code: <?php // [...] $db = @new mysqli('localhost', 'root', '', 'experten'); if (mysqli_connect_errno()) { die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } if ('POST' == $_SERVER['REQUEST_METHOD']) { if (!isset($_POST['expertennummer'], $_POST['Spezialisierung'])) { die ('Benutzen sie nur Formulare von der Homepage.'); } if (('' == $expertennummer = trim($_POST['expertennummer'])) or ('' == $schlagwort = trim($_POST['Spezialisierung'])) ) { die ('Bitte füllen sie das Formular vollständig aus.'); } $sql = 'INSERT INTO experten_schlagworte VALUES (?,?)'; $stmt = $db->prepare($sql); if (!$stmt) { die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error); } $stmt->bind_param('si', $schlagwort, $expertennummer); if (!$stmt->execute()) { die ('Query konnte nicht ausgeführt werden: '.$stmt->error); } echo '<p class="info">Experte hinzugefügt. <a href="blub.php">Zurück zum Formular</a>.</p>'; } else { echo"FALSCHE METHODE"; } ?> + Multi-Zitat Zitieren
#2 4. Dezember 2008 AW: Dynamisch erstellte inputs in DB übernehmen Ähm tut mir leid aber ich hab echt kein Bock mir den kompletten Code anzugucken und damit sprech ich glaube ich vielen aus der Seele Nein wirklich. Versuch erstmal selber den Fehler einzugrenzen indem du dir an sinnvollen stellen den Inhalt von wichtigen Variablen ausgeben lässt. Du weisst nunmal am besten wie dein Code arbeiten soll. Wenn du den Fehler dann eingegrentzt hast oder du allgemein ein Problem mit der nötigen Programmlogik hast, dann aktuallisier das hier nochmal. + Multi-Zitat Zitieren
#3 4. Dezember 2008 AW: Dynamisch erstellte inputs in DB übernehmen Also was halt das eigentliche Problem ist: wenn ich einen select habe funktioniert das auswerte php skript , wenn jedoch mehr als ein select feld mit dem gleichen namen vorhanden ist, kann nicht mehr ausgewertet werden, ist ja klar, da anschenend das auswerte skript nicht mehr die werte von den selects übernimmt. ich möchte also eine variable anzahl an selects per post in einer php datei auswerten und ind die db schreiben. + Multi-Zitat Zitieren
#4 4. Dezember 2008 AW: Dynamisch erstellte inputs in DB übernehmen du kannst das ganze mit arrays gestelten wenn ich dich richtig verstanden habe: PHP: <form><select name="Spezialisierung[]"><option>1</option></select> <select name="Spezialisierung[]"><option>2</option></select></form> <?php // nächstes script $array = $_POST [ 'Spezialisierung' ]; ?> Also $_POST schließt keine arrays aus. somit kannst du auch hier mit unterschiedlich vielen selects arbeiten + Multi-Zitat Zitieren