Was ist an der zeile Falsch (übergabe von einem array)
Thomas
- php
0 lulu0 Bernhard Mecl
Hi,
ich will ein array, das error heisst an eine neue Seite übergeben (das ganze ist ein Fragebogen) und habe folgende Zeile um das array zu übergeben:
echo" <input type="hidden" name="fehler" value="<? echo implode("|",$error); ?>"> ";
und am anfang der PHP seite steht dann folgendes:
$error = explode("|",$_POST["error"]);
aber es funtioniert nicht, was mache ich falsch ???
Achja, brauche ich eigentlich die zeile $error= array(); noch ????
ich komm hier echt nciht mehr klar, habe schon 2 mal in das Forum geschrieben, und habe auch super Antworten bekommen, aber es will irgendwie nicht klappen, ich kapier das nicht.
Huhu Thomas
error != fehler
Viele Grüße
lulu
geht leider auch nicht......
erstens habe ich dann die anzeige: ,}{~q}};t~g?"hidden" name="error" value=" Box1 X
und wenn ich mir die anzeigen lasse, die variable, denn zählt sie nicht hoch, also ist der alte wert verschwunden beim seite neu laden
also, hier mal der Quelltext von einer Testseite, wenn die hinhaut, denn kann ich das übertragen, wäre nett, wenn mir da mal jemand helfen könnte:
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php
$array = explode("|",$_POST["wurscht"]);
$i = $_POST["counter"];
$error[$i] = 3;
$i++;
echo "Gesamtfehlerpunkte:". array_sum($array). "<br>";
echo" <form action="test.php" method="post"> ";
echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>"> ";
echo" <input type="hidden" name="counter" value="$i"> ";
echo" <input type="submit" name="Start" value="Submit"> ";
?>
</body>
</html>
Aloha
$array = explode("|",$_POST["wurscht"]);
[...]
echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>"> ";
dazwischen passiert nichts mit $array ?!
So ganz verstehe ich das Problem nicht, was soll denn da drinstehen ?
Statt das mit explode und implode zu machen könntest Du es auch
so lösen
foreach( $_POST['wurscht'] as $one ){
printf('<input type="hidden" name="wurscht[]" value="%s">',$one);
}
Viele Grüße
lulu
btw. $array ist ein etwas ungünstiger Name für ein Array
Ups, ein Fehler im Quelltext:
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php
$array = explode("|",$_POST["wurscht"]);
$i = $_POST["counter"];
$array[$i] = 3;
$i++;
echo "Gesamtfehlerpunkte:". array_sum($array). "<br>";
echo" <form action="test.php" method="post"> ";
echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>"> ";
echo" <input type="hidden" name="counter" value="$i"> ";
echo" <input type="submit" name="Start" value="Submit"> ";
?>
</body>
</html>
Also es soll folgendes passieren:
jedesmal, wenn ich auf diesen Button drücke, denn soll die Zahl über dem Button immer um 3 erhöht werden.
also erster klick Fehlerpunkte 3
also zweiter klick Fehlerpunkte 6
also dritter klick Fehlerpunkte 9
achja, und ich hab denn bei der ausgabe so ein zecihen vor dem Submit button: ">
des kommt wohl von der übergabe, aber ich weiss net was an der zeile falsch ist
Huhu Thomas
habe noch zwei etwas gröbere Schnitzer gefunden
1. das schliessende FORM-Tag fehlt
2. diese Zeile ist ziemlich "zerschossen"
echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>"> ";
besser
echo" <input type="hidden" name="wurscht" value="".implode("|",$array)."">";
noch besser (IMHO weil mit_ohne backslash)
printf '<input type="hidden" name="wurscht" value="%s">',implode('|',$array));
Viele Grüße
lulu
subject, that's all
Danke dir schonmal, ich werd des nachher mal probieren, vielleicht schaff ich es ja diesmal....:-)
$error = explode("|",$_POST["error"]);
aber es funtioniert nicht, was mache ich falsch ???
Wenn das Formularfeld zuerst "fehler" heißt, heißt es auch in $_POST "fehler" => $error=explode('|',$_POST['fehler']);
Achja, brauche ich eigentlich die zeile $error= array(); noch ?
Bei Zugriff auf nicht initialisierte Variablen (z.B. $var[]='xxx'; ohne ein vorheriges $var=array(); oder $var[0]='xxx'; etc.) wird eine Meldung auf Ebene E_NOTICE ausgegeben, die standardmäßig nicht angezeigt wird. Hier ist das allerdings nicht der Fall, die Zeile ist überflüssig.