zwei variablen zu einem namen + auslesen

MsvP@habdichliebhasi

Erfahrenes Mitglied
SO hi jungs, ich mal wieder nach langer zeit! =)

Und zwar habe ich ein doofes problem..

Ich habe ne while schleife gemacht die eine bestimmte anzahl an eingabefeldern (kann man vorher in nem drop down menü auswähöen) anzeigt.

der inhalt jedes feldes soll in eine eigene zeile der datenbank kommen.

Jetzt hatte ich bei der while schleife einfach den namen des textfeldes ´sagen wir mal

name=text genannt und damit auch jedes feld ne eigene bezeihnung hat .. ein
name='text$zahl' draus gemachtr, wähgrend $zahl++ am ende jedes schleifen durchgangs wird.


d.h. wenn ich drie textfelder habe hatte ich dann die variablen
text0
text1
text2


Jetzt aber mein problem. damit ich nun die daten jeweils in ne neue zeile speichern will,hab ich wieder ne while schleife gemacht.
soweit so gut... nur jetzt komme ich duimmerweise nicht an die variablen dran,
da ich der schleife ja sagen müsste, beim 1. durchlauf biste variable:
text0, dann text1 , dann text2 ... aber iuch weiß nicht wie ich das regeln könnte.

Gruß Micha!
 
Ich blick zwar durch den letzten Absatz nicht so ganz durch, aber hilft es dir eventuell weiter, das ganze vorher in ein Array zu schreiben und dann mit foreach auszuwerten ?
 
den befehl habe ich noch nie benutzt, aber hört sich interessant an!
wie müsste ich das machen?!

hier ist ma mein script:



if ($seite=='form')
{
$eingabe=0;
echo"

<form action='$PHP_SELF'>
<input type='hidden' name='seite' value='speichern'>
<input type='hidden' name='serial' value='$serial'>
<input type='hidden' name='seitenauswahl' value='$seitenauswahl'>
";

while($eingabe < $seitenauswahl)
{
$formein=$eingabe;
$eingabe=$eingabe+1;

echo"
<tr>
<td bgcolor='#5577AA' colspan='2'><font color='#FFFFFF'><b>Seite $eingabe</b></font></td>
</tr>
<tr>
<td align='middle'>Name:</td>
<td><input type='text' value='$comic[4]' name='comicname$formein'></td>
</tr>
<tr>
<td align='middle'>Vorschau:</td>
<td> <input type='text' value='$comic[2]' name='vorsch$formein'></td>
</tr>
<tr>
<td align='middle'>Bild:</td>
<td> <input type='text' value='$comic[3]' name='url$formein'></td>
</tr>";
}
echo"
<tr>
<td bgcolor='#5577AA' colspan='2'><font color='#5577AA'>-</font></td>
</tr>
<tr>
<td colspan=2'> <input type='submit' value='Speichern'></td>
</tr>
</table>
<br><br>
<td>
</tr>
</table>";
}


if ($seite=='speichern')
{
$cid_anfrage = mysql_query ("SELECT * FROM praktikant_comic ORDER BY comic_id DESC");
$cid = mysql_fetch_row($cid_anfrage);

$nummer=$cid[0]+1;

$eingabe=0;
while($eingabe < $seitenauswahl)
{



WIE MACHE ICH HIER NUN DEN SPEICHER VORGANG , BZW WIE KOMM ICH AN MEINE VARIABLEN?!




$eingabe=$eingabe+1;
}
}
 
Ohne jetzt deinen ganzen Code durchgehen zu können. Dir ist schon klar, dass man mitlerweile auf die superglobalen Arrays $_POST $_GET und $_SERVER zurückgreifen sollte ? Wenn dir das überhaupt nichts sagt, dann tummel dich mal in unserr PHP FAQ oder bei Google zum Thema register_globals = off.
 
Also erstmal... gab's da nich ne Netiquette, die besagt, dass man nicht die ganze Zeit großschreiben soll?

Nun ja... du kannst sogenannte "dynamische Variablen" benutzen... finde die Bezeichnung zwar nicht ganz passend, aber so nennt man das wohl in PHP. Das ganze geht dann so:

Da du die Variablen ohne Unterbrechung durchzählst, kannst du einfach wieder eine Variable hochzählen. Dann definierst du immer in einem Durchgang der Schleife den Namen der Variable. Z.B.: __ $act_varname = "text". $cnt; __. Danach kannst du innerhalb dieses Schleifendurchlaufs direkt auf den Inhalt der entsprecheden Variable zugreifen: __ echo $$act_varname; __.

Wenn ich deine Fragstellung richtig verstanden habe, sollte das die Lösung sein :).

Gruß,
matt
 
Ja sorry, wollte nur dne unterschied zum php script deutlich machen !=)

dann gibt der mir aber auch nur :

$text0
$text1
$text2


aus.. aber halt nicht den inhalt der variablen
sondern als string: "$text0$text1$text2"


hatte es jetzt so gemacht:


$speicher = "text". $eingabe;

echo"$$speicher";
 
Hi,

lass die Anführungszeichen beim 'echo' weg (die hatte ich nich geschrieben :)), dann funktioniert's:

Code:
$text0 = "text0 wird ausgegeben";
$eingabe = 0;
$speicher = "text". $eingabe;

echo $$speicher;

Gruß,
matt
 
oh vielen vielen dank!


musste zwar zum speichern die vaiable $$speicher nochmal in ne andree variable packen:

$fertig=$$speicher;

aber dann konnte ich ganz normale speicher routine machen, mit $fertig! =)
 
Hallo Jungs,

mal nen ganz anderer Gedanke:
Nenn die Felder doch name="text[]"
Dann hast du nen Array $text und kannst dann einmal auch durchzählen wie viele
da sind also count($text) und du kannst per foreach($text as $feld) jedes feld einzeln aurufen.
Wenn man da nu aber nen Feld nicht ausfüllt wird es nicht mit berücksichtigt.
das kannst du verhindern wenn due name="text[$num]" und dann $num++ immer machst.

Hoffe geholfen zu haben.

Grtz MrF
 
Zurück