Datensatz wird doppelt abgespeichert!??!

  • Morgen!

    Hab ein Problem dass mir im Moment Kopfschmerzen bereitet weil ich nicht weiß warum es überhaupt auftritt. Führe ich nämlich den unteren Quellcode aus dann speichert er mir den Datensatz der sich in $myarray befindet doppelt in der Datenbank ab, gibt aber die ECHO - Meldung nicht 2mal sondern nur 1mal zurück! Die Funktion sizeof($myarray) gibt den Wert 1 zurück! Wie geht das? Kann mir jemand helfen?

  • Ich werds mal versuchen, aber wie sollte das mein Problem lösen?? Die for-Schleife wird ja 1mal (das ist ja auch richtig!!) durchlaufen. Somit sollte er die mysql Anweisung 1mal ausführen und die ECHO Anweisung 1mal ausführen! Wie man am Screenshot oben sieht speichert das Script aber 2mal - und ich weiß nicht warum!!

  • Wie ich vermutet hatte ergibt auch die foreach Funktion das gleiche Ergebnis! Damit steht fest, dass es definitv nicht an der Art der Schleife liegt! Vielleicht hat ja jemand noch ne zündende Idee!?!

  • wofür steht denn das "next($myarray);" ??? Kannst du das nicht weglassen ?

    Wer andern eine Bratwurst brät, wird selbst zum Bratwurstbratgerät.
    Ron Stoppable

  • Vielleicht war NoOobs Idee gar nicht so schlecht. Zieh doch mal 0.1 ab.

    $x < siteof($myarray)-0.1

    Aber ist eigentlich nur rumgeraten.

    Wer andern eine Bratwurst brät, wird selbst zum Bratwurstbratgerät.
    Ron Stoppable

  • Also generell, könnte ich mir nicht vorstellen, dass es das ganze zweimal abspeichert...
    Vielleicht hast du es aus Versehen zweimal aufgerufen oder so etwas.
    Oder du hast diesen Code in eine Funktion gepackt und rufst die Funktion auf.
    Generell gefällt mir zwar der Code nicht, aber er funktioniert wohl.
    Zum Beispiel rufst du die Werte des Arrays mal mit Eckigen Klammern auf, mal nicht. Generell würd ich auch anders das ganze verarbeiten, aber das ist ja auch wiederum bei jedem anders.

  • Dikra: Das dacht ich mir - denn dort etwas abziehn bringt nichts (schon gar nicht wenn mein Array nur aus 1 Element besteht). Dann wird die Schleife logischerweise gar nicht durchlaufen und es wird somit nichts abgespeichert! Hab das in meiner Verzweiflung ja trotzdem mal ausprobiert! :(

    No0ob: Bei den runden Klammern hab ich mich nur hier beim Posting vertippt! Ich hab das Script auch nicht 2mal aufgerufen! Ich leere immer wieder die Tabelle in meiner Datenbank, rufe das Script 1mal auf und habe 2 Einträge drin! Und keiner weiß warum - das is zum kotzen!

  • Hmm, also ich hab mir das nochmal angesehen und bin über $id gestolpert, eine Variable, die du im Query gar nicht verwendest, daher gehe ich mal davon aus, dass es einmal unter dieser id gespeichert wird und zudem per autoincrement aus der Datenbank nochmal. Sonst fällt mir dazu nichts mehr ein.

    Wer andern eine Bratwurst brät, wird selbst zum Bratwurstbratgerät.
    Ron Stoppable

  • Nein - leider auch nichts! Hab zwar $id definiert aber nirgends verwendet bzw. auch das entfernen aus dem Script hat nichts gebracht! Werd mich einfach weiter spielen müssen! Wenn ich was weiß meld ich mich!

  • Ich weiß jetzt zumindest mit was es zusammenhängt! Und zwar mit einem unset! Dazu mein komplettes Speicherscript:

    Entferne ich dieses unset speichert mir das Script meine Einträge doppelt ab, lass ich es drin, dann speichert es alles nur 1mal (also richtig) ab - aber ich bekomm folgende Fehlermeldung:

    Zitat

    Notice: Undefined index: array in /home/10266/......../spiele_statistik_speichern.php on line 10

    An was kann das denn jetzt liegen? :?:

  • OK! Das unset war es doch nicht!

    Ich habe mein Script wie folgt aufgerufen:

    Zitat


    Bei dieser Methode sind die Datensätze in meinem Array doppelt abgespeichert worden!

    Natürlich muss es so heißen:

    Zitat


    Und seit dem funktioniert wieder alles!

    Weiß aber jetzt jemand warum gerade die mysql Anweisung doppelt ausgeführt wurde und nicht auch die ECHO Anweisung? Wäre interessant zu wissen!

  • Wenn du ein Browserfenster refreshst, wird der Inhalt doch nicht nochmal drangehängt.
    Dennoch werden alle Queries im Hintergrund ein zweites Mal ausgeführt