PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular versenden (GET?)


BSG
08.07.2008, 17:41:21
Hallo,

ein neues kleines Problem hätte ich nochmal ...

Und zwar habe ich eine Datenbank-Abfrage, wo ich bei "normalen" Links mittels "GET" immer schön die einzelnen Datensätze auswählen kann, die geändert werden sollen.

Wie sieht das aber mit einem Formular aus, welches ich absende?

Wenn ich dieses auf "POST" stelle, habe ich beim "Submit" keine ID, die den Datensatz auswählt. Ich kann dann aber die Daten über "$variable = $_POST["formularfeldname"]" abfragen, jedoch wie bekomme ich diese in den korrekten Datensatz mittels "UPDATE" hinein?

Meine "GET"-Variable kann ich ja nicht zusammen mit dem "Submit" senden - oder doch?

Wäre da ein Versand des Formulars mit "GET" hilfreicher oder gibts evtl. eine andere Lösung?

rarios
08.07.2008, 18:12:51
habs jetzt nicht ganz verstanden, aber vielleicht meinst Du ja sowas:
Mach doch einfach im Formular ein Hidden-Feld:

<input type="hidden" name="ID" value="<?php echo $_GET['ID']; ?>" />

<?php
// Und dann bei Deinem UPDATE //
$sql = "... WHERE `ID` = ".$_POST['ID']."";
?>

Domi
08.07.2008, 18:20:31
<?php
// Und dann bei Deinem UPDATE //
$sql = "... WHERE `ID` = ".$_POST['ID']."";
?>

Und genau das wirst du nicht machen, bevor du nicht $_POST['ID'] auf schädlichen Inhalt wie den Versuch eine SQL-Injektion überprüft hast :)

Domi

BSG
08.07.2008, 19:08:01
Hallo,

danke erstmal für die Antworten! Ich stehe grade mal wieder auf dem Schlauch ...

Ich gebe das Formular ja schon mittels eines "echo ' ' " aus. Also klappt das
<input type="hidden" name="ID" value="<?php echo $_GET['ID']; ?>" />
nicht.

Any idea?

Area51
08.07.2008, 19:34:14
Um SQL-Injection auszuschliessen, VOR dem Update-Query dies in den Code einfügen:

$_POST['ID'] = intval ($_POST['ID']);


Dadurch wird der Wert automatisch in eine Zahl umgewandelt.

rarios
08.07.2008, 19:45:12
Hallo,

danke erstmal für die Antworten! Ich stehe grade mal wieder auf dem Schlauch ...

Ich gebe das Formular ja schon mittels eines "echo ' ' " aus. Also klappt das
<input type="hidden" name="ID" value="<?php echo $_GET['ID']; ?>" />
nicht.

Any idea?


dann:
<input type="hidden" name="ID" value=".$_GET['ID']." />

Domi
08.07.2008, 20:07:43
dann:
<input type="hidden" name="ID" value=".$_GET['ID']." />

Das wird so nicht gehen.

echo "<input type=\"hidden\" name=\"ID\" value=\"" . $_GET['ID'] . "\" />";

oder

echo '<input type="hidden" name="ID" value="' . $_GET['ID'] . '" />';

Domi

Opendix
08.07.2008, 20:11:33
Nein nein nein.. doch keine hidden-Felder benutzen :S

Für sowas gibts doch Sessions!


//Ganz am Anfang der PHP-Datei:
session_start();

//Speichern der ID in der Session
$_SESSION['id'] = $_GET['id'];

//und fertig...



Bessere erklärung dazu findest du hier:
http://tut.php-quake.net/sessions.html

rarios
08.07.2008, 20:47:56
ahhh domi, Du hast natürlich vollkommen recht, hab mal wieder nicht ganz zu Ende überlegt, die Standardsachen liegen mir irgendwie nicht ;-)

BSG
08.07.2008, 22:02:03
Klasse, vielen Dank!