Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Warum wird hier INSERT doppelt ausgeführt? (https://www.delphipraxis.net/89451-%5Bphp%5D-warum-wird-hier-insert-doppelt-ausgefuehrt.html)

Igotcha 31. Mär 2007 10:20


[PHP] Warum wird hier INSERT doppelt ausgeführt?
 
Hi zusammen,

bei folgendem Script habe ich das Problem, dass nach Ausführen des Inserts 2 identische Datensätze in der DB sind.

Aufgerufen wird das Script selbst mit: index.php?view=network&action=show&id=$row[fromid]&process=add

SQL-Code:
if ($_GET[action] == 'show')
{
   // Prüfen, ob hinzugefügt, oder gelöscht werden soll
   if (isset($_GET[process]))
   {
      if ($_GET[process] == 'add')
      {
         $sql = "INSERT INTO contacts (aid, bid, time) VALUES ($_SESSION[user_id], $_GET[id], now())";
         mysql_query($sql) or die(mysql_error());
         echo "eingefügt";
         exit; // Nur testweise drin, da selbst mit exit 2 Datensätze erstellt werden
         /*$sql = "DELETE FROM contacts_pending WHERE fromid=$_GET[id]";
         mysql_query($sql) or die(mysql_error());
         echo "gelöscht";*/
      }
      /*else if ($_GET[process] == 'delete')
      {
         $sql = "DELETE FROM contacts_pending WHERE fromid=$_GET[id]";
         mysql_query($sql) or die(mysql_error());
         echo "nicht hierhergekommen";
      }*/
   }
   // -------------------------------------------------
   
   echo "Folgende Kontaktanfragen liegen vor:";
   echo "<hr>";
   // Kontaktanfragen auslesen
   $sql = "SELECT p.fromid, p.comment, u.name, DATE_FORMAT(p.time, '%d.%m.%Y, %H:%i:%s') AS time FROM contacts_pending p"
        . " JOIN user u ON u.id=p.fromid"
        . " WHERE toid=$_SESSION[user_id] ORDER BY time DESC";
   $result = mysql_query($sql) or die(mysql_error());
   $_count = 0;
   echo "<table width=\"100%\">";
   echo "<tr><td>[b]Nr.[/b]</td><td>[b]Mitglied[/b]</td><td>[b]Kommentar[/b]</td><td>[b]vom[/b]</td><td>[b]Aktion[/b]</td></tr>";
   while ( $row = mysql_fetch_assoc( $result ) )
   {
      $_count++;
      echo "<tr><td>$_count</td><td><a href=\"index.php?view=profil&id=$row[fromid]&action=show\">$row[name]</a></td><td>$row[comment]</td><td>$row[time]</td><td><a href=\"index.php?view=network&action=show&id=$row[fromid]&process=add\">hinzufügen</a> | <a href=\"index.php?view=network&action=show&id=$row[fromid]&process=delete\">löschen</a></td></tr>";
   }   
   echo "</table>";
}
Gruß Igotcha

S2B 31. Mär 2007 10:25

Re: [PHP] Warum wird hier INSERT doppelt ausgeführt?
 
Auf PHP-Seite kann ich mir das Problem auch nicht erklären. Ich hatte mal einen ähnlichen Fall, da lag es aber daran, dass durch eine Weiterleitung die Datei zweimal aufgerufen wurde (genauer gesagt durch einen falsch gesetzten ErrorDocument-Befehl in der .htaccess). Kannst du sowas bei dir ausschließen?

Allgemein solltest du aber ein bisschen auf deinen Codestil achten:
Code:
if ($_GET[action] == 'show')
Hier solltest du das verwenden:
Code:
if ($_GET['action'] == 'show')

Igotcha 31. Mär 2007 13:30

Re: [PHP] Warum wird hier INSERT doppelt ausgeführt?
 
Da ich den Fehler nicht finden konnte, habe ich die SQL-Anweisungen ausgelagert und verweise mit

Delphi-Quellcode:
header ("Location: index.php?view=network&action=show");
wieder zurück auf die Liste - dann geht es...

Gruß Igotcha

generic 31. Mär 2007 18:49

Re: [PHP] Warum wird hier INSERT doppelt ausgeführt?
 
tip: trenn mal code von design.

http://www.phpug-hannover.de/download/dreamteam.pdf


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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