kostenloser Webspace werbefrei: lima-city


Array erstellen PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    Hallo !

    Ich habe folgendes Formular erstellt:

    ...
    <tr>
    <td><input type="text" name="ZutatenMenge[]" size="30" style="width: 50px;"></td>
    <td><input type="text" name="ZutatenName[]" size="30" style="width: 540px;"></td>
    </tr>
    ...


    Mit einem Javascript kann man genau diesen Ausschnitt mehrmals einfügen. Jetzt will ich aus den Eingaben vom Benutzer ein Array erstellen, sodass es ausgegeben werden kann. Wie mache ich das?

    Beitrag zuletzt geändert: 29.12.2011 20:03:35 von php-oop
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Mach mit JavaScript bei den Namen der Eingabefelder eine fortlaufende Nummer rein.

    Also "ZutatenMenge_n" statt "ZutatenMenge[]" und "ZutatenName_n" statt "ZutatenName[]". Statt n nimmst du natürlich die von JS generierte Nummer. Die kannst du dann mit dem php-Script erzeugen und somit alle Zutatenfelder abfragen.

    for($i = 0; $i<$formSize;$i++){
        $_POST["Zutatenmenge_".$i];
        $_POST["ZutatenName_".$i];
    }


    Keine Ahnung obs mir for so geht... Sonst eben eine While-Schleife...

    irgendwie so...

    Beitrag zuletzt geändert: 29.12.2011 20:20:53 von schrotti12
  4. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    schrotti12 schrieb:
    Mach mit JavaScript bei den Namen der Eingabefelder eine fortlaufende Nummer rein.

    Also "ZutatenMenge_n" statt "ZutatenMenge[]" und "ZutatenName_n" statt "ZutatenName[]". Statt n nimmst du natürlich die von JS generierte Nummer. Die kannst du dann mit dem php-Script erzeugen und somit alle Zutatenfelder abfragen.

    for($i = 0; $i<$formSize;$i++){
        $_POST["Zutatenmenge_".$i];
        $_POST["ZutatenName_".$i];
    }


    Keine Ahnung obs mir for so geht... Sonst eben eine While-Schleife...

    irgendwie so...


    Ich habe gelesen, sowas was ich will, geht mit einer foreach-Schleife. Damit kann ich dann auch "ZutatenMenge[]" und "ZutatenName[]" nennen, oder? Wie kann ich da ein Array erstellen?
  5. Wenn du ein Array per Post versendest, dann ist auch $_POST['ZutatenMenge'] ein Array und eben kein String mehr. Nutze diesen Code, um das Array zu durchlaufen:
    foreach($_POST['ZutatenMenge'] as $var)
    {
        // mach was
        // $var ist das aktuelle Element
    }
  6. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    drafed-map schrieb:
    Wenn du ein Array per Post versendest, dann ist auch $_POST['ZutatenMenge'] ein Array und eben kein String mehr. Nutze diesen Code, um das Array zu durchlaufen:
    foreach($_POST['ZutatenMenge'] as $var)
    {
        // mach was
        // $var ist das aktuelle Element
    }


    foreach($_POST['ZutatenMenge'] as $var)
    {
    $zutat .= ' . $var['menge'] . ' . ' . $var['zutat'] . ' . "\n";
    }


    So ungefähr??

    Ich will das Array mit der Funktion serialize() in meine DB speichern und dann mit unserialize() an der entsprechenden Stelle wieder ausgeben.
  7. Nein, das geht nicht. So:
    foreach($_POST['ZutatenMenge'] as $rowNumber => $menge)
    {
        $zutaten .= $menge.' '.$_POST['ZutatenMenge'][$rowNumber]."\n";
    }
    $rowNumber ist dann bei jedem Schleifendurchlauf der Schlüssel des aktuellen Elements und $menge ist gleich $_POST['ZutatenMenge'][$rowNumber] . Falls du das noch nicht weißt: Schreibt man $arr[3][0], dann greift man auf das nullte Element des dritten Elements von $arr zu.
  8. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    Zum Ausgeben habe ich jetzt folgendes Script:

    $i = 0;
    	while($i < count($zutaten_array))
    	{
    		echo $zutaten_array[menge][$i].' '.$zutaten_array[zutat][$i]."<br>";
    		$i++;
    	}


    Das klappt auch, es werden jedoch nur 2 Werte ausgegeben. Auch wenn ich
    echo count($zutaten_array);
    mache, gibt er mir 2 aus. Es sind aber 4 Werte in meinem Array. Anbei das Array, welches ich mit print_r ausgegeben habe:
    Array ( [menge] => Array ( [0] => 300g [1] => 200g [2] => 1 [3] => 2 Liter [4] => ) [zutat] => Array ( [0] => Mehl [1] => Zucker [2] => Ei [3] => Milch [4] => ) )


    Warum werden mir bei der While Schleife nur die ersten beiden Werte ausgegeben?
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    php-oop schrieb:
    Array ( [menge] => Array ( [0] => 300g [1] => 200g [2] => 1 [3] => 2 Liter [4] => ) [zutat] => Array ( [0] => Mehl [1] => Zucker [2] => Ei [3] => Milch [4] => ) )
    Dieses Array kannst du so ausgeben:
    $zutaten = dein Array;
    $anzahl= count($zutaten['menge']);
    for($i = 0; $i < $anzahl; $i++) {
        echo($zutaten['menge'][$i].' '.$zutaten['zutat'][$i].'<br>');
    }
    Was dir count($zutaten) ausgibt ist die Anzahl der Elemente in $zutaten, das sind 'menge' und 'zutat' = 2!
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!