Archiv verlassen und diese Seite im Standarddesign anzeigen : schleife um variable variablenname
Andislack
12-10-2003, 00:14
Hi!
ich habe den ganzen abend daran gesessen um variable variablennamen so hinzubekommen, dass es in meiner anwendung funktioniert.
funktioniert jetzt auch endlich :)
das problem ist jetzt, dass z.b.
if($option_1 == "Artikelnr"){
option_1 17 verschiedene werte annehmen kann. da denke ich kann man wohl nix groß in eine schleife packen, weil es ja vergleiche mit strings sind.
ich habe aber auch 17 options jedesmal mit den gleichen 17 werten und da würde ich ganz gerne ne schleife drum machen, nur blick ich nicht mehr durch, wie nun man aus <b>variablen variablennamen</b> <b>variable variable variablennamen</b> :eek: macht!?
kann mir da jemand unter die arme greifen?
hier mal ne if und elseif aus meiner anwendung:(darum sollte eine for schleife um diese 17 mal durchlaufen zu lassen und die jeweilige zahl dann option_ und feld_ zuzuordnen).
if($option_1 == "Artikelnr"){
$i = 0;
while ($i <= $counter){
$varArtikelnr_[$i] = 'feld_1_'.$i;
$Artikelnr_[$i] = $$varArtikelnr_[$i];
$i++;
}
}
elseif($option_1 == "ArtikelnrAlt"){
$i = 0;
while ($i <= $counter){
$varArtikelnrAlt_[$i] = 'feld_1_'.$i;
$ArtikelnrAlt_[$i] = $$varArtikelnrAlt_[$i];
$i++;
}
}
vielen dank und gruss andi
Hmm.. habs mir jetzt dreimal durchgelesen, aber ich versteh immer noch nicht genau was du machen willst... vielleicht nochmal genauer erklären! ;)
Andislack
12-10-2003, 16:06
da hab ich mir fast gedacht :p
also ich möchte eine for-schleife um meine if / elseif bedingung machen, nur muss ich
die variablen
$option_1
und 'feld_1_'.$i
in der schleife hochzählen.
also so ungefähr:
for($x=1;$x<=$counter;$x++){
if($option_$x == "Artikelnr"){
$i = 0;
while ($i <= $counter){
$varArtikelnr_[$i] = 'feld_$x_'.$i;
$Artikelnr_[$i] = $$varArtikelnr_[$i];
$i++;
}
}
....usw
nur leider ist
'feld_1_'.$i ja schon zusammengesetzt aus zwei variablen.
bei option_1 sollte es wahrscheinlich durch eine definition nach der for-schleife gehen, also ungefähr so:
$varoption_[$x] = 'option_'.$x;
$option_[$x] = $$varoption_[$x];
aber hauptsächlich bekomme ich das 'feld_1_'.$i problem nicht in den griff
ich hoffe es ist jetzt klarer!?:) ansonsten nochmal fragen bitte.
gruss andi
ps: hab gerade festgestellt, dass das mit der $option_1 variable geht, so wie ich es geschrieben habe - ist mir während des schreibens der antwort aufgefallen :-) -
also gehts jetzt nur um 'feld_1_'.$i
Andislack
13-10-2003, 09:45
sodele, hab das nun auch selber hinbekommen und wie immer wars gar nicht so schwer wie eigentlich angenommen :p
for($x=1;$x<=$counter;$x++){
$varoption_[$x] = 'option_'.$x;
$option_[$x] = $$varoption_[$x];
if($option_[$x] == "Artikelnr"){
$i = 0;
while ($i <= $counter){
$varArtikelnr_[$i] = 'feld_'.$x.'_'.$i;
$Artikelnr_[$i] = $$varArtikelnr_[$i];
$i++;
}
}
elseif($option_[$x] == "ArtikelnrAlt"){
$i = 0;
while ($i <= $counter){
$varArtikelnrAlt_[$i] = 'feld_'.$x.'_'.$i;
$ArtikelnrAlt_[$i] = $$varArtikelnrAlt_[$i];
$i++;
}
}
.
.
.
.
trotzdem danke, dass du versucht hast mein problem zu verstehen :D
gruss andi
mehlvogel
13-10-2003, 11:48
Wenn $_option[$x] 17 verschieden WErte annehmen kann, wäre vielleicht eine switch .. case Anweisung übersichtlicher. (Nur so als Anmerkung ;))
Hallo,
für
$i = 0;
while ($i <= $counter){
// Code
$i++;
}
gibt es
for ($i = 0; $i <= $counter; $i++; ){
// Code
}
wie auch schon benutzt
Offe
Andislack
13-10-2003, 19:20
@mehlvogel
hatte auch überlegt es mit switch case zu machen, allerdings ist meine wahl dann doch anders ausgefallen. :)
@offe
was willst du mir jetzt damit sagen?
hab while benutzt um die einzelnen schleifen untereinander abzugrenzen.
gruss andi
Andislack
16-10-2003, 01:57
neue variante meines problems:
ich habe daten in einer db und die möchte ich in variablen variablen speichern.
mein ansatz:
$select_update = "SELECT * FROM t_csv_read WHERE random = '$random_session'";
$query_update = mysql_query($select_update);
$i = 0;
while($row = mysql_fetch_object($query_update)){
$var1 = "feld_1_".$i;
$$var1 = "$row->artikelnr";
$var2 = "feld_2_".$i;
$$var2 = "$row->beschreibung_de";
$i++;
}
echo ($feld_1_2."<br>");
echo ($feld_2_2);
nur leider funktioniert der nicht.
es fehlt ja auch die zähl-bedingung für das $i aber ich komm nicht dahinter wie ich das mit dem mysql_fetch_object verbinde.
mache ich es testweise so, dann geht es:
$counter = 10;
$i = 0;
while($i<=$counter){
$var1 = "name".$i;
$$var1 = "PHP";
$var2 = "vorname".$i;
$$var2 = "hans";
$i++;
}
echo ($name10."<br>");
echo ($vorname5);
kann mir da jemand weiterhelfen?
danke im voraus gruss andi
1. möglichkeit-Du versuchst es mit einem array:
statt
$var1 = "feld_1_".$i;
$$var1 = "$row->artikelnr";
$var2 = "feld_2_".$i;
$$var2 = "$row->beschreibung_de";
versuch mal folgendes:
$arr["$row->artikelnr"]="$row->beschreibung_de";
//bei artikennr=15
echo $arr["15"];
//oder
$arr[$i]["artikelnr"]=$row->artikelnr;
$arr[$i]["beschreibung_de"]=$row->beschreibung_de;
echo $arr[2]["artikelnr"];
wenn du tatsächlich im Schleifendurchlauf variaben erzeugen willst, dann in etwa so:
eval("feld_1_".$i."=".$row->artikelnr);
eval("feld_2_".$i."=".$row->beschreibung_de);
echo $feld_1_2;
Hallo!
Ich denke auch, dass es besser ist mit einem Mehrdimensionalen Array zu arbeiten, als wie Wild dynamisch Variablen zu generieren.
mehlvogel
16-10-2003, 12:07
und dann wäre die einfachste Schleife um die Daten in nen mehrdiemnsionalen Array zu packen:
$daten = array();
while ($bla = mysql_fetch_array()) $daten[] = $bla;
Mal eins am Rande: Warum benutzen hier fast alle mysql_fetch_objekt? Klar auf End ist es egal - aber ich finde es umständlich so ein ganzes Objekt zubehandeln anstatt nen einfaches Array...
Original geschrieben von mehlvogel
Mal eins am Rande: Warum benutzen hier fast alle mysql_fetch_objekt? Klar auf End ist es egal - aber ich finde es umständlich so ein ganzes Objekt zubehandeln anstatt nen einfaches Array...
Ich benutze das nicht explizit. ich habe seit etwa zwei jahren eine kleine objektklasse für den Datenbankzugriff.
daurch sieht's in meinem Quelletxt eigentlich immer so aus:
$sql="select * from pool p...where poolusertypid=".$ptyp;
$rs_arr=$db->select($sql);
if (!$rs_arr) {echo "keine Daten";}
else {
for ($i=0;$i<count($rs_arr);$i++) {
echo $rs_arr[$i]["poolname"]...;
}
}
meine funktion "select" liefert mir ein zweidimensionales array zurück, mit dem sich prima arbeiten läßt.
Den code der verhergehenden Posts habe ich nur kopiert und angepasst...:p
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.