Vollstndige Version anzeigen : Array in Formularen verarbeiten
Hallo!
Habe ein kleines Problem! Ich mchte ein Array per verstecktem Textfeld in einem Formular bergeben. Dazu habe ich das Array als value im versteckten Feld angegeben. Wenn ich jetzt das Formular abschicke ist mein Array weg.
Kann mir jemand helfen?
Gruss
Stefan
Corvin Grning
08-06-2004, 13:50
// Beitrag-Inhalt gelscht
Hast Du das auch mal ausprobiert?
@dolon
Am einfachsten ist es, das Array als Session-Variable abzuspeichern und spter wieder einzulesen.
Hallo!
Also Inhalt drfte nicht gelscht sein. Denn bevor ich abschicke, gebe ich das Array testweise aus. Da ist auch alles drin. Nur wenn ich dann abschicke, sind danach die Daten weg. Und Sessions wollte ich eigentlich nicht benutzen...
Trotzdem danke
Gruss
Stefan
PS: Ich denke eher, dass ich bei dem versteckten Feld was falsch mache. Denn ich habe das Problem immer wenn es um Arrays geht. Hab in einigen Foren aber gelesen, dass ab PHP4 Arrays mit Formularen gehen soll. Nur gehts bei mir nicht :(
Hier nen Codeauszug:
echo "<form action="liste.php" method="post">";
echo "<input type="hidden" name="t_array" value="$daten2">";
echo "<tr><td><input type="submit" value="Neu berechnen"></td></tr>";
$daten2 ist ein mehrdimensionales Array!
Du musst den Array auflsen in eine String mit der funktion serialize() - dass Ergebniss kannst Du per Formular bertragen. Anschlieend musst Du den String wieder in ein Array wandeln!
Hallo!
Thx werds mal versuchen :)
Gruss
Stefan
Hallo mal wieder!
Hm also seralize funktioniert irgendwie komisch. Der sendet jetzt was schneidet aber den grten Teil des Arrays ab! Hab die ersten paar Felder, bis nen String kommt also nen Feld in dem Anfhrungszeichen stehen (z.B. :"Name")
Gibts da irgendwas zu beachten?
Gruss
Stefan
Du musst die Anfhrungszeichen im Array noch durch & quot; (ohne das Leerzeichen) ersetzen.
Hallo!
Was meinst du genau mit & quot? Ist das nen Befehl oder einfach ne Zeichenkette die die Anfhrungszeichen ersetzt? Sorry steh grad nen bischen aufm Schlauch! :)
Die zweite Lsung hab ich nmlich ausprobiert. Dann kommt der String auch an. Jedoch wenn ich unserialize versuche tut sich gar nichts?!?
Gru
Stefan
PS: Hab jetzt & quot; als Ersatz benutzt nur der unserialize funzt nicht! :(
Was verstehst Du unter gar nichts? Vielleicht gibts Du uns mal ein wenig Quelltext!
Hi!
Also unter gar nichts verstehe ich: Wenn man den String wieder "unserializen" mchte, ist die Ergebnisvariable leer!
Also Quelltext: (Nur Testpage!!! Jedoch selbes Problem, bei & quot natrlich ohne Leerzeichen!)
$arr[0] = "Hello";
$arr[1] = "Test";
$Text = serialize($arr);
$str_replace("","& quot;",$Text);
<-- Hier eine Standardformular mit zwei versteckten Felder. 1. Feld = 1, 2. Feld = $Text -->
if(temp == 1){ (So heisst das erste Feld)
str_replace("& quot;",""",$Text);
$biz = unserialize($Text);
echo $biz[0];
}
So hab verschiedenes Versucht, z.B. ohne Str_replace den String zurck zuverwandeln. Aber die Ausgabe von $biz[0] ist immer leer, es erscheint nix auf dem Montior zb: < > wobei zwischen den Klammern eigentlich $biz stehen mte!
Gruss
Stefan
Hallo!
Ich denke ich hab den Fehler! Nach dem verschicken des Strings per Formular, erscheinen im serialisierten Array komischerweise vor allen Anfhrungszeichen ein Backslash! Wenn ich diese nun lsche aus dem String und wieder unserialize mache, dann ist alle ok! Wie die Backslashes da rein kommen oder wieso wei ich aber nicht...
String vor dem Verschicken:
a:2:{i:0;s:5:"Hello";i:1;s:4:"Test";}
nach dem Verschicken:
{i:0;s:5:"Hello";i:1;s:4:"Test";}
Gruss
Stefan
PS: Thx fr die Hilfe und die Geduld mit mir :), jetzt komm ich endlich weiter!
tapferesschneid
09-06-2004, 00:24
$arr[0] = 'Hello';
$arr[1] = 'Test';
$Text = urlencode(serialize($arr));
// <-- Hier eine Standardformular mit zwei versteckten Felder.
// 1. Feld = 1, 2. Feld = $Text
//
// also sowas wie
echo '<input type="hidden" name="temp" value="1">';
echo '<input type="hidden" name="Text" value="'.$Text.'">';
// -->
if ($_POST['temp'] == '1') //(So heisst das erste Feld)
{
$arr = unserialize(urldecode($_POST['Text']));
echo $arr[0];
}
knnte vielleicht funktionieren
Hi!
Thx. Ich hab zwar urlencode nicht ausprobiert, aber denke das knnte sinnvoll sein. Denn ich nehme an es macht genau das, was ich jetzt mit ner str_replace gelst habe!
Thx for help :)
Gruss
Stefan
PS: Hab grad urlencode ausprobiert! Hat denselben Effekt wie meine Methode, nur das sie professioneller und eleganter ist!
Die Backslashes kommen somit bei der Codierung rein! (Nher s.o. Posting)
lolblack
09-06-2004, 00:32
ka obs funzt aber wie wrs mit ner while schleife die fr jedes array feld ein input feld macht und den value je nach inhalt des momentanen array feldeldes setzt
name setzt du arr0 bis arrxx
und fragst nachher die variablen wieder mit ner schleife ab und machst das array
nur mal ne iddee
Hi!
Hast zu schnell geschrieben :) Also ich habs probiert mit urlencode und das Problem ist damit gegessen! Thx fr den Tipp. Aufklrung: Nach dem ich mein Array serialisiert hatte und per Formular verschickt hat, codiert PHP oder HTML die Variablen entsprechend. Und wenn er nen Anfhrungszeichen findet macht er sich nen Zeichen, dass das kein Trennzeichen ist, sondern ein zum Text/Variable gehrendes Zeichen. Nur per urlencode/urldecode klappt es richtig!
Gru
Stefan
PS: Schleife ist also nicht notwendig!
tapferesschneid
09-06-2004, 02:53
Mit
if ($_POST['Text']) // also wenn was drin steht
{
$arr = unserialize(urldecode($_POST['Text']));
echo $arr[0];
}
kannst Du Dir brigens das Feld temp noch sparen ...
vBulletin v3.0.7, Copyright ©2000-2005, Jelsoft Enterprises Ltd.