Ich habe es mit einem PHP-Formular zu tun, das Checkboxen und eine MySQL-Datenbank enthält. Endlich habe ich erreicht, mehrere Zeilen, eine für jedes ausgewählte Element, einzufügen, indem ich das Array überschlinge.
Aber jetzt muss ich mich einem anderen Problem stellen: In meiner DB habe ich eine Haupttabelle, um die Auswahlfragen zu speichern, und eine weitere Tabelle, um die Antworten aus den Kontrollkästchen zu speichern.
Ich möchte zuerst die Abfrage ausführen die Ein-Wahl-Antworten in die Haupttabelle (eine Zeile pro Formular) einfügen, so dass es eine serielle ID generiert.
Und zweitens, um diese ID zurückzubekommen und sie mit jeder in die Checkbox-Tabelle eingefügten Zeile zu verknüpfen, um die beiden Tabellen über diese ID zu verknüpfen.
Ist das möglich bitte und wie soll ich tun?
Wie fügt man Daten aus einem PHP-Formular in eine MySQL-Datenbank mit Fremdschlüsseln ein?
Hier wird der HTML-Code:
<input type="checkbox" name="nature_contact[]" value="1"><label >Phone</label><br/>
<input type="checkbox" name="nature_contact[]" value="2"><label >Mail</label><br/>
<input type="checkbox" name="nature_contact[]" value="3"><label >Visit</label><br/>
<input type="checkbox" name="nature_contact[]" value="4"><label >Unk</label> <br/><br/>
<input type="text" name="coord"/>
<br/>
<input type="text" name="tel"/>
<br/><br/>
<input type="submit" name="add" value="SEND"/>
Und hier der PHP-Teil:
try {
if(isset($_POST['add'])){
if(isset($_POST['coord'])) {
$coord=$_POST['coord'];
}
else { $coord = '';
}
if(isset($_POST['tel'])) {
$tel=$_POST['tel'];
}
else { $tel = '';
}
$query="INSERT INTO nmp_mfs.general (coord, tel) VALUES ('".$coord."', '".$tel."')";
$statement_gnl = $pdo->prepare($query);
$statement_gnl->execute();
}
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
try {
if(isset($_POST['add'])){
if(isset($_POST['nature_contact'])) {
$sql = "INSERT INTO nmp_mfs.t_temporaire (nature_contact) VALUES ".rtrim(str_repeat('(?),', count($_POST["nature_contact"])), ',');
$statement = $pdo->prepare($sql);
$count = 1;
foreach($_POST["nature_contact"] as $nature_contact) {
$statement->bindValue($count++, $nature_contact);
}
$statement->execute();
}
}
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
Vielen Dank! Ich habe versucht mit (max id), aber lastInsertId() ist viel zuverlässiger. Allerdings muss ich diesen Wert in die Funktion hinzufügen: .trrim (str_repeat ('(?),', Count ($ _ POST ["nature_contact"])), ','), und das ist schwierig für mich. Ich versuchte mit str_repeat ('($ lastID,?),' Aber es gibt eine Zeichenkette anstelle des Wertes von $ lastID zurück. Ist es möglich zu lösen? – RemiC
Es FUNKTIONIERT! Ich habe Zitate vergessen in: str_repeat ('('. $ LastID . ",?)" – RemiC