URL: https://www.overclockers.at/coding-stuff/geloest_heavy_php_variablen_problem_105015/page_1 - zur Vollversion wechseln!
moin ich bins mal wieder, erstmal allen ein frohes neues jahr 
zum Prob: ich schicke von einem Formular aus (post vars) eine bestimmte anzahl an variablen die so ausschauen:
img1
img2
usw.
so dies kann sich bis in den 3 stelligen bereich fortführen also z.b. img123
jetzt möcht ich in dem zieldokment die inhalte dieser variablen (dessen letzte variablenzahl ich kenne z.b. wie oben 123) in eine Datei schreiben, zeile für zeile.
kann mir wer sagen wie ich das anstellen soll, ich dachte an ne for schleife, aber wie bekomme ich das so hin das der die inhalte der variablen erfasst ? in meiner datei stehen dann bloss die variablennamen.
thx !
Gerrit
Mit $$ kann man den Wert eines Variablennamen herausbekommen (ich glaub zumindest, dass das PHP war, was ich hier verzapfe und hoffe, dass ich es nicht mit was anderem verwechsle).
eval() wär auch eine lösung
thx schonma aber, ich check das nich... ich habs so:
die übergebenen Variablen sind $img1 bis max $img255
wie soll ich die prüfen das sie gesetzt sind ?
Code: PHPfor($i = 1; $i <= 255; $i++){ ??? < hier müsste ne funktion rein wo ich abfragen kann welche der 255 möglichen variablen gesetzt sind > if(isset(???)){ do_something(); } }
kleine zwischenfrage: wie setzt du den inhalt der variablen?
Anstatt die Variablen img1, img2, ... zu benennen, kannst du sie img[1], img[2], ... nennen.
Dann kannst du sie ganz leicht im Skript indizieren (werden von php als Array "geparst").
Also mit
Code: PHPfor ($i=0; $i<count($img); $i++) { do_something_with($img[$i]); }
also entweder im formular als varname nur img[] verwenden, dann hast du automatisch ein indiziertes array von 0 bis irgendwas
da kannst dann entweder count nehmen um die anzahl zu haben oder einfach isset($img[$i])
oder wenn das nicht geht, wenn es max. 255 sein können, dann einfach alle durchlaufen und mit isset() überprüfen.
MIK
warum machst du das nicht mit einer array? 
ich versteh aber generell dein vorhaben nicht ganz
@nat
Zitatkleine zwischenfrage: wie setzt du den inhalt der variablen?
Code: PHPecho("<form method=\"post\" action=\"save.php\">\n\n"); if(isset($bildanzahl)){ for($i = 1; $i <= $bildanzahl; $i++){ echo("\n<b>Bild Nr.: $i</b><br>Bildname:"); echo("<input type=\"text\" name=\"img$i\" size=\"12\"><br>\n"); } echo("\n<input type=\"hidden\" name=\"bildanzahl\" value=\"$bildanzahl\">\n"); } echo("\n</form>");

mein prob is halt nur ich weiss nicht wie ich die variablen prüfen soll (ausser per hand)
ich kann ja sagen:
Code: PHPif(isset($img1)){ do(); } if(isset($img2)){ do(); } if(isset($img3)){ do(); } ...
Code: PHP$img = 'img'; for($i = 1; $i <= 255; $i++){ if(isset($img$i)){ do(); } }
Wenn du Fragen stellst, solltest du vielleicht auch die Antworten durchlesen.
wie gue schon festgestellt hat, hast du wohl ein paar verständnisprobleme, hier also ein paar der varianten die du verwenden könntest:
das lässt sich beliebig fortsetzen...Code: PHPfor($i = 1; $i <= 255; $i++) { //variante1: $varname='img'.$i; if(isset($$varname)) { do(); } //variante2: if(isset($_POST['img'.$i])) { do(); } //variante3: $varname='img'.$i; if(eval("return isset($varname)")) { do(); } }
ich versteh zwar noch immer die logik in deinem code nicht aber das sollt funktionieren:
Code: PHPfor($i = 1; $i <= 255; $i++) { eval("\$bIsSet = isset(\$img$i);"); if($bIsSet) do(); }

man sollte anmerken, dass die lösung über das autoglobale array $_POST (variante2) die schnellste und sicherste variante ist 
sorry für meine unverständniss
bin halt verplant, ich checks ma und sag schonmal fettes danke an alle helfer
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026