Einzelne Zeile aus while Schleife auslesen

mikrobi

Grünschnabel
Hallo alles zusammen,

ich sitze schon seit Stunden über folgendem Problem:

Ich habe eine Tabelle, in der sind alle userdaten (ID, Name, Vorname, usw. enthalten)

Die Ausgabe der gewünschten User erzeuge ich mit einer while-schleife.

while($row = mysql_fetch_assoc($result))

Ich habe in der Ausgabe einen Button, der auf ein weiteres Script verweist. Wenn ich diesen klicke, soll die Seite des bestimmten Users angezeit werden, wo ich diesen dann weiter bearbeiten kann.

Mein Problem ist, das in der Session immer nur die user-ID des zuletzt angezeigten users enthalten ist. Ich brauche aber die User-ID der aktuellen zeile, damit ich auch den richtigen user zum bearbeiten angezeigt bekomme...

Hier der Code der Ausgabe:

PHP:
 $result = mysql_query($sql) OR die(mysql_error()); 
while($row = mysql_fetch_assoc($result)) {
echo "<table border=1 cellpadding=0 cellspacing=2 style=border-collapse: collapse bordercolor=#111111 width=600 id=AutoNumber1>\n";
echo " <tr>\n";
echo " <td align=left valign=top>\n";
print "<b></br><font size=2> Name: ".$row['name']."</font></b></br>";
print "<b></br><font size=2> Spitzname: ".$row['nick']."</font></b></br>";
print "<b></br><font size=2> Geboren: ".$row['geburtsjahr']."</font></b></br>";
%4$s SESSION['USERID'] = $row['ID']; 
echo "<input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
echo "</br></br><center><input type=submit name=submit value='User anschauen'/></center>";
echo "</br>";
echo " </tr>\n";
echo "</table>\n";
}
 
Zuletzt bearbeitet:
Übergib die id lieber in der URL als Parameter oder mittels eines hidden Feld's.

Poste bitte mal das komplette Script.
 
Wenn ich versuche, das mit einem Hidden-Field zu lösen, komme ich leider zu dem gleichen ergebnis.
Ich weiß, das man das auch über die URL lösen könnte, aber die User-ID soll nicht in der URL sichtbar sein. damit fällt GET weg.

Im PHP-Manual steht:
mysql_fetch_array()
Falls zwei oder mehrere Spalten des Ergebnisses den gleichen Feldnamen haben, dann wird nur der Wert der letzten Spalte im Array unter diesem Feldnamen abgelegt.

Ich denke, genau das ist mein Problem. Ich weiß aber nicht, wie ich das sonst lösen könnte.

Hier das ganze script, wie gewünscht:

PHP:
 <? 
include "include/config.inc.php";
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
mysql_select_db(MYSQL_DATABASE);
echo "<form action=index.php?section=showuser method=post class=formular>";
echo "<table border=0 cellpadding=0 cellspacing=0 style=border-collapse: collapse bordercolor=#111111 width=100% id=AutoNumber1>\n";
echo " <tr>\n";
echo " </tr>\n";
echo "</table>\n";
$sql = "SELECT 
ID,
aktiv,
name,
name2,
nick,
geburtsjahr,
geschlecht
FROM
users 
WHERE Geschlecht = 'm' 
";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
echo "<table border=1 cellpadding=0 cellspacing=2 style=border-collapse: collapse bordercolor=#111111 width=600 id=AutoNumber1>\n";
echo " <tr>\n";
echo " <td align=left valign=top>\n";
print "<b></br><font size=2> Name: ".$row['name']."</font></b></br>";
print "<b></br><font size=2> Spitzname: ".$row['nick']."</font></b></br>";
print "<b></br><font size=2> Geboren: ".$row['geburtsjahr']."</font></b></br>";
SESSION['USERID'] = $row['ID']; 
echo "<input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
echo "</br></br><center><input type=submit name=submit value='User anschauen'/></center>";
echo "</td>\n";
echo "</br>";
echo " </tr>\n";
echo "</table>\n";
}
?>
im nächsten script erhalte ich folgendes, wenn ich mir den inhalt der Session und der Arrays anzeigen lasse:

Array ( [PHPSESSID] => 35e7e345dc34771d816b58baafb4ec3f [submit] => User anschauen ) Array ( [USERID] => 12305 )

Die User-ID ist aber immer 12305, da dies der lezte User in der Tabelle ist.
 
Zuletzt bearbeitet:
Du mußt praktisch jeden ausgegebenen Datensatz in ein eigenes Formular packen, sonst überschreibt ein Feld ein gleichnamiges Feld, welches vorher definiert wurde.
Übrigens, es gibt hier auch [ p h p]-Tags, die das Codelesen erleichtern.
 
Ich kann mich Timbonet nur anschließen, es gibt hier tatsächlich einen Syntaxhighlight, den man auch benutzten sollte.
Ich bitte darum dies bitte noch nachträglich abzuändern, da dieses Posting nachhaltig als Hilfe dienen kann.
Des weiteren wäre es wünschenswert den Status auf erledigt zu stellen, falls dies der Fall ist.
 
Okay. Danke für die schnellen Antworten. Ich dachte mir schon, das es kaum einen anderen Weg gibt. Könntet Ihr mir dann bitte noch sagen, wie ich das hinbekomme, ohne Seitenweise Code zu schreiben ? Die Anzahl der User ändert sich ja auch ständig, also muss es ja irgendeine Form von einer Schleife sein.

@Security: Ich werde natürlich sofort die Änderungen vornehmen. Danke Euch. Sobald mein Problem gelöst ist, Poste ich hier natürlich auch den Code, und Setze den Status auf erledigt.
 
Zuletzt bearbeitet:
Deine Codelänge verändert sich dadurch nur marginal, einfach den <form>-Tag in der while-Schleife öffnen bzw. schliessen.
 
@ Timbonet: kannst Du mir das anhand meines Codes zeigen ? Sorry, wenn ich mich zu blöd anstelle, aber ich habe keine Ahnung, wie ich das bewerkstelligen soll...
 
Also alle meine Versuche, das formular zu unterbrechen haben keinen Erfolg gebracht. Ich erhalte immer das gleiche Ergebnis. Ich weiß auch nicht so richtig, welchen Inhalt ich aus der Schleife rausnehmen soll, damit es funktioniert.

Kann mir denn keiner sagen, wo ich welchen Code einfügen muss ?

Bitte bitte !
 
Zurück