Eine variable Variable?!

fischair

Mitglied
Hallo!
Ich habe da ein Problem mit einem Script.
Also folgendes:
Ich habe ein Formular mit mehreren "text"-Objekten. Die Anzahl dieser "text"-Objekte ist variabel, sie werden jedoch immer nach dem gleichen Schema benannt (automatisch) nämlich so:

textfeld1
textfeld2
.
.
.

Dies funktioniert auch prima. Dieses Formular wird nun an eine andere Seite geschickt, die die Werte nacheinander in eine mySQL-Datenbank eintragen soll, also immer wieder mit neuer ID. Lösen wollte ich dies mit einer while-schleife, ich komme aber nicht an die Variablen $textfeld1, $textfeld2 usw. ran, das einzige, was ich bis jetzt geschafft habe, ist ein Eintrag wie "$textfeld1", aber halt nicht die dafür festgelegte Variable (aus dem Formular.
So sieht das ganze aus:
PHP:
$teil = "$"
$takter = 0;
	while ($takter < $anzahldertextfelder){
		$takter_1 = $takter+1;
		$combine = $teil.textfeld.$takter_1;
		$result= MYSQL_QUERY("INSERT INTO tabelle (text)". "VALUES ('".$combine."')");
		$takter++;
	}
würde mich sehr freuen, wenn mir jemand helfen könnte, bin nämlich gerade am verzweifeln :(
 
Du solltest alle Textfelder im Formular wiefolgt benennen:
Code:
textfeld[]
Anschließend kannst du alle Textfelder so auslesen:
PHP:
foreach ($_POST['textfeld'] as $textfeld) {
  echo $textfeld;
}

Solltest du das Formular via GET versenden, musst du im oberen Code $_GET anstatt $_POST verwenden. POST ist allerdings ratsamer.

Sven
 
Sven hat IMHO die eleganteste Variante bereits beschrieben.
Da Du auch nach variablen Variablen gefragt hast, hier ein Beispiel:
Die gibt es in PHP nämlich auch.
PHP:
$a="b";
$b="Hallo";
echo $$a;
//Ausgabe: Hallo
Bezogen auf Dein Beispiel:
PHP:
$i=1;
$var="textfeld".$i;
while (isset($$var)) {
    echo $$var;
    $i++;
    $var="textfeld".$i;
}

Gruß hpvw
 
Ich hab hier ein ähnliches problem, aber ich bin noch nicht so weit!

hier mal das wichtigste aus dem quellcode:
code von datei: neuer_b.php
Code:
<title>Neuer Besitzer</title>
</head>
<body>
 
<p>&nbsp;</p>
<p align="center"><font face="Script MT Bold" size="5">Neuer Besitzer</font></p>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
<form method="POST" action="b_eintrag.php">
<table border="0" align="center" id="table1">
<tr><td width="99"><font face="Script MT Bold" size="4">Name:</font></td>
<td><font size="4" face="Script MT Bold" color="#FFFFFF"><input type="text" name="name[]" size="40"></font></td></tr>
 
<tr>
<td width="99"></td><td><font face="Script MT Bold" color="#FFFFFF"><input type="submit" value="Eintragen" name="B1">
	&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type="reset" value="Zurücksetzen" name="B2">
</font>
</tr>
</table></form>
und hier der quellcode aus b_eintrag.php

Code:
 <?
 
 
foreach ($_POST['name'] as $name) { 
echo $name; 
} 
 
?>
Und das hier ist der Fehlercode: Warning: Invalid argument supplied for foreach() in *****\b_eintrag.php on line 4
Kann bitte wer nem blutigen Anfänger helfen?
 
Ups, ich sehe gerade dass das umbenennen überhaupt nichts bringt, sorry.
Ich frage mich nur gerade was du erreichen möchtest. Du hast nicht mehrere Textfelder mit dem Namen name, also warum willst du alle Elemente mit diesem Namen durchlaufen?
Der Fehler tritt auf, weil $_POST['name'] in diesem Fall kein Array ist.
ergo:
PHP:
echo $_POST['name'];
 
Ich habe vor mit Hilfe eines Formulars Datensätze in die SQL Datenbank zu scheiben. Also dachte ich, ich teile den einzelnen "Feldergebnissen" eine Variable zu um sie dann zu "übertragen".

Da ich ein absoluter neuling bin... (seit gestern abend läuft php + mysql + phpmyadmin)
dachte ich das währe ersteinmal der erste Schritt!

Ich bin aber für Vorschläge, die mir helfen können sehr dankbar!
gruß jan
ps.
so klappt es bei mir schon:
Code:
 echo "Vorname: ".@$_GET['vorname']."<br>";
	echo "Straße: ".@$_GET['str']."<br>";
	echo "Hausnummer: ".@$_GET['hnr']."<br>"; 
	echo "Plz: ".@$_GET['plz']."<br>"; 
	echo "Ort: ".@$_GET['ort']."<br>"; 
	echo "Telefon: ".@$_GET['tel']."<br>";
(Aber da hatte ich noch alles auf einer Seite und Method war GET)

Ich habe angenommen, wenn ich name="name[]" sage hab ich nen array...
 
Zuletzt bearbeitet:
Ich glaub ich habs!
Code:
$name = $_POST['name'];
	echo $name
Code:
 name="name"
*oberfroi* ;o)
vilen dank für die mühen!
 
Zuletzt bearbeitet:
Zurück