"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PHP] Array an eigene Seite übergeben

kurtm1 11.03.2006 - 17:35 1584 9
Posts

nr1

Here to stay
Avatar
Registered: Dec 2003
Location: AT
Posts: 614
Hallo, suche eine Möglichkeit ein Array wieder an die Herkunftsseite zu übergeben. Sprich einfach in einem Formular mehr als nur eine einfache Variable weitergeben.

Tipps?

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4259
http://at2.php.net/serialize
-> hidden input feld

nr1

Here to stay
Avatar
Registered: Dec 2003
Location: AT
Posts: 614
Code: PHP
<?php
	$board=$_POST['board'];
	print_r($board);
  		
	$board = array(array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"));
?>

<form action="array.php" method="POST">
<input name="board" size="100" value="<?php echo $board ?>">
<input type="submit" value="Schuss">
</form>

Das hatte ich bis jetzt so in der Art schon, mal schauen wie das mit der Funktion geht..


//edit: Ok jetzt hab ichs so mit dem serialize gemacht. Das einzige Problem: Wenn ich die Variable mit echo ausgebe, kommt ein viel längerer (vollständiger) Text, wenn ich sie allerdings in das hidden field schreibe, fehlt der Großteil
:confused:

Code: PHP
<?php
	if (isset($board))
	{
	$board=$_POST['board'];
	$board=unserialize($board);
	}
	else
	{	
	$board = array(array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"));
	echo "<br><br>";
	echo $board=serialize($board);
	echo "<br><br>";
	}
?>

<form action="array.php" method="POST">
<input name="board" value="<?php echo $board ?>">
<input type="submit" value="Schuss">
</form>
Bearbeitet von nr1 am 11.03.2006, 18:51

nr1

Here to stay
Avatar
Registered: Dec 2003
Location: AT
Posts: 614
Inzwischen habe ich es schon einmal geschafft, dass ich das Array als String übergeben kann, und diesen String dann auf der neuen Seite wieder herausbekomme.
Allerdings fehlt/funktioniert die Rückumwandlung in ein Array nicht..

Code: PHP
<?php
	if (isset($board))
	{
	$board=$_POST['board'];
	
	$board=html_entity_decode(unserialize($board));

	echo $board;
	print_r($board);
	}
	else
	{	
	$board = array(array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"),
				array("X", "X", "X", "X"));
	print_r($board);
	echo "<br><br>";
	echo $board=(htmlentities(serialize($board)));
	echo "<br><br>";
	}
?>

<form action="array.php" method="POST">
<input name="board" value="<?php echo $board ?>">
<input type="submit" value="Schuss">
</form>

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4259
$board=html_entity_decode(unserialize($board)); müßte $board=unserialize(html_entity_decode($board)); sein.

hth

MIK

nr1

Here to stay
Avatar
Registered: Dec 2003
Location: AT
Posts: 614
Zitat von kleinerChemiker
$board=html_entity_decode(unserialize($board)); müßte $board=unserialize(html_entity_decode($board)); sein.

Das kann nicht stimmen, und funzt auch nicht, da ich ja zuerst serialisiere, und dann Sonderzeichen umwandle. Umgekehrt muss ich dann eben zuerst Sonderzeichen wegtun, und dann deserialisieren..

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4259
mit html_entity_decode(unserialize($board)); tust du aber zuerst deserialisieren und dann sonderzeichen wegtun.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25380
ich versteh echt nicht was ihr da macht.. :confused:

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
Zitat von mat
ich versteh echt nicht was ihr da macht.. :confused:
ich auch nur so halbert ...

Wenn du in einem Formular mehr als eine Variable weitergeben willst, warum machst du dann nicht pro Variable ein Hidden Field?

Luzandro

OC Addicted
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
Zitat von kurtm1
Das kann nicht stimmen, und funzt auch nicht, da ich ja zuerst serialisiere, und dann Sonderzeichen umwandle. Umgekehrt muss ich dann eben zuerst Sonderzeichen wegtun, und dann deserialisieren..

funktioniert einwandfrei...

Code: PHP
<?php
if (!empty($_POST)) {
  echo "postback...<p>"; 
  $board=$_POST['board']; 
  echo "serialized (from form): ". $board ."<p>";
  $board = unserialize(html_entity_decode($board));
  echo "unserialized: <p>";
  print_r($board);
  $board = htmlentities(serialize($board)); 
} 
else {
  echo "init...<p>";
  $board = array(array("X", "X", "X", "X"), 
                array("X", "X", "X", "X"), 
                array("X", "X", "X", "X"), 
                array("X", "X", "X", "X")); 
  print_r($board); 
  echo "<br><br>"; 
  echo $board=(htmlentities(serialize($board))); 
  echo "<br><br>"; 
} 
?> 

<form action="array.php" method="POST"> 
<input name="board" value="<?php echo $board ?>"> 
<input type="submit" value="Schuss"> 
</form>
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz