Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MySQL Doppeleintrag bei INSERT (https://www.delphipraxis.net/122396-mysql-doppeleintrag-bei-insert.html)

MSSSSM 15. Okt 2008 13:41


MySQL Doppeleintrag bei INSERT
 
Hallo Community des DP-FoRuMs!

Ich habe folgenden Code, und dazu die Frage: Warum kommen dann zwei Einträge mit 1-3 Sekunden
Unterschied?

Code:
if ($_GET['mode']=='view' && (is_numeric($_GET['id']))) {
   echo "<h3>Ticket $_GET[id]</h3><hr />

";
   $query = mysql_query("SELECT zeit,subject,message,geschlossen FROM awm_tbl_tickets WHERE id_ticket = $_GET[id]");
   $row = mysql_fetch_object($query);
 
   $row->message = nl2br($row->message);        
   $query = mysql_query("SELECT zeit,subject,message,id_user_from FROM awm_tbl_tickets WHERE id_ticket_main = $_GET[id]");      
   while ($row_t = mysql_fetch_object($query)) {
     $row_t->message = nl2br($row_t->message);
       if ($row_t->id_user_from == $id_user) {
         $theuser = $username;
       } else {
         $theuser = "Support";
         
     
   } 
} elseif ($_GET['mode']=="answer" && !empty($_POST['message']) && !empty($_POST['subject']) && is_numeric($_GET['id'])) {
      $zeit = time();
      $xx = mysql_query("INSERT INTO awm_tbl_tickets (id_ticket_main,zeit,id_user_from,subject,message)
                         VALUES  
                         ($_GET[id],$zeit,$id_user,'$_POST[subject]','$_POST[message]')");
      if ($xx) {
          echo "
         

<fieldset><legend>Antwort gesendet!</legend>

</label>
          Die Antwort wurde gesendet!

<label>Wenn ihr Browser die automatische Weiterleitung nicht unterst&uuml;tzt, klicken sie bitte <a href=\"ticket.php?mode=view&id=$_GET[id]\">hier</a></label></fieldset>
          ";
      }   
}

Also, ich habe es auch schon mit einem UNIQUE Index versucht, da die Einträge aber 1-5 Sekunde Unterschied haben gings nicht.
(Ich habe vom Code lediglich die echo Ausgaben weggelassen!)


Danke, Marius!


Edit: Der Code ist von mir, das habe ich geschrieben.

nahpets 15. Okt 2008 13:47

Re: MySQL Doppeleintrag bei INSERT
 
Hallo,

weiß nich', vermute, dass die Anfrage beim Webserver 2 mal ankommt. Schau doch mal in die Logs, ob diese Vermutung stimmt, dann liegt der Fehler nicht in Deinem Code, sondern in der Art, wie die Anfrage(n) beim Webserver ankommen. Die Zeitverzögerung läßt drauf schließen, dass hier zwei Anfragen ankommen.

MSSSSM 15. Okt 2008 13:54

Re: MySQL Doppeleintrag bei INSERT
 
Stimmt...
Code:
87.147.99.61 - - [15/Oct/2008:12:52:12 +0000] "POST /de/game/ticket.php?mode=answer&id=1 HTTP/1.1" 200 5400 "http://web0.p013.purple.fastwebserver.de/de/game/ticket.php?mode=view&write=1&id=1" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"


----------------------




87.147.99.61 - - [15/Oct/2008:12:52:15 +0000] "POST /de/game/ticket.php?mode=answer&id=1 HTTP/1.1" 200 5400 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
Aber das passiert bei anderen POSTs von anderen Seiten von AWM nicht...
Wie kann ich das beheben?
:evil:

Marius

nahpets 15. Okt 2008 14:59

Re: MySQL Doppeleintrag bei INSERT
 
hm, weiß nich:

Fehler in der Seite, so dass der Browser meint zweimal antworten zu müssen.
Tritt das Problem mit jedem Browser auf oder nur mit einem speziellen.

id_ticket ist wohl 'ne eindeutige ID.

Bei
Code:
} elseif ($_GET['mode']=="answer" && !empty($_POST['message']) && !empty($_POST['subject']) && is_numeric($_GET['id']))
per Select prüfen, ob es zu dem id_ticket in den letzten Sekunden schon was gab, wenn ja, nicht einfügen sonst doch einfügen. Da musst Du entscheiden, wie Du mit diesem "Zustand" umgehen willst.

Wenn Du Dir die beiden Auszüge aus dem Log genau anschaust, wirst Du feststellen, dass sie von der gleichen IP und gleichem Browser kommen mit zeitlicher Differenz und etwas unterschiedlichem Aufbau. Einmal mit einer URL, einmal mit einem -. Das kommt mir irgendwie komisch vor, eventuell kannst Du in Deinem Quelltext aber gerade an dem Unterschied festmachen, ob Du die Daten speicherst oder verwirfts und 'ne Fehlermeldung... ausgibst.

MSSSSM 15. Okt 2008 17:05

Re: MySQL Doppeleintrag bei INSERT
 
Ich habs jetzt so gelöst:
Zuerst wird das ganze inklusive Message usw. an einen bestimmten Mode geschickt (steht im Gaanz oben in der Seite), die leitet dann auf einen anderen Mode um der dann die Nachricht anzeigt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz