Sören: Formulardaten werden zu oft abgespeichert

Hallo,

ich hab folgende 2 Seiten:

edit_menu.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>Men&uuml; bearbeiten</title>  
</head>  
<body>  
<?php include "menu.php"?>  
<form action="save_menu.php" method="post">  
	Name: <input type="text" value="<?php echo $menu1?>" name="menu1" /> Url: <input type="text" value="<?php echo $menu1_url;?>" name="menu1_url" /><br />  
    Name: <input type="text" value="<?php echo $menu2?>" name="menu2" /> Url: <input type="text" value="<?php echo $menu2_url;?>" name="menu2_url" /><br />  
    Name: <input type="text" value="<?php echo $menu3?>" name="menu3" /> Url: <input type="text" value="<?php echo $menu3_url;?>" name="menu3_url" /><br />  
    Name: <input type="text" value="<?php echo $menu3?>" name="menu4" /> Url: <input type="text" value="<?php echo $menu4_url;?>" name="menu4_url" /><br />  
    Name: <input type="text" value="<?php echo $menu4?>" name="menu5" /> Url: <input type="text" value="<?php echo $menu5_url;?>" name="menu5_url" /><br />  
    Name: <input type="text" value="<?php echo $menu5?>" name="menu6" /> Url: <input type="text" value="<?php echo $menu6_url;?>" name="menu6_url" /><br />  
    Name: <input type="text" value="<?php echo $menu6?>" name="menu7" /> Url: <input type="text" value="<?php echo $menu7_url;?>" name="menu7_url" /><br />  
    Name: <input type="text" value="<?php echo $menu7?>" name="menu8" /> Url: <input type="text" value="<?php echo $menu8_url;?>" name="menu8_url" /><br />  
    <br />  
    <input type="submit" value="Senden"/>  
</form>  
</body>  
</html>

save_menu.php:

<?php  
  
$datei = fopen("./menu.php","w+");  
$menu = "<?php\r\n";  
for($i = 1; $i <= 8; $i++){  
	$menu .= "\$menu".$i." = \"".$_POST["menu".$i]."\";\r\n";  
	$menu .= "\$menu".$i."_url = \"".$_POST["menu".$i."_url"]."\";\r\n";  
}  
$menu .= "?>";  
fwrite($datei, $menu);  
fclose($datei);  
?>  

Die menu.php ist am Anfang leer.

Wenn ich die Felder auf der edit_menu.php ausfülle und aus Senden klicke, dann wird mir der Inhalt x-Mail in die menu.php gespeichert und die Datei erreicht eine Größe von ca. 600KB.

Wenn ich mir in der schleife $i ausgeben lassen bekomme ich die Zahlen "1 2 3 4 5 6 7 8" angezeigt. Also genau so wie es eigentlich sein sollte. Deswegen ist mir absolut rätselhaft wieso in der menu.php die eingegebenen Daten so oft rein geschrieben werden.

Oder habe ich irgendwo einen Denkfehler eingebaut?

Grüße
Sören

  1. Mahlzeit Sören,

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Men&uuml; bearbeiten</title>

    Wenn Du doch UTF-8 angegeben hast - wieso dann das &uuml;?

    Name: <input type="text" value="<?php echo $menu1?>" name="menu1" /> Url: <input type="text" value="<?php echo $menu1_url;?>" name="menu1_url" /><br />
        Name: <input type="text" value="<?php echo $menu2?>" name="menu2" /> Url: <input type="text" value="<?php echo $menu2_url;?>" name="menu2_url" /><br />
    [...]

    OMG - Arrays und Schleifen kennst Du aber schon, oder?

    for($i = 1; $i <= 8; $i++){

    Na, zumindest letzteres ...

    Wenn ich mir in der schleife $i ausgeben lassen bekomme ich die Zahlen "1 2 3 4 5 6 7 8" angezeigt. Also genau so wie es eigentlich sein sollte. Deswegen ist mir absolut rätselhaft wieso in der menu.php die eingegebenen Daten so oft rein geschrieben werden.

    Ich könnte mir vorstellen, dass das irgendwas mit dem (Entschuldigung!) "schweinischen" String-Zusammengestoppele zu tun hat, das Du innerhalb der Schleife verbrichst. Hast Du mal versucht, testweise in die Datei, die Du da befüllst, z.B.

    // $i

    einzufügen? Um zu sehen, wann eigentlich was in welchem Durchlauf dort hineingeschrieben wird?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi,

      Wenn Du doch UTF-8 angegeben hast - wieso dann das &uuml;?

      Ist ne alte Gewohnheit von mir. Aus Zeiten wo man es noch so schrieben musste.

      Ich könnte mir vorstellen, dass das irgendwas mit dem (Entschuldigung!) "schweinischen" String-Zusammengestoppele zu tun hat, das Du innerhalb der Schleife verbrichst. Hast Du mal versucht, testweise in die Datei, die Du da befüllst, z.B.

      // $i

      einzufügen? Um zu sehen, wann eigentlich was in welchem Durchlauf dort hineingeschrieben wird?

      Ja habe ich. Das Ergebnis war, das ich ganz oft die Zahlen von 1 bis 8 in meiner Datei stehen hatte.

      MfG
      Sören

      1. Mahlzeit Sören,

        Ja habe ich. Das Ergebnis war, das ich ganz oft die Zahlen von 1 bis 8 in meiner Datei stehen hatte.

        Und was schließt Du daraus?

        Also ich schlösse daraus, dass wohl irgendetwas beim String-zusammenfrickeln falsch läuft ... und würde diese Vermutung durch entsprechende Debug-Ausgaben überprüfen.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Also ich habs ausprobiert, bei mir funktioniert es. Allerdings schreib ich keine Datei sondern gebe $menu aus.
    Was steht denn so oft in der Datei? Wär vielleicht ein erster Ansatz zum suchen.