[PHP/MySQL] Datensatz wird zweimal eingefügt!

m7media

since 2001
ID: 324964
L
7 Mai 2006
855
70
hallo!

ich hab ein problem. Ich füge einen Datensatz per Query in die Datenbank. Funktioniert einwandfrei. Das Problem ist: er fügt ein und denselben Datensatz immer ZWEIMAL ein obwohl nur ein mysql_query enthalten ist.

Hier mal der code:
PHP:
<?    $belegt = $platzgh_user-$anzahlfz_user;
if($belegt < "1") { echo "Sie Haben zuwenig Platz im Gerätehaus"; } 
else {
$id = $_GET["id"];
$abfrage = "SELECT * FROM fws_fahrzeuge_ovw WHERE id = '$id' LIMIT 1";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$price = $row->price; 
}
if($price > $guthaben_user) {
echo "Leider haben Sie zuwenig Geld.";
}
else {
$sql2 = mysql_query("INSERT INTO `fws_fahrzeuge` ( `id` , `typ` , `zustand` , `besitzer` ) VALUES (NULL , '$id', '100', '$nick_user')");
$guthaben_new = $guthaben_user-$price;
$sql = mysql_query("UPDATE `fws_user` SET punkte = $guthaben_new WHERE nickname = '$nick_user'");
echo "Fahrzeug wurde gekauft und in die Fahrzeughalle gefahren. Es ist damit sofort Verfügbar";
echo "<meta http-equiv='refresh' content='0; URL=index.php?show=user/geratehaus'>";
}
 }    
?>
 
m7media schrieb:
PHP:
$id = $_GET["id"];
$abfrage = "SELECT * FROM fws_fahrzeuge_ovw WHERE id = '$id' LIMIT 1";
$ergebnis = mysql_query($abfrage);
Nur so am Rande: Du setzt dieses Script hoffentlich niemals online 8O :roll:

Zum Problem:
Sicher, dass dieses Script nur einmal aufgerufen wird ? Ich würde hier beim Debugging ansetzen. Es ist nur ein INSERT-Statement da, was ausgeführt wird, also wird auch nur einmal eingefügt.
 
die seite wird nur einmal aufgerufen. Beim Aufrufen wird auch nur ein Datensatz eingefügt. Aber sobald ich aufn andren link klicke kommt n zweiter Datensatz rein :(
 
theHacker schrieb:
Nur so am Rande: Du setzt dieses Script hoffentlich niemals online 8O :roll:

Solange magic_quotes an sind gehts doch noch, und das SELECT * ist halt Geschmackssache :LOL:

Nunja, zum Thema:
Ich empfehle dir ersteinmal einen vernünftigen Script Aufbau, dass du deine Abfragen leicht und schnell überblicken kannst ... und ansonsten kann ich dir eigentlich auch nur ein sinnvolles debugging empfehlen.
 
artemissays schrieb:
Solange magic_quotes an sind gehts doch noch, und das SELECT * ist halt Geschmackssache :LOL:

1. solange magic_quotes_gpc aktiviert ist "geht es".
Allerdings gibt es in php6 glücklicherweise kein magic_quotes mehr.

User Contributed Notes - php.net judas dot iscariote at gmail dot com schrieb:
Just for the record. this feature has been removed as of PHP6.
now PHP works always like if magic_quotes_gpc Off.

get_magic_quotes_gpc, get_magic_quotes_runtime are kept but always return false, set_magic_quotes_runtime raises an E_CORE_ERROR.

this is great news, magic_quotes were a big annoyance.

2. SELECT * ist auch rein objektiv absoluter Müll. Warum wurde schon oft beantwortet (google) ;)


@m7media:

Ich empfehle dir mal Kommentare anzugewöhnen. OOP würde der Übersichtlichkeit ebenfalls sehr dienlich sein :)

Das 2-Fache Eintragen kann eigentlich nur bedeuten, dass 2 Bedigungen zutreffend sind.