Wie lese ich hier das richtige Feld aus?
Hallo, ich habe bei meiner Seite ein Problem, die richtigen Variablen korrekt auszulesen.
Ich hoffe, ihr könnt mir da helfen!
Ich habe ein Formular mit Eingabefeldern, Radiobuttons etc.
Zwischen drin habe ich folgendes stehen:
<code="php">
$query = mysql_query('SELECT * FROM mitarbeiter');
while($result_row = mysql_fetch_object($query))
{
$id = $result_row->mitarbeiter_id;
$vorname = $result_row->vorname;
$nachname = $result_row->nachname;
echo'
<input type="submit" name="auswählen" value="'.$vorname.' '.$nachname.'">
<input type="hidden" name="add" value="'.$id.'">
<br>
';
};
Es sollen also Buttons erzeugt werden, um Mitarbeiter hinzuzufügen. Die ID soll dabei übergeben werden.
Aber wenn ich nun $_POST['add'] abfrage, wird der letzte Wert übergeben, was ja auch irgendwie sinnig ist.
Ich hatte vorher die Idee, den Submit Button und das versteckte Feld in ein eigenes Formular zu packen.
Das funktionierte soweit auch, dabei war es mir aber leider nicht mehr möglich, alle anderen Werte des übrigen Formulars mitzunehmen um sie mit Sessions wieder zurückgeben zu können.
Wie kann ich die passende ID übergeben und gleichzeitig auch die übrigen Werte mitnehmen?
Ich hoffe, ihr versteht, was ich meine und könnt mir da ein bisschen helfen!
Lg, Florian
Ich hoffe, ihr könnt mir da helfen!
Ich habe ein Formular mit Eingabefeldern, Radiobuttons etc.
Zwischen drin habe ich folgendes stehen:
<code="php">
$query = mysql_query('SELECT * FROM mitarbeiter');
while($result_row = mysql_fetch_object($query))
{
$id = $result_row->mitarbeiter_id;
$vorname = $result_row->vorname;
$nachname = $result_row->nachname;
echo'
<input type="submit" name="auswählen" value="'.$vorname.' '.$nachname.'">
<input type="hidden" name="add" value="'.$id.'">
<br>
';
};
Es sollen also Buttons erzeugt werden, um Mitarbeiter hinzuzufügen. Die ID soll dabei übergeben werden.
Aber wenn ich nun $_POST['add'] abfrage, wird der letzte Wert übergeben, was ja auch irgendwie sinnig ist.
Ich hatte vorher die Idee, den Submit Button und das versteckte Feld in ein eigenes Formular zu packen.
Das funktionierte soweit auch, dabei war es mir aber leider nicht mehr möglich, alle anderen Werte des übrigen Formulars mitzunehmen um sie mit Sessions wieder zurückgeben zu können.
Wie kann ich die passende ID übergeben und gleichzeitig auch die übrigen Werte mitnehmen?
Ich hoffe, ihr versteht, was ich meine und könnt mir da ein bisschen helfen!
Lg, Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154643
Url: https://administrator.de/forum/wie-lese-ich-hier-das-richtige-feld-aus-154643.html
Ausgedruckt am: 11.04.2025 um 14:04 Uhr
11 Kommentare
Neuester Kommentar
.. wenn dein Formular jetzt X-mal das Feld mit dem name="add" enthält, Wird die Auswertung nichts bringen.
Du könntest das in name="add" ändern um alle IDs zu bekommen - dann kennst Du aber auch nur den Namen aber nicht die passende ID
Wieso machst du nicht eine Liste mit Checkboxen in denen Du die IDs übergibst. Soweit ich sehe liest Du die Werte doch immer wieder aus der DB aus !?
Du könntest das in name="add" ändern um alle IDs zu bekommen - dann kennst Du aber auch nur den Namen aber nicht die passende ID
Wieso machst du nicht eine Liste mit Checkboxen in denen Du die IDs übergibst. Soweit ich sehe liest Du die Werte doch immer wieder aus der DB aus !?
echo '<form action="" method="post">
# ... FOR ...
echo '<div>'.$vorname.' '.$nachname.' <div><input type="checkbox" name="add" value="'.$id.'" /></div></div>';
# ...
echo '<div><input type="submit" name="action" value="Hinzufügen" /></div> ';
echo '</form>';
... ok - dann kannst Du
... oder so ähnlich.
- bei jedem Datensatz ein FORM anlegen
# ... FOR ...
echo '<form action="" method="post">
echo '<input type="hidden" name="add" value="'.$id.'" /> <div>'.$vorname.' '.$nachname.' </div> <div><input type="submit" name="action" value="Hinzufügen" /></div> ';
echo '</form>';
# ...
- oder Du arbeitest mit Javascript und füllst / sendest ein "verstecktes" FORM wenn der Button gedrückt wird - in HTML:
<form id="form" action="" method="post"> <input id="formvalue" type="hidden" name="id" value="" /> </form>
#... FOR ...
Name <input type="button" name="action" value="Hinzufügen" onclick="document.getElementByID('formvalue').value='0815'; document.forms['form'].submit();" />
# ...
Hi Letavino,
dein Gedanke . . .
. . . ist schon mal gut. Den Rest, " . . . in einer Schleife zu prüfen welcher Button gedrückt wurde . . .",
kannst du dir sparen, weil eh nur der eine, im Formular angeklickte Button gesendet wird.
Alle anderen Textfelder werden gesendet. Allerdings würde ich dazu die Textfelder (Vorname, Nachname)
im Formular auch mit den entspr. ID's in Arrays "packen", z.B.: name=\"vorname[$row[id]]\" value=\"$row[Vorname]\".
So hast du beides erreicht: Alle Textfelder werden gesendet, Vor- und Nachname des Mitarbeiters, den du eintragen willst,
kannst du nach Absenden mit dem Index des gesendeten Buttons ansprechen.
Beachte aber: Der Button "kommt an" als [cmd] = Array ([DatensatzID] => Eintragen), wie im Formular definiert.
Den Index liest du mit der Funktion key aus: $buttonID=key($_POST['cmd']);
Jetzt kannst du mit $buttonID Vor- und Nachname des Mitarbeiters ansprechen:
$vorname=$_POST['vorname'][$buttonID];
$nachname=$_POST['nachname'][$buttonID];
Ein kleines Beispiel:
Gruß
Günni
dein Gedanke . . .
Der einzige Weg, es so vernünftig zu machen, wäre den Namen des Submitbuttons in "auswählen['.$id.'] . . .
. . . ist schon mal gut. Den Rest, " . . . in einer Schleife zu prüfen welcher Button gedrückt wurde . . .",
kannst du dir sparen, weil eh nur der eine, im Formular angeklickte Button gesendet wird.
Alle anderen Textfelder werden gesendet. Allerdings würde ich dazu die Textfelder (Vorname, Nachname)
im Formular auch mit den entspr. ID's in Arrays "packen", z.B.: name=\"vorname[$row[id]]\" value=\"$row[Vorname]\".
So hast du beides erreicht: Alle Textfelder werden gesendet, Vor- und Nachname des Mitarbeiters, den du eintragen willst,
kannst du nach Absenden mit dem Index des gesendeten Buttons ansprechen.
Beachte aber: Der Button "kommt an" als [cmd] = Array ([DatensatzID] => Eintragen), wie im Formular definiert.
Den Index liest du mit der Funktion key aus: $buttonID=key($_POST['cmd']);
Jetzt kannst du mit $buttonID Vor- und Nachname des Mitarbeiters ansprechen:
$vorname=$_POST['vorname'][$buttonID];
$nachname=$_POST['nachname'][$buttonID];
Ein kleines Beispiel:
<?php
//error_reporting(E_ALL);
//ini_set('display_errors','On');
mysql_connect("localhost","guenni","guenni");
mysql_select_db("test");
/*
* Eine Ausgabe eines POST-Arrays kann immer hilfreich sein.
* Dort sieht man, dass nur der angeklickte Submit-Button gesendet wurde und
* sein Index zu einem Datensatz passt.
*/
//if(isset($_POST['cmd'])){
// echo "<pre>";
// print_r($_POST);
// echo "</pre>";
//}
/*
* Wenn ein Button gesendet wurde . . .
*/
if(isset($_POST['cmd'])){
/*
* . . . wird mit der Funktion key der Schlüssel des Arrays ausgelesen.
*/
$buttonID=key($_POST['cmd']);
/*
* Mit diesem Schlüssel kann man jetzt den Mitarbeiter ansprechen, der zu
* diesem Button im Formular gehört bzw. den man eintragen will.
*/
$vorname=$_POST['vorname'][$buttonID];
$nachname=$_POST['nachname'][$buttonID];
echo "<p>Es wurde Button mit der ID $buttonID gedrückt</p>";
echo "<p>Mitarbeiter: $nachname, $vorname</p>";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Auswahl mit Button</title>
</head>
<body>
<?php
/*
* Tabelle abfragen
*/
$result=mysql_query("select * from tabelle2 order by Nachname");
?>
<form action="" method="post">
<table>
<?php
/*
* Jeder Datensatz wird nun in einer Tabellenreihe ausgegeben. Die Namen der Textfelder sowie
* der Name des Submitbuttons werden als Array definiert, mit der ID des Datensatzes als Index.
*/
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<tr>";
echo "<td><input type=\"text\" name=\"vorname[$row[id]]\" value=\"$row[Vorname]\"></td>";
echo "<td><input type=\"text\" name=\"nachname[$row[id]]\" value=\"$row[Nachname]\"></td>";
echo "<td><input type=\"submit\" name=\"cmd[$row[id]]\" value=\"Eintragen\"></td>";
echo "</tr>";
}
?>
</table>
</form>
</body>
</html>
Gruß
Günni