Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

php: erschachteltes array per post uebertragen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 06.03.2007, 09:42

hallo,

ich versuch hier ein verschachteltes array in einem formular zu editieren, allerdings habe ich keine ahnung wie ich alle diese werte adressieren muss. hier mal ein beispiel:

Code: Alles auswählen

<?
$data = array&#40;
	"name"=>"this guy",
	"address"=>array&#40;
		"street" => "s. mile",
		"zip"=>"123",
		"city"=>"mooflake town"&#41;,
	"email"=>"spam@hotmail.com"
&#41;;

echo '<pre>';
print_r&#40;$data&#41;;
echo '</pre>';

echo '<form action="" method="POST">';
echo edit&#40;$data, "data"&#41;;
echo '<input type="reset">';

echo '<pre>';
print_r&#40;$_POST&#41;;
echo '</pre>';



function edit&#40;$array, $name=""&#41; &#123;
	$bf = "<ul>"."\n";
	foreach&#40;$array as $key=>$value&#41; &#123;
		//$key = '&#91;'.$name.'&#93;&#91;'.$key.'&#93;';
		if&#40;is_array&#40;$value&#41;&#41; &#123;
			$bf .= edit&#40;$value, $key&#41;;
		&#125;
		else &#123;
			$bf .= '<li><input name="'.$key.'&#91;&#93;" value="'.$value.'"></li>'."\n";
		&#125;
	&#125;
	$bf .= '</ul>'."\n";
	return $bf;
&#125;
?>
was muss ich aendern, damit ich nach einem klick auf den submit-button das selbe array (mit den werten aus dem formular natuerlich) wieder angezeigt bekomme?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


sfancy
PostRank 2
PostRank 2
Beiträge: 39
Registriert: 09.05.2006, 09:57

Beitrag von sfancy » 06.03.2007, 10:12

Code: Alles auswählen

$bf .= '<li><input name="'.$key.'&#91;&#93;" value="'.$value.'"></li>'."\n";
Probiers mal mit:

Code: Alles auswählen

$bf .= '<li><input name="foo&#91;'.$key.'&#93;" value="'.$value.'"></li>'."\n";
In $_POST["foo"] sollte dann dein Array zu finden sein.

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 06.03.2007, 11:15

nahe dran, bringt mich aber bei meinem richtigen problem nicht weiter. dort sind die arrays bis zu 3 ebenen tief, ich weiss einfach nicht wie ich die adressieren muss.

hier bekomme ich sowas raus wie
[data] => Array
(
[name] => ffff
[email] => spam@hotmail.gggg
)

[address] => Array
(
[street] => s. mile
[zip] => 123
[city] => mooflake town
)

woher weiss ich denn da das "address" in "data" gehoert - hier geht mir ja eine ebene verloren...?

alpening
PostRank 4
PostRank 4
Beiträge: 110
Registriert: 07.12.2005, 14:30
Wohnort: Miesbach

Beitrag von alpening » 06.03.2007, 11:39

Code: Alles auswählen

$data&#91;name&#93; = ...;
$data&#91;email&#93; = ...;
$data&#91;address&#93;&#91;street&#93; = ...;
$data&#91;address&#93;&#91;plz&#93; = ...;
$data&#91;dingsbums&#93;&#91;dingsbums2&#93;&#91;dingsbums3&#93; = ...;
geht das in deine richtung

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 06.03.2007, 12:56

Öhm, dafür gibt es eigentlich folgende Funktion: https://www.php.net/serialize

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 06.03.2007, 20:48

danke, ich werde mal versuchen die loesung von alpening umzusetzen.
serialize nuetzt mir hier nix; ich will ja den inhalt in einem formular bearbeiten - serialize brauch ich erst wenn ich das ergebniss dann irgendwo speichern will.

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 06.03.2007, 22:03

eigentlich ganz simpel wenn man erstmal rausbekommen hat wie es geht:

Code: Alles auswählen

   function edit&#40;$array, $root&#41; &#123;
       $bf = "<ul>"."\n";
       foreach&#40;$array as $key=>$value&#41; &#123;
           $key = $root.'&#58;&#58;'.$key;
           if&#40;is_array&#40;$value&#41;&#41; &#123;
               $bf .= edit&#40;$value, $key&#41;;
           &#125;
           else &#123;
               $name = fieldname&#40;$key&#41;;
               $bf .= '<li><input name="'.$name.'" value="'.$value.'">'.$key.'</li>'."\n";
           &#125;
       &#125;
       $bf .= '</ul>'."\n";
       return $bf;
   &#125;
 
   function fieldname&#40;$address&#41; &#123;
       //build correct form address
       $data = explode&#40;"&#58;&#58;", $address&#41;;
        $formname = "";
       foreach&#40;$data as $level=>$address&#41; &#123;
           if&#40;$level==0&#41; &#123;
               $formname = $address;
           &#125;
           else &#123;
               $formname .= '&#91;'.$address.'&#93;';
           &#125;
       &#125;
       return $formname;
   &#125;
:D :D :D

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 07.03.2007, 10:13

Oh, ich sollte wohl genauere lesen. Sorry.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag