gelöst: heavy php variablen Problem
bBU.CyTrobIc 23.01.2004 - 14:43 886 15
bBU.CyTrobIc
#include "billrulz.h"
|
moin ich bins mal wieder, erstmal allen ein frohes neues jahr ![:)](/images/smilies/smile.gif) 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
Bearbeitet von bBU.CyTrobIc am 26.01.2004, 17:07
|
Ringding
Pilot
|
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).
|
mat
AdministratorLegends never die
|
eval() wär auch eine lösung
|
bBU.CyTrobIc
#include "billrulz.h"
|
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 ? for($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();
}
}
ich find nix ...
|
mat
AdministratorLegends never die
|
kleine zwischenfrage: wie setzt du den inhalt der variablen?
|
gue
Addicted
|
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 for ($i=0; $i<count($img); $i++) {
do_something_with($img[$i]);
}
|
kleinerChemiker
Here to stay
|
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
|
Phobos
✝
|
warum machst du das nicht mit einer array? ![:confused:](/images/smilies/confused.gif) ich versteh aber generell dein vorhaben nicht ganz
|
bBU.CyTrobIc
#include "billrulz.h"
|
@nat kleine zwischenfrage: wie setzt du den inhalt der variablen? Ausschnitt zum erzeugen der Anzeige der Auswahl der Bilder ($bildanzahl) wird vorher festgelegt: echo("<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>");
dann hab ich halt die variablen [img$i] halt wie hoch $bildanzahl gesetz wurde... nur ich bekomm sie in der save.php nicht ausgelesen (ausser per hand mit isset(1..255) weil ja 255 maximal sind. das wären aber 255 per hand geschriebene isset abfragen (wollt ich vermeiden)
Bearbeitet von bBU.CyTrobIc am 23.01.2004, 17:47
|
bBU.CyTrobIc
#include "billrulz.h"
|
mein prob is halt nur ich weiss nicht wie ich die variablen prüfen soll (ausser per hand) ich kann ja sagen: if(isset($img1)){ do(); }
if(isset($img2)){ do(); }
if(isset($img3)){ do(); }
...
aber ich kann nicht sagen $img = 'img';
for($i = 1; $i <= 255; $i++){
if(isset($img$i)){ do(); }
}
das ergibt nen error... also wie kann ich die variablen prüfen ?
|
gue
Addicted
|
Wenn du Fragen stellst, solltest du vielleicht auch die Antworten durchlesen.
|
watchout
Legendundead
|
wie gue schon festgestellt hat, hast du wohl ein paar verständnisprobleme, hier also ein paar der varianten die du verwenden könntest: for($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();
}
}
das lässt sich beliebig fortsetzen...
Bearbeitet von watchout am 23.01.2004, 18:49 (POST vs. GET)
|
mat
AdministratorLegends never die
|
ich versteh zwar noch immer die logik in deinem code nicht aber das sollt funktionieren: for($i = 1; $i <= 255; $i++)
{
eval("\$bIsSet = isset(\$img$i);");
if($bIsSet)
do();
}
edit: mist, 0wned by watchout
|
watchout
Legendundead
|
man sollte anmerken, dass die lösung über das autoglobale array $_POST (variante2) die schnellste und sicherste variante ist
|
bBU.CyTrobIc
#include "billrulz.h"
|
sorry für meine unverständniss ![:)](/images/smilies/smile.gif) bin halt verplant, ich checks ma und sag schonmal fettes danke an alle helfer
|