Php 5.3 - Abgefragte Auswahlliste auswerten
Mal wieder ein NEWBIE.
2 Tabellen sind von dem Thema betroffen
1. Gruppen
gruppen_id, gruppen_name
2. Dokumente
dok_id, dok_gruppe, dok_typ
Hi,
ich habe eine Auswahlliste deren Werte auf einer Tabelle basieren. In meinem Fall kann der User eine Gruppe auswählen.
Nun möchte ich die getätigte Auswahl in die "Dokumente" Tabelle übergeben
Hab es auch schon so versucht
Leider steht in der Tabelle "Dokumente" nach dem Betätigen des Submit-Buttons immer die 5, also die zuletzt in die Tabelle eingetragene Gruppe.
Wie kann ich es anstellen, dass immer die ID der Auswahl in die Dokumente-Tabelle geschrieben wird?
Freue mich über jede Antwort.
Liebe Grüße
Tray
2 Tabellen sind von dem Thema betroffen
1. Gruppen
gruppen_id, gruppen_name
2. Dokumente
dok_id, dok_gruppe, dok_typ
Hi,
ich habe eine Auswahlliste deren Werte auf einer Tabelle basieren. In meinem Fall kann der User eine Gruppe auswählen.
...
. "<tr>"
. "<td>Gruppe:</td>"
. "<td><select name='gruppen' />";
$sqlab = "select gruppen_id, gruppen_name from gruppen";
$res = mysql_query($sqlab);
while ($dsatz = mysql_fetch_assoc($res))
{
$gruppen_id = $dsatz["gruppen_id"];
$gruppen_name = $dsatz["gruppen_name"];
echo "<option value='" . $gruppen_id . "'>" . $gruppen_name . "</option>";
}
echo "</select></td>"
...
Nun möchte ich die getätigte Auswahl in die "Dokumente" Tabelle übergeben
$sqlab = "insert into text_dok (dok_id, dok_gruppe, dok_typ,) values (NULL," . $_POST["gruppen"] . "1)";
mysql_query($sqlab);
Hab es auch schon so versucht
$sqlab = "insert into text_dok (dok_id, dok_gruppe, dok_typ,) values (NULL," . $gruppen_id . "1)";
mysql_query($sqlab);
Leider steht in der Tabelle "Dokumente" nach dem Betätigen des Submit-Buttons immer die 5, also die zuletzt in die Tabelle eingetragene Gruppe.
Wie kann ich es anstellen, dass immer die ID der Auswahl in die Dokumente-Tabelle geschrieben wird?
Freue mich über jede Antwort.
Liebe Grüße
Tray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167940
Url: https://administrator.de/contentid/167940
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Das sollte klappen. Du müsstest nur noch überlegen, ob du vielleicht doch lieber ein auto_increment in deiner Tabelle setzen möchtest, damit du das ständige NULL nicht schreiben musst. ;)
<?
if(!empty($_POST['gruppe'])) {
$sql = "INSERT INTO text_dok (dok_gruppe, dok_typ) VALUES ('".$_POST['gruppe']."', 1)";
$do = mysql_query($sql);
}
?>
<form action="" method="post">
<table>
<tr>
<td>Gruppe</td>
<td><select name="gruppe">
<?
$sql = "SELECT gruppen_id, gruppen_name FROM gruppen";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0) {
do{
echo '<option value="'.$row['gruppen_id'].'">'.$row['gruppen_name'].'</option>';
}while($row = mysql_fetch_assoc($result));
}
?>
</select></td>
</tr>
</table>
</form>
Ein Fehler ist im Script noch vorhanden von SQL Injection und XSS abgesehen.
Dort ist eine DO While Schleife. Die sollte gegen eine "normale" While ausgetauscht werden da wenn dein SQL Befehl nämlich 0 Resultate liefert warum auch immer würde wegen dem Do While Fehlermeldungen raus schmeißen weil die Variablen nicht gesetzt sind. Also lieber ne normale While verwenden.
EDIT: Sehe gerade das das vorher geprüft wird. Die IF könnte man entfernen und ne einfach While nehmen, spart ein wenig Schreibarbeit.
Dort ist eine DO While Schleife. Die sollte gegen eine "normale" While ausgetauscht werden da wenn dein SQL Befehl nämlich 0 Resultate liefert warum auch immer würde wegen dem Do While Fehlermeldungen raus schmeißen weil die Variablen nicht gesetzt sind. Also lieber ne normale While verwenden.
EDIT: Sehe gerade das das vorher geprüft wird. Die IF könnte man entfernen und ne einfach While nehmen, spart ein wenig Schreibarbeit.