problem beim eintragen in SQL

ciberjoerg

Erfahrenes Mitglied
Mein problem ist Wenn ich meine Seite aufrufe mit variablen und allem, Sendet mir php 3 Einträge in die datenbank. Die frage ist warum?

mein Quellcode

PHP:
<?php
$link = mysql_connect("localhost","******","*****") or die ("Keine Verbindung moeglich");
mysql_select_db("******") or die ("Die Datenbank existiert nicht");


$user = $umsSystem->user_id;
$name = $umsSystem->nic;
$to_id = $_GET[id];
$to_name = $_GET[uname];
$thetitle1 = "Freundschaftsangebot erhalten!";
$date = date("d.m.Y H:i");
$datum = time();
$aktiv = 1;

//funktion fa senden mit link    sendfa.php?action=sfa&id=45&uname=Rammstein
if($_GET[action] == "sfa")
{
    if($_GET[id] == "" OR $_GET[id] == "$user")
    {
        echo"Du kannst dir selbst kein Freundschaftsangebot schicken!<br><a href=\"javascript:history.back()\">Zurueck</a>";
        exit;
    };
    
        $sendfa = "INSERT INTO flist (`id`, `an_id`, `von_id`, `time`, `status`, `to_nick`, `von_nick`) VALUES ('', '$to_id', '$user', '$datum', '0', '$to_name', '$name')";
        $sendingfa = mysql_query($sendfa)or die(mysql_error());//Wurde der Eintrag erfolgreich gespeichert?
        $fa_id = mysql_insert_id();
        
        if($sendingfa == true)//fa id auslesen und nachricht senden
   {
       
        $themsg = "Der User <a href=\"../public_profil.php?user_id=$user\" target=\"_top\">$name</a> hat dir seine Freundschaft angeboten.<br> In der <a href=\"../flist.php\" target=\"_top\">Friendlist</a> kannst du die Freundschaft <a href=\"../flist.php?fasys=acp&action=acp&id=$fa_id\" target=\"_top\">annehmen</a>, oder <a href=\"../flist.php?fasys=dny&action=dny&id=$fa_id\" target=\"_top\">ablehnen</a>.";
        
        $sendfa1 = "INSERT INTO fapm0_posteingang ( `id` , `nick` , `title` , `message` , `absender` , `new` , `date` , `unread`) VALUES ('', '$to_name', '$thetitle1', '$themsg', '$name', '1', '$date', '1')";

$sendingfa2 = mysql_query($sendfa1) or die(mysql_error());
//Wurde der Eintrag erfolgreich gespeichert?
if($sendingfa2 == true)
   {
       
   echo "Freundschaftsangebot erfolgreich gesendet!";
   }
else
   {
   echo "Fehler beim Speichern";
   }
   
   }
   else{
       echo "Fehler beim Speichern!";
   }
}
?>
 
Moin,

in dem Script ist nichts zu erkennen, was dies verursachen könnte.

Das generelle Problem sehe ich darin, dass du nicht von vornherein verhinderst, dass idenditsche Datensätze(`an_id`, `von_id`) gespeichert werden.

Dazu sendest du das ganze noch per GET....mir ist sowas schon vorgekommen, dass Browserfeatures wie z.B. das HTTP-Pipelining von Mozilla Sachen von sich aus vorladen...das könnte bspw. eine Ursache sein.

Eine mögliche Lösung, die Duplikate generell zu vermeiden:
Erstelle ein zusätzliches Feld als UNIQUE key, darin speichere `an_id` und `von_id`(getrennt mit irgendeinem Separator-Zeichen).

So verhinderst du definitiv, dass diese Duplikate gespeichert werden(ob nun durch einen dummen Umstand oder Spamming etc. ist da egal).

Bzgl. deines 2. Query solltest du übrigens nicht abfragen, ob das 1.Query true geliefert hat...das heisst nämlich noch lange nicht, dass etwas eingefügt wurde.
Gewissheit liefert dir da mysql_affected_rows() oder auch mysql_insert_id() (diese wird idR. >0 sein im Erfolgsfall)
 
Okay das mit dem senden hab ich bereits aus der Welt geschafft.Aber zum thema GET wie kann ich das denn aus einem Textlink mit Post schicken?

Wie sehe dann eine optimierte SQL abfrage aus die dann mit sicherheit alle Variablen einträgt?
Bin eben erst anfänger in sql hab mir die grundliegenden sachen in 2 tagen beigebracht.
 

Neue Beiträge

Zurück