Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrdimensionales Array befüllen und auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mehrdimensionales Array befüllen und auslesen

    Hi
    ich beschäftige mich grad ein bisschen mit php und hab mir auch schon viel anlesen können. Aber hier komm ich nicht weiter:

    Ich habe eine Tabelle, in der ich per "while" Daten aus einer Datenbank auslese. Soweit so gut.
    Nun füge ich zu jeder Zeile eine Checkbox und einen Counter, sowie ein option-Feld hinzu.
    Code:
    while($row5 = mysql_fetch_array($result5)) {
                                             echo "<tr>" ;
                                             echo "<td>".$row5['p_produkt']."</td>" ;
                                             echo "<td>".$row5['p_preis']."</td>" ;
                                             echo "<td><input type='checkbox' name='rueck[][check]' value='".$row5['auto']."' id='".$row5['auto']."'></td>"  ;
                                             //echo "<td>Hier kommt ein option-feld rein</td>"    ;
                                             echo "<td><input type='number' name='rueck[][menge]' min='0' max='".$row5['p_menge']."'></td>" ;
                                             echo "</tr>"  ;

    Das Ganze ist natürlich als form deklariert und geht dann an die nächste Php, wo ich gerne, falls in einer Zeile die checkbox geklickt wurde auch auf die jeweils zugehörigen option-/counter-einträge zugreifen möchte. (per foreach lese ich die Checkbox aus, aber komme noch nicht auf die anderen Eingaben dazu)

    Ich möchte dort dann die eingegebenen Daten wieder in eine DB schreiben (aber das sollte ich dann schon hinbekommen). Nur hab ich noch nicht rausgefunden, wie ich die 3 Werte aus der while-Schleife zusammengehörig auf der "nächsten Seite" auslesen kann.

  • #2
    Du müsstest dir mit deinem jetzigen Skript ein Formular erzeugen lassen.
    In dem Parameter Action des <form> Tags würdest du dann dein "nächstes" PHP File angeben!

    Kommentar


    • #3
      schau dir doch einfach mal mit var_dump($Dein_array) an, was du an die Seite übergeben hast!
      http://www.dhsmedia.de
      http://www.deutsch-im-blick.de

      Kommentar


      • #4
        Auf die nächste Seite zu kommen ist nicht das Problem.
        Die einfache Checkbox auszuwerten und den dort verknüpften value $row5['auto'] auszulesen auch nicht.

        Mein Problem ist die Abfrage des
        Code:
        <input type='number' name='??????' min='0' max='".$row5['p_menge']."'>
        Sprich, wenn die Checkbox angeklickt ist, möchte ich den dazugehörigen Mengenwert und den Wert aus der option-box irgendwie mit dem $row5['auto'] verknüpft auslesen.

        Bsp (while-Schleife):
        Artikel 1 - Checkbox - optionfeld - Mengenangabe
        Artikel 2 - Checkbox - optionfeld - Mengenangabe
        Artikel 3 - Checkbox - optionfeld - Mengenangabe
        Artikel 4 - Checkbox - optionfeld - Mengenangabe
        Artikel 5 - Checkbox - optionfeld - Mengenangabe

        ->Nutzer wählt aus
        Artikel 1 - Check - option1 - 2
        Artikel 2 - leer - leer - leer
        Artikel 3 - Check - option3 - 1
        Artikel 4 - Check - option2 - 1
        Artikel 5 - leer - leer - leer


        -> Wenn checkbox ausgewählt, dann soll $row5['auto'] + Wert aus optionfeld + Wert aus Mengenangabe übergeben werden.

        ->Ausgabe:
        Artikel1 - option1 - 2
        Artikel3 - option3 - 1
        Artikel4 - option2 - 1




        Frage:
        Wie kann ich die Eingabefelder aus einer mit while erstellten Tabelle zusammengehörig abspeichern (pro Zeile 3 Daten) und anschließend auch wieder so zusammengehörend auslesen?

        Kommentar


        • #5
          Ich bekomm das einfache Array hin:
          PHP-Code:
          while($row5 mysql_fetch_array($result5)) {
                                           if(
          $row5['p_menge']>0){
                                                   echo 
          "<tr>" ;
                                                   echo 
          "<td>".$row5['p_produkt']."</td>" ;
                                                   echo 
          "<td>".$row5['p_preis']."</td>" ;
                                                   echo 
          "<td><input type='checkbox' name='rueck[]' value='".$row5['auto']."' id='".$row5['auto']."'></td>"  ;
                                                   
          //echo "<td>Hier kommt ein Auswahlfeld rein</td>"    ;
                                                   
          echo "<td><input type='number' name='menge[]' min='0' max='".$row5['p_menge']."'></td>" ;
                                                   echo 
          "</tr>"  ;
                                            } 
          sodass ich dann per
          PHP-Code:
          foreach ($_POST['rueck'] as $rueck) { Tabelle 
          die Daten die ich über die Checkbox übergeben habe auslesen und weiterverarbeiten kann.
          Aber wie kann ich auf weitere zugehörige Felder zugreifen? Also hier das input-Feld "menge[]", bzw. später noch das option-Feld dazu.

          Da fehlt mir leider der Überblick mit den mehrdimensionalen Arrays, also wie ich die anlege und auslese.... (Das müsste ja eigentlich hier damit funktionieren)

          Kommentar


          • #6
            Da hilft das Gruppieren der Werte, sodass du gleich das richtige Array in PHP bekommst:

            PHP-Code:
            <?php
            //Artikelzuordnung ID => Artikelname
            $articles = [65=>'Artikel1',36=>'Artikel2',49=>'Artikel3'];
            ?>
            <form method="POST">
            <table>
                <tr><td>Artikel</td><td>Check</td><td>Option</td><td>Menge</td></tr>
                <?php foreach($articles as $id => $article) : ?>
                <tr>
                    <td><?php echo $article?></td>
                    <td><input type="checkbox" name="article[<?php echo $id;?>][check]" /></td>
                    <td>
                        <select name="article[<?php echo $id;?>][option]">
                            <option value="1">Option 1</option>
                            <option value="2">Option 2</option>
                            <option value="3">Option 3</option>
                        </select>
                    </td>
                    <td><input type="number" name="article[<?php echo $id;?>][amount]"</td>
                </tr>
                <?php endforeach; ?>
            </table>
                <input type="submit" value="Absenden" />
            </form>
            <pre>
            <?php
            if(!empty($_POST))
            {
                
            //Prüfen, ob Artikel übertragen wurden
                
            $articles = !empty($_POST['article'])?$_POST['article']:array();
                
            //Alle Artikel löschen, deren Checkbox nicht angeklickt wurde
                
            array_walk($articles,function($article$key)use(&$articles){
                    if(!isset(
            $article['check']))unset($articles[$key]);
                });
                
            var_dump($articles);
            }
            ?>
            War der Beitrag hilfreich? Dann Bedank dich mit einem klick auf .

            Kommentar

            Lädt...
            X