Variablen in Schleife definieren
andreas
- php
Moin, Moin!
Also, ich hätte da mal wieder eine ellenlange Abfrage, über 50 Felder. Da ich jeden einzelnen Wert in einer Variable, gleich dem Feldnamen brauche, hatte ich da an eine kleine Schleife gedacht!
Aber das dumme an der Sache, ich bekomme keine 50 verschiedenen Variablen, sondern immer nur die letzte?!
Was ist daran falsch:
$query = "SELECT * FROM objekte WHERE ID = '$ID'";
$res = mysql_query($query, $link);
$objekt=mysql_fetch_array($res);
$nf = mysql_num_fields($res);
$i=5;
while($i<$nf-6){
$Feldname = mysql_field_name($res,$i);
$Feldname = $objekt[$i];
$i++;
}
In etwa denselben Code benutze ich erfolgreich für einen per Schleife zusammengesetzten Query-String. Daher verstehe ich nicht, warum das hier nicht gehen will!
Also wie gesagt, da sind 50 Feldr drin, z.B. Name, Vorname...
und die sollen am Ende alle da stehen:
$Vorname=xy;
$Name=blabla;
....
Was mache ich falsch?
wenn ich in die Schleife schreibe echo "$Feldname - $objekt[$i]<br>";
erhalte ich
xy - xy
blabla - blabla
....
Wäre sehr Dankbar wenn mir jemand helfen könnte!
Grüsse
Andreas
while($i<$nf-6){
$Feldname = mysql_field_name($res,$i);
$Feldname = $objekt[$i];
$i++;
}
In etwa denselben Code benutze ich erfolgreich für einen per Schleife zusammengesetzten Query-String. Daher verstehe ich nicht, warum das hier nicht gehen will!
Also wie gesagt, da sind 50 Feldr drin, z.B. Name, Vorname...
und die sollen am Ende alle da stehen:
$Vorname=xy;
$Name=blabla;
....
nun im grunde machst du nix falsch das du das letzte bekomsmt ist schon richtig.. du musst die ausgabe eben in der schleife machen oder du definierst eine neue variable in der alles formatiert abgespeichert wird, falls du die schleife unbedingt vor dem html code laufen lassen musst...
hoffe das hat geholfen
Gruß David
Hi!
nun im grunde machst du nix falsch das du das letzte bekomsmt ist schon richtig.. du musst die ausgabe eben in der schleife machen oder du definierst eine neue variable in der alles formatiert abgespeichert wird, falls du die schleife unbedingt vor dem html code laufen lassen musst...
Aber wie mache ich das???
Ich will nichts anzeigen lassen, nur die Werte aus der DB in die Formularfelder als Values eintragen, der Art
<input type="text" name="Strasse value="<? echo "$Strasse" ?>">
Dafür brauche ich die Variablen, in diesem Fall $Strasse. Nur wie komme ich jetzt da ran? Das muß doch gehen, denn den Namen "Strasse" habe ich ja oben schon!
Grüsse
Andreas
Moin, Moin!
Also, ich hätte da mal wieder eine ellenlange Abfrage, über 50 Felder. Da ich jeden einzelnen Wert in einer Variable, gleich dem Feldnamen brauche, hatte ich da an eine kleine Schleife gedacht!
Aber das dumme an der Sache, ich bekomme keine 50 verschiedenen Variablen, sondern immer nur die letzte?!
Was ist daran falsch:
$query = "SELECT * FROM objekte WHERE ID = '$ID'";
$res = mysql_query($query, $link);
$objekt=mysql_fetch_array($res);
$nf = mysql_num_fields($res);
while(list($key,$val) = each($objekt){
${$key}=$val;
}
echo $feldname;
UNTESTED
lg
Ludwig
Hi!
$query = "SELECT * FROM objekte WHERE ID = '$ID'";
$res = mysql_query($query, $link);
$objekt=mysql_fetch_array($res);
$nf = mysql_num_fields($res);
while(list($key,$val) = each($objekt){
${$key}=$val;
}
echo $feldname;
Ich denke hier liegt irgendwo die Lösung, nur verstehe ich es leider nicht ganz.
Wie schon geschrieben bräuchte ich jede einzelne Variable für je ein Formularfeld als Value.
also ich brauche was wo für alle Felder eine Zeile der Art
$strasse = "blabla";
eingefügt wird.
Wie soll das denn funktionieren? in $objekt steht ja immer nur der Wert und ich brauche ja noch den Namen! Woher weiß die obige Schleife was key und was val ist?
Andreas
salute andreas,
nun,
Was ist daran falsch:
$query = "SELECT * FROM objekte WHERE ID = '$ID'";
$res = mysql_query($query, $link);
$objekt=mysql_fetch_array($res);
$nf = mysql_num_fields($res);
$i=5;
while($i<$nf-6){
$Feldname = mysql_field_name($res,$i);
du gibst hier der variable '$Feldname' einen wert.....
$Feldname = $objekt[$i];
...den du hier mit einem anderen wert wieder überschreibst (redefinition)....
$i++;
...und das wiederholst du i-mal.
}
In etwa denselben Code benutze ich erfolgreich für einen per Schleife zusammengesetzten Query-String. Daher verstehe ich nicht, warum das hier nicht gehen will!
Also wie gesagt, da sind 50 Feldr drin, z.B. Name, Vorname...
und die sollen am Ende alle da stehen:
$Vorname=xy;
$Name=blabla;
....
wie wäre es mit:
$Feldname .= mysql_field_name($res,$i);
$Feldname .= $objekt[$i];
$Feldname .= "<br>";
.
.
.
echo $Feldname;
?
oder mit einem array (wahrscheinlich die eleganteste lösung)?
Was mache ich falsch?
wenn ich in die Schleife schreibe echo "$Feldname - $objekt[$i]<br>";
erhalte ich
xy - xy
blabla - blabla
....
weil du der variable '$Feldname' zuletzt den wert 'objekt[$i]' zugewiesen hast.
gruss -> jo
Hi!
wie wäre es mit:
$Feldname .= mysql_field_name($res,$i);
$Feldname .= $objekt[$i];
$Feldname .= "<br>";
.
.
.
echo $Feldname;
?
nun ja, dann habe ich eine schöne Liste, die mir aber nichts bringt, da ich nur die Variablen für das Script haben will, ich will nichts anzeigen lassen, nur die Werte aus der DB in die Formularfelder als Values eintragen, der Art
<input type="text" name="Strasse value="<? echo "$Strasse" ?>">
Dafür brauche ich die Variablen.
oder mit einem array (wahrscheinlich die eleganteste lösung)?
Und wie soll das gehen?
Grüsse
Andreas
hey andreas,
erläuter mir doch bitte einmal was in dem browser-fenster passieren soll bzw. das ziel des scriptings
gruss -> jo
Hi!
Leider kann ich noch nicht direkt linken, also das soll ein Formular sein, in dem Man einen MySQL Datensatz bearbeiten kann. D.h. es ist eine php Datei, am Anfang der Datei wähle ich den Datensatz aus, und dann möchte ich sämtliche Daten aus der Datenbank in die entspechenden Felder als Value eintagen, so dass man diese bearbeiten und speichern kann.
Problem ist, dass ich dieselbe Seite auch dazu verwende, einen Datensatz anzulegen, und wegen den Fehlerroutinen kann ich die Values der einzelnen Felder nicht als z.B.
value="<? echo "$objekt[strasse]"?>"
definieren. Das wäre ja einfach, aber das geht gerade nicht, ich brauche
value="<? echo "$strasse"?>".
Wie gesagt, die Werte aus der DB sollen in den Formularfeldern angezeigt werden.
Grüsse
Andreas