Ein insert-Problem

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

  • Ein insert-Problem

    Aus irgendwelchen unerklärlichen Gründen wird header("location:warenkorb.php") in keiner Funktion mehr ausgeführt :-( Die Funktionen werden über action aufgerufen, also wenn steuere ich sie im Form Tag an, das klappt soweit ganz gut.
    if ($_GET["action"] == "delete");
    if ($_GET["action"] == "edit");
    usw.

    Wenn ich nun versuche die Funktion aufzurufen, dann erscheint eine leere Seite mit der Url warenkorb.php?action=insert oder
    warenkorb.php?action=edit&wkid=19
    nun habe ich gedacht irgendwo ein Fehler. ABER wenn ich in der Datenbank schaue, dann wird die Funktion ausgeführt und wenn ich dann nur warenkorb.php aufrufe, dann sieht es so aus als wenn alles seinen richtigen Weg gegangen ist.

    Weiß jemand Rat, ich wäre sehr dankbar ;D



    Hier ein Beispielcodeschnipsel:
    PHP-Code:
    if ($menge == "0"header("location:warenkorb.php");
    else {

    $result mysql_query("SELECT artikelname, artikelnummer, preis FROM artikel WHERE aid = '$aid'");
    $show mysql_fetch_array($result);

    $artikelname $show["artikelname"];
    $artikelnummer $show["artikelnummer"];
    $preis $show["preis"];

    $result mysql_query("SELECT wkid FROM warenkorb WHERE sid = '$sid' AND aid = '$aid'");
    $num mysql_num_rows($result);

    if (
    $num == "0"mysql_query("INSERT INTO  warenkorb VALUES
    ('','
    $sid','$aid','$artikelname','$artikelnummer','$menge','$preis')");
    else 
    mysql_query("UPDATE warenkorb SET menge=menge+$menge WHERE sid = '$sid' AND 
    aid = '
    $aid'");

    header("location:warenkorb.php");


  • #2
    Du hast dein error_reporting aber auch an?
    Vor dem Code wird nichts anderes ausgegeben?
    if()
    else{

    }

    steht hoffentlich auch nicht so da drin?!!
    Für Rechtschreibfehler übernehme ich keine Haftung!

    Kommentar


    • #3
      Report ist an und gibt nichts aus!?

      Die angeben Funktion war nur ein Auszug. Habe sie alle gleich aufgebaut und vielleicht ist da ja irgendwo ein logischer Fehler? Das komisch ist nur das header("location:warenkorb.php") nicht ausgeführt wird. Alles andere funzt ja angeblich. Es wird korrekt in die Datenbank eingetragen und geändert.

      Alle Varibalen stimmen. Habe bestimmt schon 20 mal alles nachgeschaut, von hinten nach vorne gelesen... Es will einfach nicht klappen :-(

      Kommentar


      • #4
        So nochmal zum besseren verständnis, hier ist der komplette obere Teil!

        PHP-Code:
        <?

        include("../supercon.php");

        if(!isset($_GET["action"])) $_GET["action"] = "";

        $sid = $_SESSION["sid"];

        if ($_GET["action"] == "insert"){

        $aid = $_POST["aid"];
        $menge = $_POST["menge"];

        if ($menge == "0") header("location:warenkorb.php");
        else {

        $result = mysql_query("SELECT artikelname, 
        artikelnummer, preis FROM artikel WHERE aid = '$aid'");

        $show = mysql_fetch_array($result);

        $artikelname = $show["artikelname"];
        $artikelnummer = $show["artikelnummer"];
        $preis = $show["preis"];

        $result = mysql_query("SELECT wkid FROM  warenkorb WHERE sid = '$sid' AND aid = '$aid'");
        $num = mysql_num_rows($result);

        if ($num == "0") mysql_query("INSERT INTO  warenkorb 
        VALUES('','$sid','$aid','$artikelname','$artikelnummer','$menge','$preis')");
        else mysql_query("UPDATE warenkorb SET 
        menge=menge+$menge WHERE sid = '$sid' AND aid = '$aid'");

        header("location:warenkorb.php");
        }
        }

        if ($_GET["action"] == "edit"){

        $wkid = $_GET["wkid"];
        $menge = $_POST["menge"];

        if ($menge == "0"){
        mysql_query("DELETE FROM  warenkorb WHERE wkid = '$wkid'");
        header("location:warenkorb.php");
        }else{
        mysql_query("UPDATE  warenkorb SET menge = '$menge' WHERE wkid = '$wkid'");
        header("location:warenkorb.php");
        }
        }

        if ($_GET["action"] == "delete"){

        $wkid = $_GET["wkid"];

        mysql_query("DELETE FROM  warenkorb WHERE wkid = '$wkid'");
        header("location:warenkorb.php");
        }


        if ($_GET["action"] == "delete_all"){
        mysql_query("DELETE FROM  warenkorb WHERE sid = '$sid'");
        header("location:warenkorb.php");
        }


        if ($_GET["action"] == ""){

        $result = mysql_query("SELECT wkid FROM  warenkorb WHERE sid = '$sid'");
        $num = mysql_num_rows($result);

        if ($num == "0") $warenkorb = "leer";
        else $warenkorb = "voll";
        ?>

        <html>
        ...
        ...
        ....
        </html>

        Kommentar


        • #5
          dann schau mal mit einem http sniffer, ob der header tatsächlich abgeschickt wird.
          außerdem ist die schreibweise nicht korrekt und die url sollte absolut sein.

          gibt es bei dir output buffering? setze stets ein exit() nach dem header().

          belegt eine testausgabe die vermutung, in welchen zweig du gerätst?

          Kommentar


          • #6
            Debuggen! Lern's endlich!

            mach mal vor jedem header() ein echo 'test';

            was passiert?

            Kommentar


            • #7
              Bei Fehler 2 bleibt alles stehen!

              PHP-Code:
              $result mysql_query("SELECT artikelname, artikelnummer, preis FROM artikel WHERE aid = '$aid'");
              $show mysql_fetch_array($result) or die('FEHLHER 1');

              $artikelname $show["artikelname"];
              $artikelnummer $show["artikelnummer"];
              $preis $show["preis"];

              $result mysql_query("SELECT wkid FROM warenkorb WHERE sid = '$sid' AND aid = '$aid'");
              $num mysql_num_rows($result) or die('FEHLER 2');

              if (
              $num == "0"mysql_query("INSERT INTO warenkorb VALUES
              ('','
              $sid','$aid','$artikelname','$artikelnummer','$menge','$preis')");
              else 
              mysql_query("UPDATE warenkorb SET menge=menge+$menge WHERE sid = '$sid' AND 
              aid = '
              $aid'") or die('FELHER 3');

              header("location:warenkorb.php"); 
              Zuletzt geändert von Revolverheld; 13.03.2007, 19:09.

              Kommentar


              • #8
                PHP-Code:
                $result mysql_query("SELECT wkid FROM warenkorb WHERE sid = '$sid' AND aid = '$aid'");
                $num mysql_num_rows($result) or die('FEHLER 2'); 
                sag uns doch mal warum? es gibt kein resultat (num_rows=0) also keine einträge in der datenbank oder ein fehler in der query ... http://de.php.net/manual/de/function.die.php
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar

                Lädt...
                X