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-Key: 167940

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: Arano
Arano Jun 13, 2011 at 20:52:21 (UTC)
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
Member: EvilMoe
EvilMoe Jun 13, 2011 at 23:48:42 (UTC)
Goto Top
Davon mal abgesehen ist dein Script unsicher, Thema SQl Injection.
Member: tray-park
tray-park Jun 14, 2011 at 05:45:17 (UTC)
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.
Member: Arano
Arano Jun 14, 2011 at 13:54:48 (UTC)
Goto Top
Hallo Tray-Park

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


~Arano
Member: tray-park
tray-park Jun 14, 2011 at 14:05:34 (UTC)
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?
Member: vy272909
vy272909 Jun 14, 2011 at 15:20:43 (UTC)
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. ;)
Member: tray-park
tray-park Jun 15, 2011 at 18:19:10 (UTC)
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
Member: EvilMoe
EvilMoe Jun 15, 2011 at 18:23:10 (UTC)
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.