Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelter Eintrag

Einklappen

Neue Werbung 2019

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

  • mewking
    hat ein Thema erstellt Doppelter Eintrag.

    Doppelter Eintrag

    Hallo, ich nutze folgenden SQL-Code, um in meine Tabelle einen Eintrag zu schreiben:
    PHP-Code:
    $sql "INSERT INTO `items` (`itemID` ,`itemname` ,`user` ,`used`)VALUES (NULL , 'Trank', 'mewking', '0');"
    Jedoch kommt es dann zu einem doppelten Eintrag. mysql_error() gibt dazu nichts aus und auch mysql_affected_rows gibt 1 zurück.
    Wo liegt da das Problem =?

  • ChrisB
    antwortet
    Zitat von mewking Beitrag anzeigen
    aber dann müsste ja eig. die ganze seite zweimal angezeigt werden, was es aber nicht tut.
    Quatsch - wenn du die Adresse eines HTML-Dokumentes bspw. im src-Attribut eines Bildes angibst - dann gibt es da nichts „anzuzeigen“, höchstens den broken image-Platzhalter.

    der ganze code:
    Ist für'n Eimer.

    Wir kennen die Werte der Variablen/Datenbankinhalte deines Scriptes nicht, also wissen wir auch nicht, was das letztendlich für eine Ausgabe bewirkt.

    (Ausserdem ist es sowieso ziemlich unverschämt, einfach so viel Code irgendwo abzuladen, mit einem impliziten „hier, sucht mal meinen Fehler“ verbunden.)

    Wenn du noch weitere Hilfe dabei haben willst, das Problem zu analysieren - dann nenne bitte die Adresse, wo man sich das ganze online anschauen kann.

    Einen Kommentar schreiben:


  • mewking
    antwortet
    Zitat von ChrisB Beitrag anzeigen
    Häufige Ursache für sowas ist, dass irgendwo eine externe Ressource (Bild, Script, CSS, ...) eingebunden wird, deren Adress-Attribut aber nur einen Leerstring als Inhalt hat.
    Auf Grund der Regeln, wie relative Pfadangaben aufzulösen sind, setzt der Browser das mit der Adresse des aktuellen Dokumentes gleich - und fordert dann für dieses Bild/Script/CSS eben genau die gleiche Ressource noch mal in einem zweiten Request erneut an.
    aber dann müsste ja eig. die ganze seite zweimal angezeigt werden, was es aber nicht tut.
    der ganze code:
    nopaste.info - free nopaste script and service
    und dann noch...
    @soundbear: hier ist es jetzt ja js-code ist nur für weiterleiten, und das nur in bestimmten ifs vorgesehen.
    @feeela: zweifacher eintrag, nicht endlosschleife o.O

    Einen Kommentar schreiben:


  • soundbear
    antwortet
    Ohne das Skrip gesehen zu haben, können wir alle nur spekulieren.
    Von daher macht das alles super wenig Sinn.
    Vielleicht hat er auch ein JScript eingebaut, was die Seite neu lädt - weiß doch niemand. Kann hunderte Ursachen haben.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Es reicht ja schon

    file_a.php

    PHP-Code:
    <?php
    echo 'A';
    include(
    'file_b.php')
    include(
    'file_c.php')
    ?>
    file_b.php
    PHP-Code:
    <?php
    echo 'B';
    include(
    'file_c.php')
    ?>
    file_c.php
    PHP-Code:
    <?php
    // DB OPs
    ?>

    Einen Kommentar schreiben:


  • feeela
    antwortet
    Zitat von mewking Beitrag anzeigen
    diese datei inkludiert nur dateien ohne schleifen, und wird sinnvollerweise als startseite nihct inkludiert.
    das break; war suche nach internen schleifen
    Was gemeint gewesen sein könnte:

    file_a.php
    PHP-Code:
    <?php
    echo 'A';
    include(
    'file_b.php')
    ?>
    file_b.php
    PHP-Code:
    <?php
    echo 'B';
    include(
    'file_a.php')
    ?>
    Simsalabim, schon hast du eine Endlosschleife...

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Sorry hier wurde gesagt „irgendwie scheint sich das Script neuzuladen“ und dann empfohlen „Na dann brech doch beim zweiten Laden ab“, bzw. „Na dann guck doch, ob der Eintrag schon...“

    Das ist Symptombekämpfung, die man auch nicht mit dem hohen Stundenlohn eines Programmierers rechtfertigen kann.

    „Mein Mailscript schickt jede Mail nicht einmal sondern tausend mal“ - „Na dann mach doch ein die() nach dem mail-Kommando“

    „Mein Backend löscht nicht einen Artikel sondern immer gleich alle“ - „Na dann kopier doch vorher die anderen woanders hin und spiel sie hinterher wieder ein.

    Echt pragmatisch, oder?

    Einen Kommentar schreiben:


  • soundbear
    antwortet
    Zitat von nikosch Beitrag anzeigen
    Wenn die Symptombekämpfung weniger CPU beansprucht und/oder übersichtlicher umzusetzen ist, sollte man diese vorziehen. So ein Quark. Offensichtlich ist das ja ein Programmfehler.
    Ist es nicht - kommt auf den Kontext an! Symptombekämpfung hat nix mit Programmierfehlern zu tun, sondern halt mit Symptomen. Wenn zB jemand wie wild bei einer Abfrage auf "Vote" klickt, ist es sinnvoller den Eintrag in die DB abzuprüfen und dann den Eintrag zu verhindern, als umständlich andere Dinge womöglich per JScript zu klären. In der agilen Programmierung zB ist "fertig werden" das oberste Gebot. Zeit kostet heute viel Geld!

    Klar, wenn man natürlich offensichtliche Fehler in seinem Skript hat, muss man die ausbessern. Poste doch mal das gesamte Skript - so schwer kann das ja nicht sein.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von mewking Beitrag anzeigen
    ich habe jetzt herausgefunden was das problem war, jedoch nicht warum.
    die seite ruft sich beim laden zweimal auf,
    Na dass das höchstvermutlich das Problem ist, hab ich dir doch gleich gesagt ...


    Häufige Ursache für sowas ist, dass irgendwo eine externe Ressource (Bild, Script, CSS, ...) eingebunden wird, deren Adress-Attribut aber nur einen Leerstring als Inhalt hat.
    Auf Grund der Regeln, wie relative Pfadangaben aufzulösen sind, setzt der Browser das mit der Adresse des aktuellen Dokumentes gleich - und fordert dann für dieses Bild/Script/CSS eben genau die gleiche Ressource noch mal in einem zweiten Request erneut an.

    Einen Kommentar schreiben:


  • mewking
    antwortet
    diese datei inkludiert nur dateien ohne schleifen, und wird sinnvollerweise als startseite nihct inkludiert.
    das break; war suche nach internen schleifen

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    wie schon gesagt:
    keine schleife!
    Wie schon gesagt: Auch aus includes können Schleifen entstehen. Das hat mit break; dann nichts zu tun.

    Wenn die Symptombekämpfung weniger CPU beansprucht und/oder übersichtlicher umzusetzen ist, sollte man diese vorziehen.
    So ein Quark. Offensichtlich ist das ja ein Programmfehler.

    Einen Kommentar schreiben:


  • mewking
    antwortet
    wie schon gesagt:
    keine schleife!
    ich habe jetzt herausgefunden was das problem war, jedoch nicht warum.
    die seite ruft sich beim laden zweimal auf, aber ich finde dafür keine ursache außerhalb
    des if-bereichs, da es ja bei allen ifs der fall ist.

    Einen Kommentar schreiben:


  • soundbear
    antwortet
    Wenn die Symptombekämpfung weniger CPU beansprucht und/oder übersichtlicher umzusetzen ist, sollte man diese vorziehen.

    Aber wie auch immer: Er wollte Lösungen und keine Grundsatzdiskussion.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von soundbear Beitrag anzeigen
    ganz einfach vorher eine Select-Abfrage mit LIMIT 0,1 zum Testen. Falls es den Datensatz schon gibt, einfach weitermachen, wenn nicht anlegen ...
    Das ist immer noch Symptombekämpfung.

    Einen Kommentar schreiben:


  • soundbear
    antwortet
    Aso, dachte, dass der Eintrag auch doppelt rein soll.

    Dann entweder den Fehler in der Schleife suchen oder ganz einfach vorher eine Select-Abfrage mit LIMIT 0,1 zum Testen. Falls es den Datensatz schon gibt, einfach weitermachen, wenn nicht anlegen ...

    Einen Kommentar schreiben:

Lädt...
X