Update-Befehl fehlerhaft

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

  • Update-Befehl fehlerhaft

    Hallöchen,
    hier erstmal der Quelltext:

    PHP-Code:
                       include('connect.php');
        
    //Hole Partnern
        
    $partner_befehl="SELECT * FROM werbung WHERE aktiviert='1' AND einblendungen <= gebucht-1";
        
    $partner_abfrage=mysql_query($partner_befehl);
        while(
    $partner=mysql_fetch_array($partner_abfrage)) {
            
    $moegliche_zahlen.=$partner['id']." ";
            echo(
    'Mögliche Zahlen (in String):'.$moegliche_zahlen.'<br>');
        }
        
    $moegliche_zahlen=chop($moegliche_zahlen);
        
    $zahlen=explode(" ",$moegliche_zahlen);
        echo(
    'Elemente in Array $zahlen: '.count($zahlen).'<br>');
        
    shuffle($zahlen);
        
    $id=$zahlen[0];

        echo(
    $id.'<br>');

        
    //Hole Daten für ID
        
    $partnerdaten_befehl="SELECT * FROM werbung WHERE id='".$id."'";
        
    $partnerdaten_abfrage=mysql_query($partnerdaten_befehl);
        
    $partnerdaten=mysql_fetch_array($partnerdaten_abfrage);


        
    //Erhöhe Einblendungen um 1
    $einblendungen_vorher=$partnerdaten['einblendungen'];
    echo(
    'Einblendungen vorher:  '.$einblendungen_vorher.'<br>');
    $einblendungen_nachher=$einblendungen_vorher+1;
    echo(
    'Einblendungen nachher: '.$einblendungen_nachher.'<br>');
    $werbepartner="UPDATE werbung SET einblendungen=$einblendungen_nachher WHERE id='".$id."'";
    echo(
    'Qry: '.$werbepartner.'<br>'); 
    Mein Problem:
    Tja, dass wüsste ich gerne. Im Prinzip läuft das Script selber einwandfrei. Die Abfragen und Variablenbelegungen sind 100% richtig. Er holt den richtigen Datensatz zur richtigen ID und erhöht die einblendungen korrekt (um 1).

    Wenn ich aber nun das Script ausführe, auf die erste Datenbank Abfrage beispielsweise die Zeilen (mit der ID) 1,2,4 und 7 zutreffen (siehe $zahlen), die ZufallsID 4 ist, dann erhöht er nicht nur die Einblendungen bei 4, sondern (glaube willkürlich) auch bei einem oder mehr anderen Datensätzen.

    Wenn ich den Update-Befehl manuel in PhpMyAdmin ausführe funktioniert es einwandfrei.

    Darausschließe ich, dass der Fehler weder im Script, noch in der Datenbank liegt, sondern irgendwo in den tieferen Ebenen....

    Kennt jemand das Problem bzw. kann mir helfen?

    Grüße,
    Mordred
    Zuletzt geändert von Mordred; 26.12.2004, 19:23.

  • #2
    warum nimmst Du erst alle zahlen in einen string um danachin ein array zu packen und nicht direkt in ein array?
    Überhaupt is der code mal ziemlich aufgebläht

    $einblendungen_vorher=$partnerdaten['einblendungen'];
    $einblendungen_nachher=$einblendungen_vorher+1;
    $werbepartner="UPDATE werbung SET einblendungen=$einblendungen_nachher WHERE id='".$id."'";

    da sind einige zeilen überflüssig
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Ok, mag sein, dass du da recht hast. Aber für die Ausführung / das Ergebnis ist das ja erstmal unwichtig Wenn es so laufen würde wie es soll kann ich es immernoch verkürzen.....

      Kommentar


      • #4
        naja aber ich hab zBkeine Lust mir Deinen kaudercode anzuschauen... und andere hier sicher auch...
        schon ein debugging versucht?
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Original geschrieben von MelloPie
          schon ein debugging versucht?
          Wenn du damit meinst: Alles ausprobieren was mir dazu einfällt, dann ja, ansonsten nein

          Kommentar


          • #6
            kannst du mal den code so formatieren, dass man nicht scrollen muss?
            wäre cool.

            und nimm die @'s raus.

            Kommentar


            • #7
              Klar, schon passiert.

              Aber ohne @'s gibts trotzdem keine Fehlermeldungen

              Kommentar


              • #8
                überprüfst Du soll/ist nach jedem aufruf?
                kein anderer code beeinflusst irgendwie Deine daten?
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Nein, keine Session oder andere includes drumrum (nur connect).

                  Ich prüfe die Werte in der DB (und schreib sie auf) vorher. Dann Script Ausführung und nacher wieder Werteprüfung.

                  edit:
                  hab auch testweise die variablen am ende des scripts wieder freigegeben, doch das tut der sache keinen abbruch.

                  Kommentar


                  • #10
                    dann erhöht er nicht nur die Einblendungen bei 4, sondern (glaube willkürlich) auch bei einem oder mehr anderen Datensätzen.
                    ist schwer zu glauben, diese willkür.
                    vielleicht kannst du versuchen, das verhalten näher zu analysieren.
                    wenn du die query am ende ausgibst und sie dann in myadmin testest, klappts dann?

                    Kommentar


                    • #11
                      PHP-Code:
                      $werbepartner="UPDATE werbung SET einblendungen=$einblendungen_nachher WHERE id='".$id."'";
                      echo(
                      'Qry: '.$werbepartner.'<br>');
                      mysql_query($werbepartner); 
                      Wenn ich den Update-Befehl manuel in PhpMyAdmin ausführe funktioniert es einwandfrei.
                      Die "wilkür" untersuche ich dann mal genauer

                      edit: zur wilkür:
                      Ich habe 5 Datensätze, ID's 1,2,4,6,7 (bewusst lücken gemacht).

                      Davon sind die ID's 1,2,4 und 7 durch
                      PHP-Code:
                      $partner_befehl="SELECT * FROM werbung WHERE aktiviert='1' AND einblendungen <= gebucht-1"
                      möglich.

                      Wenn ich diese ID's selbst fest im Script eingebe, erhöht er nur den Datensatz mit der ID (also korrekt). Aber nicht um 1, sondern um 2.

                      Wenn ich per Zufall zwischen den vieren wechsel, dann erhöht er auch um 2.

                      Bis vor kurzem hatte ich noch den Fehler, dass das Array einen weiteren, leeren Wert enthielt. Wenn dieser aufgerufen wurde und dannach (beim x-durchlauf) eine gültige ID gewählt wurde, hat er mehrere Einträge geändert.....
                      Zuletzt geändert von Mordred; 26.12.2004, 19:43.

                      Kommentar

                      Lädt...
                      X