Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Post array übergibt nicht alle Werte

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Post array übergibt nicht alle Werte

    Guten Tag zusammen,

    ich bin neu hier und möchte mich dann auch erstmal vorstellen. Ich heiße Michael und habe ein bisschen Erfahrung mit Visual Basic.net und HTML und PHP sind relativ neu für mich. Programmieren habe ich mir selber beigebracht. So viel zu mir...

    Mein Problem ist, das ich mit Post ein array übergebe und manchmal funktioniert es wie gewünscht und in anderen Fällen werden nicht alle Werte übermittelt. Warum das so ist, ist mir unklar und es gibt auch kein festes Muster, so dass ich es irgendwie nachstellen kann.

    Übergeben tue ich das Array auf Basis eines zuvor aus einer Datenbank erstellten Formular mit Eingabefeldern.
    PHP-Code:
    <?php        

        $con 
    mysql_connect("localhost","a","b");
        if (!
    $con)
        {
            die(
    'Could not connect: ' mysql_error());
        }
        
    mysql_select_db("test",$con);
        
    $sql "SELECT ID, Produkt, Preis, Menge, kategorie FROM geraete WHERE kategorie='alkf'";
        
    $erg mysql_query($sql) or die("Fehler:<br>".mysql_error());

        echo 
    "<div id='Produkte'>";
        echo 
    "<form method='post' Action='insert.php'>";

        while(
    $Ergebnis mysql_fetch_object($erg))
         {
            echo 
    "<input class='tb1' type='text' name='Produkt[]' value='".$Ergebnis->Produkt."' readonly>&nbsp; <input class='tb2' type='number' name='ID[]' value=''><br>";
         }

        echo 
    "<br><input type='submit' name='submit' value='bestellen'></form>";    
        echo 
    "</div>";
    ?>
    Das Anzeigen und die Eingabe funktioniert, das Auslesen genau so, aber irgendwas mit diesem Script passt nicht. So gehe ich durch das array:
    PHP-Code:
    //////
    if (!empty($_POST['ID']) AND ($_POST['Produkt']))
        {
            
    $data $_POST['ID'];
            
    $Produkt =$_POST['Produkt'];
            
    $UID $_SESSION['UID'];
            
    $TID $_SESSION['TID'];
         }
     
    //
     
    if (!empty($data) AND ($Produkt)) 
        {
            
    $values array_combine($data$Produkt);
            echo 
    "<pre>";
            
    print_r($values);
            echo 
    "</pre>"
            foreach (
    $values as $menge => $Prod)  
            {
                
    $menge mysql_real_escape_string($menge);
                
    $Prod mysql_real_escape_string($Prod);

                if (
    $menge != ""
                {
                    
    mysqli_query($con,"INSERT INTO Warenkorb (WID, UID, TID, Menge, Produkt, Status) VALUES ('Null','$UID','$TID','$menge','$Prod', 'angelegt')");
                }
    //mysqli_close($con);
            
    }
        }
    // 
    Zum Ergebnis anschauen des Arrays habe ich das print_r eingebaut. Jetzt bin ich ratlos und hoffe zumindest, das mir jemand einen Tipp geben kann, wie ich den Fehler finden kann oder ich das Problem weiter eingrenzen kann um den Fehler zu finden.


  • #2
    schau zuerst ins html , das im Browser ankommt, ob da schon alles drinsteht, dann nimm dir Firebug und schau nach, ob alles in den übermittelten Post-Daten drinsteht
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

    Kommentar


    • #3
      Danke für den Hinweis, Firebug habe ich noch nicht gekannt. Das HTML sieht so aus, wie es aussehen soll und Firebug gibt mir das gleiche Ergebnis aus, wie ich auch mit dem print_r bekomme, nachdem das Post übergeben wird. Hat mich also leider nicht weitergebracht. Trotzdem danke.

      Was ich jetzt eben noch bemerkt habe. wenn es in meiner Form die gesendet wird nur 2 Einträge gibt, dann tritt der Fehler nicht häufig auf. Sind es mehr Einträge also 10-15, dann tritt es immer auf.

      Kommentar


      • #4
        Mein Problem ist, das ich mit Post ein array übergebe und manchmal funktioniert es wie gewünscht und in anderen Fällen werden nicht alle Werte übermittelt.
        Und unser Problem ist das wir keine Gedanken lesen oder Hellsehen können... wie wärs mit Beispielen?

        PHP-Code:
        echo "<input class='tb1' type='text' name='Produkt[]' value='".$Ergebnis->Produkt."' readonly>&nbsp; <input class='tb2' type='number' name='ID[]' value=''><br>"
        Solange du nicht ins ID[] Feld manuell etwas einträgst, wird auch nichts übertragen...
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Selbstverständlich, hätte ich auch gleich machen können...

          Folgender Fall hat funktioniert:



          Hier hat es nicht funktioniert:



          Und warum steht da immer das Wasser noch drin? Das unterdrücke ich beim schreiben in die Datenbank.

          Kommentar


          • #6
            PHP-Code:
            $values array_combine($data$Produkt); 
            Du kombinierst verkehrt herum..., das $Produkt Array enthält die Schlüssel (sie sollten eindeutig sein)!

            Mach dir klar, wie array_combine arbeitet (und das ein wiederkehrender Schlüssel beim zweiten Auftreten den vorherigen Eintrag überschreibt).
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Oh man, da könnte ich mich glatt über mich selber aufregen. Vielen Danke, jetzt ist auch alles logisch.

              Kommentar

              Lädt...
              X