Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Php 5.3 - Abgefragte Auswahlliste auswerten

Frage Entwicklung PHP

Mitglied: tray-park

tray-park (Level 1) - Jetzt verbinden

13.06.2011, aktualisiert 20:22 Uhr, 4021 Aufrufe, 8 Kommentare

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.

01.
... 
02.
                . "<tr>" 
03.
		. "<td>Gruppe:</td>" 
04.
		. "<td><select name='gruppen[]' />"; 
05.
		 
06.
		$sqlab = "select gruppen_id, gruppen_name from gruppen"; 
07.
		$res = mysql_query($sqlab); 
08.
		 
09.
		while ($dsatz = mysql_fetch_assoc($res)) 
10.
11.
				$gruppen_id = $dsatz["gruppen_id"]; 
12.
				$gruppen_name = $dsatz["gruppen_name"]; 
13.
				 echo "<option value='" . $gruppen_id . "'>" . $gruppen_name . "</option>"; 
14.
15.
		 
16.
		echo "</select></td>" 
17.
...
Nun möchte ich die getätigte Auswahl in die "Dokumente" Tabelle übergeben

01.
		$sqlab = "insert into text_dok (dok_id, dok_gruppe, dok_typ,) values (NULL," . $_POST["gruppen"] . "1)"; 
02.
                mysql_query($sqlab);
Hab es auch schon so versucht

01.
		$sqlab = "insert into text_dok (dok_id, dok_gruppe, dok_typ,) values (NULL," . $gruppen_id . "1)"; 
02.
                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
Mitglied: Arano
13.06.2011 um 22:52 Uhr
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
Bitte warten ..
Mitglied: EvilMoe
14.06.2011 um 01:48 Uhr
Davon mal abgesehen ist dein Script unsicher, Thema SQl Injection.
Bitte warten ..
Mitglied: tray-park
14.06.2011 um 07:45 Uhr
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.
Bitte warten ..
Mitglied: Arano
14.06.2011 um 15:54 Uhr
Hallo Tray-Park

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


~Arano
Bitte warten ..
Mitglied: tray-park
14.06.2011 um 16:05 Uhr
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?
Bitte warten ..
Mitglied: 272909
14.06.2011 um 17:20 Uhr
Hallo,
01.
<? 
02.
if(!empty($_POST['gruppe'])) { 
03.
	$sql = "INSERT INTO text_dok (dok_gruppe, dok_typ) VALUES ('".$_POST['gruppe']."', 1)"; 
04.
	$do = mysql_query($sql); 
05.
06.
?> 
07.
<form action="" method="post"> 
08.
  <table> 
09.
    <tr> 
10.
      <td>Gruppe</td> 
11.
      <td><select name="gruppe"> 
12.
          	<? 
13.
	$sql = "SELECT gruppen_id, gruppen_name FROM gruppen"; 
14.
	$result = mysql_query($sql); 
15.
	if(mysql_num_rows($result) > 0) { 
16.
		do{ 
17.
			echo '<option value="'.$row['gruppen_id'].'">'.$row['gruppen_name'].'</option>'; 
18.
		}while($row = mysql_fetch_assoc($result)); 
19.
20.
	 
21.
		?> 
22.
        </select></td> 
23.
    </tr> 
24.
  </table> 
25.
</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. ;)
Bitte warten ..
Mitglied: tray-park
15.06.2011 um 20:19 Uhr
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

Vielen Dank für die Hilfe.

Liebe Grüße

Tray
Bitte warten ..
Mitglied: EvilMoe
15.06.2011 um 20:23 Uhr
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.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...