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

  • Rahel
    hat ein Thema erstellt [Erledigt] Mehrdimensionales Array befüllen und auslesen.

    [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.

  • Dreamwatcher
    antwortet
    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);
    }
    ?>

    Einen Kommentar schreiben:


  • Rahel
    antwortet
    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)

    Einen Kommentar schreiben:


  • Rahel
    antwortet
    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?

    Einen Kommentar schreiben:


  • kid01
    antwortet
    schau dir doch einfach mal mit var_dump($Dein_array) an, was du an die Seite übergeben hast!

    Einen Kommentar schreiben:


  • jprangenberg
    antwortet
    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!

    Einen Kommentar schreiben:

Lädt...
X