Ankündigung

Einklappen
Keine Ankündigung bisher.

Einkaufszettel

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Junkyy
    hat ein Thema erstellt Einkaufszettel.

    Einkaufszettel

    Hallo, Ich muss für die Schule eine Art Einkaufszettel programmieren, allerdings habe ich ein Problem meine Werte mit einem "input" in einen "Array" zu schreiben könnt ihr mir evtl helfen? :P
    PHP-Code:
    <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">

        <h1>Einkaufsliste</h1>

    <table>
    <?php


    if(isset($_POST['BUTTON_submit']))
    {
        
    createArray($_POST["DATA_name"],$_POST["DATA_price"]);

    }

    function 
    createArray($name,$price)
    {
        
    $array=array();
        
    array_push($array,$name,$price);
        
    $implodedarray implode(";",$array);

        
    $explodedarray explode(";",$array);
        
    $_POST['DATA_array'] .= $implodedarray;
        
    "<pre>" print_r($array) . "</pre>";



    }

    ?>
    </table>
        <table>
            <tr>
                <td>Name</td>
                <td>Preis</td>
            </tr>
            <tr>
                <td><input type="text" name="DATA_name"></td>
                <td><input type="text" name="DATA_price"></td>
            </tr>
        </table>
        <input type="hidden" name="DATA_array">
        <button name="BUTTON_submit" id="button">Hinzufügen</button><br>
    Musterbild : http://abload.de/img/bildmbdgj.png

  • Junkyy
    antwortet
    Ich habs jetzt ein bisschen anders gelöst
    @Arne Drews nee Sessions kommen als nextes
    PHP-Code:
    if(isset($_POST['BUTTON_submit']))
    {
        createArray($_POST["DATA_name"],$_POST["DATA_price"]);

    }

    function createArray($name,$price)
    {
        $array_name = explode(";",$_POST["DATA_hidden_name"]);
        array_push($array_name,$name);
        $imp_arrayname = implode(";",$array_name);
        $_POST["DATA_hidden_name"]= $imp_arrayname;
        $array_price = explode(";",$_POST["DATA_hidden_price"]);
        array_push($array_price,$price);
        $imp_arrayprice = implode(";",$array_price);
        $_POST["DATA_hidden_price"]= $imp_arrayprice;



    for($i=1;$i<=count($array_name);$i++)
    {
        echo "<tr><td>".$array_name[$i]."<td><td>" . $array_price[$i]. "</td></tr>";
    }
        $gesamtpreis = 0;
    for($i=1;$i<=count($array_price);$i++)
    {
        $gesamtpreis +=$array_price[$i];


    }



    ?>
    </table>

        <?php echo "Gesamtpreis: " $gesamtpreis ."&euro;"; }?>
        <table>
            <tr>
                <td>Name</td>
                <td>Preis</td>
            </tr>
            <tr>
                <td><input type="text" name="DATA_name"></td>
                <td><input type="text" name="DATA_price"></td>
            </tr>
        </table>
        <input type="hidden" name="DATA_hidden_name" value="<?php echo $_POST["DATA_hidden_name"]; ?>" />
        <input type="hidden" name="DATA_hidden_price" value="<?php echo $_POST["DATA_hidden_price"]; ?>" />
        <button name="BUTTON_submit" id="button">Hinzufügen</button><br>

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    explode zerstückelt aber eine Zeichenkette und kein Array!

    Zudem verstehe ich den Umweg nicht.
    Habt ihr Sessions schon gehabt? Wenn nicht, einfach die Daten erstmal in hiddenfields merken, bspw.:
    PHP-Code:
    $sHiddenFields '';


    if( isset(
    $_POST['BUTTON_submit']) )  { 

        
    $aBuyingList = isset( $_POST['list_elements'] )? $_POST['list_elements']: array();
        
    $aBuyingList[] = $_POST['DATA_name'] . '#;#' $_POST['DATA_price']); 

        foreach ( 
    $aBuyingList as $listElement ) {

            
    $sHiddenFields '<input type="hidden" name="list_elements[]" value="' $listElement '" />';
        }


    Die hidden-Fields dann im Formular mit ausgeben:
    PHP-Code:
    <form action="" method="post">
    <?php echo $sHiddenFields ?>
    ...ist allerdings, wie bereits angemerkt nicht sehr schön gelöst, aber die Frage ist ja auch in wie weit Dein Lehrer Deine Fähigkeiten als glaubwürdig betrachtet.

    Einen Kommentar schreiben:


  • Junkyy
    antwortet
    Zitat von tera3yte Beitrag anzeigen

    Was bringt $explodedarray = explode(";",$array); ? $explodedarray wird nicht in deiner Funktion verwendet.


    .
    Danke erstmal, den brauch ich ja noch fürs ausrechnen vom Gesamtpreis

    Einen Kommentar schreiben:


  • ChrisvA
    antwortet
    PHP-Code:
    <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
    An dieser Stelle das action-Attribut einfach leer lassen, das ist zuverlässiger, da der Skriptname nicht gleich der URL sein muss.

    Einen Kommentar schreiben:


  • Tera3yte
    antwortet
    <input type="hidden" name="DATA_array">

    zu

    <input type="hidden" name="DATA_array" value="<?php echo $implodedarray; ?>" />

    und

    $_POST['DATA_array'] .= $implodedarray;

    entfernen.

    Was bringt $explodedarray = explode(";",$array); ? $explodedarray wird nicht in deiner Funktion verwendet.


    EDIT:

    Zusätzlich musst du natürlich nun auch $_POST['DATA_array'] abfangen.

    Aber ob das alles so schön gelöst ist die andere Frage.

    Einen Kommentar schreiben:

Lädt...
X