gelöst: heavy php variablen Problem

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/geloest_heavy_php_variablen_problem_105015/page_1 - zur Vollversion wechseln!


bBU.CyTrobIc schrieb am 23.01.2004 um 14:43

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


Ringding schrieb am 23.01.2004 um 15:03

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 schrieb am 23.01.2004 um 15:42

eval() wär auch eine lösung


bBU.CyTrobIc schrieb am 23.01.2004 um 16:04

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: PHP
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 schrieb am 23.01.2004 um 16:09

kleine zwischenfrage: wie setzt du den inhalt der variablen?


gue schrieb am 23.01.2004 um 16:51

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: PHP
for ($i=0; $i<count($img); $i++) {
  do_something_with($img[$i]);
}


kleinerChemiker schrieb am 23.01.2004 um 17:16

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 schrieb am 23.01.2004 um 17:18

warum machst du das nicht mit einer array? :confused:

ich versteh aber generell dein vorhaben nicht ganz


bBU.CyTrobIc schrieb am 23.01.2004 um 17:44

@nat

Zitat
kleine zwischenfrage: wie setzt du den inhalt der variablen?

Ausschnitt zum erzeugen der Anzeige der Auswahl der Bilder ($bildanzahl) wird vorher festgelegt:

Code: PHP
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) :)


bBU.CyTrobIc schrieb am 23.01.2004 um 18:04

mein prob is halt nur ich weiss nicht wie ich die variablen prüfen soll (ausser per hand)

ich kann ja sagen:

Code: PHP
if(isset($img1)){ do(); }
if(isset($img2)){ do(); }
if(isset($img3)){ do(); }
...

aber ich kann nicht sagen

Code: PHP
$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 schrieb am 23.01.2004 um 18:38

Wenn du Fragen stellst, solltest du vielleicht auch die Antworten durchlesen.


watchout schrieb am 23.01.2004 um 18:47

wie gue schon festgestellt hat, hast du wohl ein paar verständnisprobleme, hier also ein paar der varianten die du verwenden könntest:

Code: PHP
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...


mat schrieb am 23.01.2004 um 18:52

ich versteh zwar noch immer die logik in deinem code nicht aber das sollt funktionieren:

Code: PHP
for($i = 1; $i <= 255; $i++)
{

  eval("\$bIsSet = isset(\$img$i);");

  if($bIsSet)
     do();
}

edit: mist, 0wned by watchout :D


watchout schrieb am 23.01.2004 um 18:54

man sollte anmerken, dass die lösung über das autoglobale array $_POST (variante2) die schnellste und sicherste variante ist ;)


bBU.CyTrobIc schrieb am 23.01.2004 um 19:02

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