Daten mit Schleife einfügen

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

  • Daten mit Schleife einfügen

    Habe ein kleines Problem beim einfügen ausgewählter Daten in die DB:

    Daten werden korrekt in einer Tabelle über eine while-Schleife angezeigt:

    while...

    echo "<input type='hidden' name='bezeichnung[]' value='".$bezeichnung."'>";
    echo "<input type='checkbox' name='einreichen[]' value='".$artnr."'></td>";


    Die "gecheckten" Daten sollen nun eingetragen werden:

    if($submit) {
    // Wenn der Submit-Button geklickt wurde ...

    // die Anzahl der markierten Datensaetze ermitteln

    $y=count($einreichen);

    // Für jeden markierten Datensatz
    // den insert-Befehl aufrufen.
    for($x=0;$x<$y;$x++) {
    echo $y;

    mysql_query("insert into bestellung (artnr,positionstext) values ('".$einreichen[$x]."','".$bezeichnung[$x]."')");
    }
    echo "EINGETRAGEN";
    }

    Es wird jetzt auch die richtige Artikelnummer eingetragen,
    leider aber die falsche Bezeichnung:

    Wenn ich den 3. Artikel checke, wird die 1. Bezeichnung eingetragen.
    Wenn ich Artikel 3,5 und 7 markiere, wird Bezeichnung 1,2 und 3 eingetragen.

    Wo könnte der Fehler liegen, ich steh leider aufm Schlauch

  • #2
    Deine abgeschickten Arrays bezeichnung und einreichen haben verschiedene inhalte: bei bezeichnung wird alles übergeben, bei einreichen jedoch nur, was angecheckt wurde.

    Am einfachsten machst du:
    echo "<input type='checkbox' name='einreichen[]' value='".$artnr."&&&".$bezeichnung."'></td>";

    dann:

    for($x=0;$x<count($einreichen);$x++)
    {
    $a=explode("&&&",$einreichen[$x]);
    mysql_query("insert into bestellung (artnr,positionstext) values ('$a[0]', '$a[1]')");
    }

    Kommentar


    • #3
      Super, das funzt wunderbar

      Wie kann ich jetzt noch die richtigen <input type"text"..Felder übergeben?

      Kommentar


      • #4
        http://www.galileocomputing.de/openbook/php4/kapd.htm

        Kommentar


        • #5
          danke für den tipp, das habe ich aber nicht gemeint.

          Mit der ersten hier geposteten schleife konnte man auch text-vars übergeben (z.b. Bestellmenge).

          Allerdings wurde die falsche Zeile übergeben (wie oben beschrieben)

          Jetzt kann ich keine mengen o.ä. übergeben.

          Hat jemand eine Idee???

          Kommentar


          • #6
            Jo, du kannst das punkto übergebenen Variabeln beliebig erweitern. Damit übergibst du dann immer ein in sich zusammengehöriger Datenset.

            echo "<input type='checkbox' name='einreichen[]' value='".$artnr."&&&".$bezeichnung."&&&".$bla."&&&".$bli."'></td>";

            dann:

            for($x=0;$x<count($einreichen);$x++)
            {
            $a=explode("&&&",$einreichen[$x]);
            mysql_query("insert into bestellung (artnr,positionstext,bla,bli) values ('$a[0]', '$a[1]','$a[2]','$a[3]')");
            }

            Wenn nicht das gemeint ist müsstest du genauer definieren, was mit diesen "text-vars" gemeint ist.

            Kommentar


            • #7
              ok, nochmal genauer:

              ich habe eine tabelle ausgegeben

              artikelnummer | bezeichnung | Bestellmenge | Bestellen
              ____________________________________________

              aus db | aus db | inputtype=text| checkbox


              Ich bekomme also artnr und bezeichnung (des Artikels) aus der DB. Dann Trage ich die Bestellmenge ein und drücke die checkbox, um zu sagen, das der artikel bestellt werden soll.


              echo "<input type='text' name='bestellmenge'
              echo "<input type='checkbox' name='einreichen[]' value='".$artnr."&&&".$bezeichnung."&&&".$bestellmenge."'></td>";

              Ziel des aufwandes ist es, eine Artikelliste anzuzeigen, und bestimte artikel aus dieser Liste in einem "Aufwasch" zu bestellen.

              Kommentar


              • #8
                Das wird etwas länger. Das Beispiel unten läuft ganz alleine und zeigt das Prozedere, dass du dann für dein script anpassen müsstest.

                <?php

                if($status==0 or !isset($status))
                {

                $arr[0]=array("2", "feder"); // artikelnr, bezeichnung
                $arr[1]=array("3", "maus");
                $arr[2]=array("5", "brot");
                $arr[3]=array("7", "kippe");
                $arr[4]=array("8", "areal");

                // $arr=deine daten aus der db!!!
                // mit einer for.. schleife auslesen fur anzahl mysql_num_rows()

                echo"<form action=\"".$PHP_SELF."\">";
                echo "<table border>";

                for ($b=0; $b<count($arr); $b++)
                echo "<tr><td>".$arr[$b][0]."</td><td>".$arr[$b][1]."</td><td><input size=\"1\" name=\"text[".$b."] value=\"0\"></td><td><input type=\"checkbox\" name=\"einreichen[]\"

                value=\"".$arr[$b][0]."&&&".$arr[$b][1]."&&&".$b."\"></td><tr>";

                echo "</table>";

                echo "<input type=\"hidden\" NAME=\"status\" value= \"1\">";
                echo "<input type = \"submit\" value=\"weiter\">";

                echo "</form>";
                }

                if($status==1)
                {
                // auswert:

                for($x=0;$x<count($einreichen);$x++)
                {
                $a=explode("&&&",$einreichen[$x]);
                $num=$a[2];
                echo "art=$a[0]; txt=$a[1]; menge=$text[$num]; <br>";
                //mysql_query("insert into bestellung (artnr,positionstext,menge) values ('$a[0]', '$a[1]','$text[$num]'')");
                }

                echo"<form action=\"".$PHP_SELF."\">";
                echo "<input type=\"hidden\" NAME=\"status\" value= \"0\">";
                echo "<input type = \"submit\" value=\"zurück\">";
                echo "</form>";
                }

                ?>

                Du darfst $text nicht sortieren, ansonsten sind deine Schlüssel Geschichte
                Zuletzt geändert von CHnuschti; 17.09.2002, 18:27.

                Kommentar

                Lädt...
                X