Ankündigung

Einklappen
Keine Ankündigung bisher.

Einkaufszettel

Einklappen

Neue Werbung 2019

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

  • 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

  • #2
    <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.
    - Laravel

    Kommentar


    • #3
      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.
      [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
      [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

      Kommentar


      • #4
        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

        Kommentar


        • #5
          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.
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            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>

            Kommentar

            Lädt...
            X