PHP formular
Jan
- php
Nochmal Hallo,
folgendes, ich habe ein Liste mit Namen die ich mir aus einer Datenbank ausgebe nun möchte ich hinter JEDEM Namen ein ganz normales Text Formularfeld, so weit so gut aber wie bekomme ich es jetzt hin das ich mit EINEM Submitbutton die Werte aus den einzelenen Feldern zu den Passenden Namen in die Datenbank eintragen kann? Ich stehe im Moment echt auffem Schlauch und würde mich über Hilfe freuen. Lieben Gruß, Jan.
hi,
ich habe ein Liste mit Namen die ich mir aus einer Datenbank ausgebe nun möchte ich hinter JEDEM Namen ein ganz normales Text Formularfeld, so weit so gut aber wie bekomme ich es jetzt hin das ich mit EINEM Submitbutton die Werte aus den einzelenen Feldern zu den Passenden Namen in die Datenbank eintragen kann?
alle felder in EIN formular, denn NUR SO kannst du sie auch mit NUR EINEM button abschicken.
UND DANN sorgst du dafür, dass die feldnamen eine zuordnung ZUM DATENSATZ ermöglichen.
Ich stehe im Moment echt auffem Schlauch
ach SO HEISST deine SHIFT-TASTE!!!1
gruß,
wahsaga
...also es schaut im Moment so aus: $res = mysql_query ("SELECT UserID, UserName, tore FROM users ORDER BY tore DESC"); $num = mysql_num_rows($res); echo mysql_error(); echo "<table width="80%" border="0" bgcolor="gainsboro">"; echo"<tr>"; echo"<td width="20%">Benutzer Name</td>"; echo"<td width="20%">Tore</td>"; echo"<td width="20%">Tore eintragen:</td>"; echo"</tr>"; echo"</table>"; for ($i=0; $i<$num; $i++) { $ui = mysql_result($res, $i, "UserID"); $un = mysql_result($res, $i, "UserName"); $to = mysql_result($res, $i, "tore");
echo" <form action="tabelleneintrag_inc.php" method="get">"; echo "<table width="80%" border="0" bgcolor="DDB62D">"; echo"<tr>"; echo"<td width="20%">$un</td>";
echo"<td width="20%">$to</td>";
echo"<td width="20%"><input name="tore" type="text"></td>"; echo"</tr>";
echo"</table>"; echo"<input name="submit" type="submit" value="Absenden">"; echo"</form>";
...aber wenn ich es so mache habe ich schon das Problem das ich nicht nur einen Submit Button habe obwohl ich ja alles in einem Formular habe, oder nicht? ... und wie kann ich dann die einzelnen Felder der jeweiligen Person zuordnen?
hi,
...also es schaut im Moment so aus: [...] ...aber wenn ich es so mache habe ich schon das Problem das ich nicht nur einen Submit Button habe obwohl ich ja alles in einem Formular habe, oder nicht?
nein, hast du nicht - du erzeugst doch in jedem schleifendurchlauf ein neues formular.
eröffne das formular vor der schleife, gebe in der schleife die nötigen felder aus, schließe das formular nach der schleife wieder.
... und wie kann ich dann die einzelnen Felder der jeweiligen Person zuordnen?
z.b. in dem du die userID - die ja sicherlich eindeutig ist - in den feldnamen mit einbaust (sofern deren aufbau das erlaubt).
anschließend, beim einlesen der übergebenen werte, schaust du dann nach welcher parameter zu welcher userID gehört - in dem du dich am feldnamen orientierst.
gruß, wahsaga
Hallo Jan,
[...] echo "<table width="80%" border="0" bgcolor="gainsboro">"; echo"<tr>"; echo"<td width="20%">Benutzer Name</td>"; echo"<td width="20%">Tore</td>"; echo"<td width="20%">Tore eintragen:</td>"; echo"</tr>"; echo"</table>";
Wie wahsaga schon gesagt hat, darfst du nur ein einziges Formular für alle Felder verwenden. Das musst du natürlich vor dem Beginn der Schleife öffnen.
echo '<form action="tabelleneintrag_inc.php" method="POST">';
Ich würde dir auch empfehlen hier als Methode nicht GET sondern POST zu verwenden. Zwar macht es theoretisch keinen großen Unterschied, allerdings Begrenzen fast alle Browser die Menge an Daten, die über GET übertragen werden können. Außerdem fragst du ja nicht irgendwelche Daten ab, sondern veränderst gespeicherte Daten - ein weiteres Argument für POST.
for ($i=0; $i<$num; $i++) { $ui = mysql_result($res, $i, "UserID"); $un = mysql_result($res, $i, "UserName"); $to = mysql_result($res, $i, "tore");
Diese Zeile muss dann natürlich weg:
echo" <form action="tabelleneintrag_inc.php" method="get">";
echo "<table width="80%" border="0" bgcolor="DDB62D">"; echo"<tr>"; echo"<td width="20%">$un</td>";
echo"<td width="20%">$to</td>";
Das nächste Problem: Deine Formularfelder haben alle den gleichen Namen, das geht so natürlich nicht. Du brauchst für das Formularfeld zu jedem Spieler einen individuellen Namen an. Wie wahsaga schon gesagt hat, ist hier eine Kombination mit der UserID wohl am geeignetsten.
Unter PHP bietet sich die Form tore[$ui] an. Dann erhälst du nämlich hinterher im Formular ein Array, sodass du die Daten gut weiterverarbeiten kannst. Wenn du POST als Übertragungsmethode verwendest, kannst du dann auf den Inhalt der einzelnen Felder mit $_POST['tore'][$ui]
zugreifen.
echo "<td width='20%'><input name='tore[$ui]' type='text'></td>";
echo"<td width="20%"><input name="tore" type="text"></td>"; echo"</tr>";
echo"</table>";
Hier muss der Schleifenrumpf beendet werden:
}
echo"<input name="submit" type="submit" value="Absenden">"; echo"</form>";
Ich hoffe, das hilft dir weiter.
Schöne Grüße,
Johannes
Ich hoffe, das hilft dir weiter.
Schöne Grüße,
Johannes
Danke das hat mir auf jeden fall schon weitergeholfen nur wie muss denn dann jetzt die sql-query aussehen $eintrag = "update users SET tore='$tore' WHERE UserID='".$ui."'"; $eintrag = mysql_query($eintrag); so wird das ja nix, wie kann ich denn jetzt die einzelnen $ui und $tore aus dem array bekommen und in die sql-query "einbauen"...?
Hello,
wichtig beim Rückspeichern von ganzen Grids ist, dass man wirklich nur die Datensätze überarbeiten lässt, die dem Bearbeiter auch zur Bearbeitung ausgeliefert wurden.
Außerdem muss man natürlich auch den konkurrierneden Betrieb berücksichtigen.
Das Update in der Datenbank geht dann natürlich nur in einer Schleife stattfinden.
Wenn man im Datensatz einen Update-Zähler mitführt, kann man damit auch den konkurrierenden Betrieb abfangen. Der Zähler wird dann _in_der_Session_ beim Holen der Datensätze gespeichert und beim wieder wegschreiben mit ins Wherestatement aufgenommen und beim Schreiben um eins erhöht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
wichtig beim Rückspeichern von ganzen Grids ist, dass man wirklich nur die Datensätze überarbeiten lässt, die dem Bearbeiter auch zur Bearbeitung ausgeliefert wurden.
Außerdem muss man natürlich auch den konkurrierneden Betrieb berücksichtigen.
Das Update in der Datenbank geht dann natürlich nur in einer Schleife stattfinden.
Wenn man im Datensatz einen Update-Zähler mitführt, kann man damit auch den konkurrierenden Betrieb abfangen. Der Zähler wird dann _in_der_Session_ beim Holen der Datensätze gespeichert und beim wieder wegschreiben mit ins Wherestatement aufgenommen und beim Schreiben um eins erhöht.Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Sorry, aber das hilft mir nicht weiter... Trotzdem danke fürs posting...
Hello,
Sorry, aber das hilft mir nicht weiter... Trotzdem danke fürs posting...
Was ist denn unklar?
Wie man ein Grid baut, oder wie man die Elementnamen in HTML generieren sollte, damit es leicht geht? Wenn Du hier im Forums-Archiv unter dem Begriff "Grid" mal suchst, findest Du sogar einen Lösungsvorschlag von mir.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Nochmal Hallo,
jetzt bin ich schonmal soweit das es wie folgt aussieht:
while (list($ui,$tore)=each($_GET["tore"]))
{
$eintrag = "update user set tore = tore+'$tore' where UserId = '".$ui."'";
$eintrag = mysql_query($eintrag);
}
...wenn ich $ui und $tore mit echo ausgeben so sind diese wohl richtig nur wird "noch" :-) nichts in die Datenbank eingetragen bzw. geupdatet...
Nochmal Hallo,
jetzt bin ich schonmal soweit das es wie folgt aussieht:
while (list($ui,$tore)=each($_GET["tore"]))
{
$eintrag = "update user set tore = tore+'$tore' where UserId = '".$ui."'";
$eintrag = mysql_query($eintrag);
}
...wenn ich $ui und $tore mit echo ausgeben so sind diese wohl richtig nur wird "noch" :-) nichts in die Datenbank eingetragen bzw. geupdatet...
So liebe Leute ich habs dann doch geschafft und manchmal ist der Teufel ein Eichhörnchen die Taballe user heißt users... Danke für eure Hilfe besonders die von Johannes Zeller... Also schönen Tag noch...