dyn. variablen erzeugen aus db

  • Themenstarter Themenstarter xMoose
  • Beginndatum Beginndatum
X

xMoose

hallo

ich bin newbie in php und habe mich durch alle diese schleifen-varianten völlig durcheinander gebracht. ich möchte eigentlich 20 variablen generieren, die den inhalt aus einer datenbank auslesen, diese wiederum möchte ich in formularfeldern ausgeben. ich bin zwar soweit gekommen, dass ich das db-resultat in ein array speichere, jetzt möchte ich aber nicht jede variabel ausfüllen, sondern nur die, welche den selben positionswert der tabelle besitzt
ungefähr so:

$file1 = xxx.jpg
$file2 = yyy.jpg
$file3 = "soll leer sein "
$file4 = zzz.jpg
...


in der db habe ich es folgendermassen:

fileID   filename   feldnr

1      xxx.jpg     1
2      yyy.jpg     2
3      xxx.jpg     4


momentan bringe ich aber nur das zu stande:

file1 = xxx.jpg
file2 = yyy.jpg
file3 = zzz.jpg
file4 =
...

meine abfrage dafür lautet:

for($i=1; $i<=20; $i++)
{
$liste = mysql_fetch_array($res_getfiles);

$dateiname="file".$i;
$$dateiname= $liste["filename"];
}

aber wie kriege nun den richtigen filenamen in die richtige variable?

danke im voraus!
lukas
 
Original geschrieben von xMoose
meine abfrage dafür lautet:

for($i=1; $i<=20; $i++)
{
$liste = mysql_fetch_array($res_getfiles);

$dateiname="file".$i;
$$dateiname= $liste["filename"];
}
Das schaut aber ein wenig komisch aus ;o)

Versuchs mal so:

PHP:
while($daten = mysql_fetch_array($res_getfiles)) {
    if($daten['filename'] != "") {
        echo $daten['filename'];
    }
}
Übersetzt heisst das soviel wie: Solange wie das Recordset ($res_getfiles) Daten liefert, führe die Schleife weiter aus und speichere die Daten aus dem Recordset in einem Array (mysql_fetch_array). Wenn die Spalte "filename" nicht leer ist, dann soll sie ausgegeben werden.
 
das ist leider nicht ganz das, was ich möchte. ich benötige schlussendlich variablen im stil von $file1 bis $file20. in der datenbank habe ich aber nur inhalt abgespeichert für einige dieser variablen. d.h. mit der spalte "feldnr" möchte ich die entsprechende variable füllen.

nehmen wir an, dass ich nur einen eintrag in der datenbank habe und davon eine von diesen 20 variablen füllen will, mit folgenden werten:
filename = "xyz.jpg"
feldnr = 5

dann möchte ich als endergebnis folgendes haben:
$file1 = ''
$file2 = ''
$file3 = ''
$file4 = ''
$file5 = 'xyz.jpg'
$file6 = ''
... usw.


übersetzt würde dann das eigentlich heissen:
"überprüfe 20 mal, ob der jetzige durchlauf mit der datenbankfeld 'feldnr' übereinstimmt - wenn ja, fülle wert von feld 'filename' ein, ansonsten erstelle die variable mit leerem inhalt"

ich hoffe das ist nun etwas verständlicher.
thanks!
 
Warum auch immer Du das so haben möchtest:
PHP:
$filename = "xyz.jpg";
$feldnr = 5 
$varname = 'feld' . $feldnr;
$$varname = $filename;
Der obere Code erzeugt Dir eine Variable namens $feld5 und dem Inhalt 'xyz.jpg'.

Übrigens: Satzanfänge und Substantive werden groß geschrieben!

snuu
 
Nach einigen Tagen habe ich selbst eine Lösung gefunden. Wahrscheinlich nicht die schnellste, aber funktionieren tut's!


PHP:
$files_array = array_fill(1, 20, '');


for($i=0; $i<$num_getfiles; $i++)
{
$res = mysql_result($res_getfiles, $i, "feldnr");
$res2 = mysql_result($res_getfiles, $i, "filename");

$files_array[$res] = $res2; 
}


$groesse_array = count($files_array);

for($i=0; $i<=$groesse_array; $i++)
{
$dateiname="file".$i;
$$dateiname= $files[$i];
}
 
Zurück