tray-park
Goto Top

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.

...
                . "<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

Content-ID: 167940

Url: https://administrator.de/contentid/167940

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

Arano
Arano 13.06.2011 um 22:52:21 Uhr
Goto Top
Nabend

mal ganz fix eben noch und dann ab ins Bett ;)

  1. $_POST["gruppen"] ist ein ARRAY !
  2. Ich denke in deinem INSERT-Query fehlt ein Komma und zwar bei den VALUES zwischen dem zweitem und drittem Wert.


Gute Nacht
~Arano
EvilMoe
EvilMoe 14.06.2011 um 01:48:42 Uhr
Goto Top
Davon mal abgesehen ist dein Script unsicher, Thema SQl Injection.
tray-park
tray-park 14.06.2011 um 07:45:17 Uhr
Goto Top
Hi,

Danke für die rasche Antwort. Die Tabelle hat noch ein paar mehr Felder, das Komma ist beim kopieren irgendwie unter gegangen. Im original Skript ist es vorhanden.

Und danke für den Tipp mit der SQL-Injenction. Da kümmere ich mich aber wann anders drum.
Arano
Arano 14.06.2011 um 15:54:48 Uhr
Goto Top
Hallo Tray-Park

hast du es denn nun zum laufen bekommen oder klemmt es noch irgend wo !?


~Arano
tray-park
tray-park 14.06.2011 um 16:05:34 Uhr
Goto Top
Hi,

wie gesagt, das Komma fehlt im Original nicht. Nur eben hier im Thread.

Und was meinst du mit $_POST["gruppen"] ist ein ARRAY?

Stehe gerade etwas auf dem Schlauch. Was kann ich hier ändern, damit es funktioniert?
vy272909
vy272909 14.06.2011 um 17:20:43 Uhr
Goto Top
Hallo,
<?
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>
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. ;)
tray-park
tray-park 15.06.2011 um 20:19:10 Uhr
Goto Top
Hi,

die dok_id ist Primärschlüssel und auto_increment. Ich dachte nur, dass man trotzdem NULL schreiben muss. Hab ich aber nun weg gelassen.

Aber zum eigentlichen:

ES FUNKTIONIERT face-smile

Vielen Dank für die Hilfe.

Liebe Grüße

Tray
EvilMoe
EvilMoe 15.06.2011 um 20:23:10 Uhr
Goto Top
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.