UDATE per schleife geht nicht!

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

  • UDATE per schleife geht nicht!

    Hallo Alle zusammen!

    Ich habe eine Frage. Ich lasse in einer while schleife artikel aus ein warenkorb ausgeben. Jetzt will ich das man mit einmal alle Mengen im Warenkorb ändern kann. Leider funktioniert es bei mir nicht richtig. Das Problem ist, das mein Provider keine Fehlermeldungen ausgibt und ich daher nicht gucken kann was das fürn fehler sein könnte. Ich selber bin einige male über mein quelltext gegangen und habe versucht alles zu verbessern, war aber nichts. Daher werde ich mal den quelltext hier reinschreiben und hoffen das ihr wisst, warum er die Datenbank nicht updatet.

    thx im vorraus.

    PHP-Code:
    <?
    include("config.php");
    if (isset($_POST['aktualisieren'])) {
    $id = $_POST['id'];
    $anzahl = $_POST['anzahl'];
    for($i=0; $i<sizeof($id); $i++)
    $sql_update = "UPDATE warenkorb SET menge='".$anzahl[$i]."' WHERE id='".$id[$i]."'";
    $result_update = mysql_query($sql_update,$verbindung);
    header("Location: warenkorb.php");
    }
    $warenkorb = "SELECT id,artikel_nr,menge FROM warenkorb WHERE 
    kunden_cookie='".$cookie_nick."' ORDER by id desc";
    $result_warenkorb = mysql_db_query($db,$warenkorb,$verbindung);
    ?>
    <html>

    <head>
    <meta http-equiv="Content-Language" content="de">
    <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Neue Seite 2</title>
    </head>

    <body bgcolor="#EFF2FA">

    <p align="center">
    <img border="0" src="./images/warenkorb.jpg" width="338" height="65"></p>
    <p align="center"><font face="Arial">Es befinden sich folgende Artikel im
    Warenkorb</font></p>
    <p align="center">&nbsp;</p>
    <form method="POST" action="<? echo $_SERVER['PHP_SELF']; ?>">
      <table border="1" cellpadding="0" cellspacing="0" 
    style="border-collapse: collapse" bordercolor="#A2B1E1" 
    width="100%" id="AutoNumber1">
        <tr>
          <td width="6%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Anzahl</font></b></td>
          <td width="11%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Art-Nr</font></b></td>
          <td width="11%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Hersteller</font></b></td>
          <td width="36%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Bezeichnung</font></b></td>
          <td width="6%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Maßstab</font></b></td>
          <td width="15%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Einzelpreis</font></b></td>
          <td width="15%" bgcolor="#364B96"><b>
          <font face="Arial" size="2" color="#FFFFFF">Gesamt</font></b></td>
        </tr>
        <?
        // Auslesen der Artikel aus der Datenbank
        while (list($id,$artikel_nr,$menge) = mysql_fetch_row($result_warenkorb)) {
        $artikel = "SELECT id,art_nr,hersteller,bezeichnung,material,kategorie,
    image,image_breite,image_hoehe,massstab,preis,sonderangebot 
    FROM artikel WHERE art_nr='".$artikel_nr."'";
        $result_artikel = mysql_db_query($db,$artikel,$verbindung);
        list($id,$art_nr,$hersteller,$bezeichnung,$material,$kategorie,
    $image,$image_breite,$image_hoehe,$massstab,$preis,
    $sonderangebot) = mysql_fetch_row($result_artikel);
        $gesamtpreis = $menge * $preis;
        ?>
        <tr>
          <td width="6%" bgcolor="#C4CEEC"><input type="text" name="anzahl[]" size="5" 
    value="<? echo $menge; ?>"></td>
          <td width="11%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $artikel_nr; ?></font></td>
          <td width="11%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $hersteller; ?></font></td>
          <td width="36%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $bezeichnung; ?></font></td>
          <td width="6%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $massstab; ?></font></td>
          <td width="15%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $preis; ?> €</font></td>
          <td width="15%" bgcolor="#C4CEEC"><font face="Arial" size="2">
    <? echo $gesamtpreis; ?> €</font></td>
        </tr>
        <?
        }
        ?>
      </table>&nbsp;<p>&nbsp;</p>
      <table border="0" cellpadding="0" cellspacing="0" 
    style="border-collapse: collapse" bordercolor="#111111" 
    width="100%" id="AutoNumber3">
        <tr>
          <td width="25%">&nbsp;</td>
          <td width="25%">&nbsp;</td>
          <td width="25%" bgcolor="#FF0000">
          <p align="right"><font face="Arial" size="6" color="#FFFFFF">Warenwert:</font></td>
          <td width="25%" bgcolor="#FF0000"><font size="6" face="Arial">&nbsp;</font>
    <font face="Arial" size="6" color="#FFFFFF">99,99
          €</font></td>
        </tr>
      </table>
      <p align="center"><br>
      </p>
      <table border="0" cellpadding="0" cellspacing="0" 
    style="border-collapse: collapse" bordercolor="#111111" 
    width="100%" id="AutoNumber2">
        <tr>
          <td width="25%">&nbsp;</td>
          <td width="25%">
          <p align="center"><input type="image" src="./images/aktualisieren.gif" 
    name="aktualisieren" value="Warenkorb Aktualisieren"></td>
          <td width="25%">
          <p align="center">
          <img border="0" src="./images/bestellen.gif" width="100" height="32"></td>
          <td width="25%">&nbsp;</td>
        </tr>
        <tr>
          <td width="25%">&nbsp;</td>
          <td width="25%">
          <p align="center"><font face="Arial" size="2">Wenn Sie Änderungen bei der<br>
          Stückzahl vorgenommen haben, <br>
          zunächst hiermit aktualisieren.<br>
          Um Artikel zu löschen, geben <br>
          Sie bitte bei Menge eine &quot;0&quot; ein.</font></td>
          <td width="25%">&nbsp;</td>
          <td width="25%">&nbsp;</td>
        </tr>
      </table>
    </form>
    <p align="center">&nbsp;</p>

    </body>

    </html>
    Zuletzt geändert von MaWo-soft; 04.11.2004, 15:55.

  • #2
    PHP-Code:
    echo '<pre>';
    print_r($_POST);
    echo 
    '</pre>'
    mach das mal und schau dir an, was du in anzahl stehen hast


    und brich bitte vorher deinen beitrag um, ich hasse es weiter nach rechts scrollen zu müssen als mein browserfenster breit ist
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hi!

      Danke erst mal für deine Hilfe. Ich habe da die Zeilenumbrüche reingemacht, hoffe man kommt noch mit klar!

      folgendes hat er mit ausgegeben

      PHP-Code:
      Array
      (
          [
      anzahl] => Array
              (
                  [
      0] => 1
                  
      [1] => 1
              
      )

          [
      aktualisieren_x] => 80
          
      [aktualisieren_y] => 11

      Kommentar


      • #4
        und jetzt vergleichst du bitte ob für $_POST['anzahl'] genauso viel werte wie für $_POST['id'] angezeigt werden...
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Wenn ich das jetzt richtig verstanden habe ist, ob er genauso viel anzeigt wie geändert werden sollen!

          Ja er zeigt 2 stück an und es sollen 2 geändert werden!

          dann zeigt er aber [0] => 1 und [1] => 1 wenn ich das richtig interpretiere sind die in Klammern die ids, die wären falsch, sorry habe die letzten tage und nächte durchprogrammiert, und bin derzeit nicht so gut im überlegen! Bzw. nen klaren kopf fassen.

          Ich hoffe es ist das was du meintest.

          Danke nochmals für die schnelle hilfe!

          Kommentar


          • #6
            du greifst auf $_POST['id'] und auf $_POST['anzahl'] zu

            bei deiner ausgabe des inhalts von $_POST taucht $_POST['anzahl'] auf, $_POST['id'] aber nicht. wäre es möglich, dass es dadran liegt?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hi, stimmt id wurde nicht mitübergeben!

              Das habe ich jetzt geändert! ID wird jetzt auch angezeigt.

              PHP-Code:
              Array
              (
                  [
              id] => Array
                      (
                          [
              0] => 2
                          
              [1] => 1
                      
              )

                  [
              anzahl] => Array
                      (
                          [
              0] => 5
                          
              [1] => 3
                      
              )

                  [
              aktualisieren_x] => 59
                  
              [aktualisieren_y] => 6

              Aber in der DB will er das immer noch nicht änder!

              Kommentar


              • #8
                Re: UDATE per schleife geht nicht!

                Original geschrieben von MaWo-soft
                PHP-Code:
                for($i=0$i<sizeof($id); $i++)
                $sql_update "UPDATE warenkorb SET menge='".$anzahl[$i]."' WHERE id='".$id[$i]."'";
                $result_update mysql_query($sql_update,$verbindung);
                header("Location: warenkorb.php");

                dieser header ist zwar nicht korrekt (absoluter URL ist vorgeschrieben!) - aber trotzdem steigt dein script vermutlich an dieser stelle schon aus, ohne ggf. weitere schleifendurchläufe auszuführen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Jo stimmt mit dem header, habe ich gar nicht mehr dran gedacht! Aber der ist auch derzeit auskommentiert.

                  hm jo der scheint mit der schleife nichts zu machen!

                  So wie ich mir den quelltext angeguckt habe, scheint er zwar die daten zu übergeben, aber nicht die schleife abzuarbeiten.

                  im array steht etwas von [aktualisieren_x] => 59 hat dieses x und y dort was zu bedeuten? da er ja die schleife nur anfängt, wenn der befehl aktualisieren kommt.

                  bye MaWo-Soft

                  Kommentar


                  • #10
                    Original geschrieben von MaWo-soft
                    im array steht etwas von [aktualisieren_x] => 59 hat dieses x und y dort was zu bedeuten?
                    *seufz*, das sollte sich doch aber langsam mal rumgesprochen haben ...

                    http://php-faq.de/q/q-formular-image.html
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Danke für den Link, ich benutze nicht oft, bilder als button daher war mir das nicht bekannt! Jetzt ändert er den 1. Eintrag in der Datenbank, aber den 2 nicht.

                      Naja muss erst mal weg, werde mich nachher weiter drum kümmern!

                      Danke nochmal für die hilfe!

                      Kommentar


                      • #12
                        Danke, alles klapt jetzt!

                        Ich hatte ein {} vergessen zu machen. Daher hat er nur eins genommen und nicht alle.

                        Kommentar

                        Lädt...
                        X