If-Anweisung richtig?

DonDemf

Erfahrenes Mitglied
PHP:
$abfragevorergebnis = 'SELECT * FROM spielplan_bundesliga2 WHERE heim = "'.$spiel->heim.'" AND gast = "'.$spiel->gast.'"';
$ergebnisvorergebnis = mysql_query($abfragevorergebnis);
$verg = mysql_fetch_array($ergebnisvorergebnis);


// Hier klappt irgendwas nicht!

if($verg->heimtore > $verg->gasttore) {
	$aendern5 = 'UPDATE fifa_mannschaften Set
spiele = spiele + 1, 
siege = siege + 1,
unentschieden = unentschieden + 0, 
niederlagen = niederlagen + 0, 
tore = tore + '.$verg["heimtore"].', 
gegentore = + '.$verg["gasttore"].', 
punkte = punkte + 3 
WHERE name = "'.$verg["heim"].'"';
$update5 = mysql_query($aendern5);

$aendern6 = 'UPDATE fifa_mannschaften Set
spiele = spiele + 1, 
siege = siege + 0, 
unentschieden = unentschieden + 0, 
niederlagen = niederlagen + 1, 
tore = tore + '.$verg["gasttore"].', 
gegentore = + '.$verg["heimtore"].', 
punkte = punkte + 0 
WHERE name = "'.$verg["gast"].'"';
$update6 = mysql_query($aendern6);


Ich habe markiert, wo irgendwas nicht stimmt.
die If Anweisung

if($verg->heimtore > $verg->gasttore) {​

soll heißen, wenn die anzahl der heimtore größer als gasttore ist, sollen bei der heimmannschaft folgende werte eingetragen werden:

spiele + 1
siege + 1
unentschieden + 0
niederlagen + 0
tore + $verg->heimtore
gegentore + $verg->gasttore
punkte + 3


aber irgendwie macht er dies nicht. er trägt immer punkte + 1 ein und unentschieden + 1 :S
 
Hast du schon den Wert von $verg->heimtore und $verg->gasttore geprüft, z.B. mit [phpf]var_dump[/phpf]
 
Wenn ich mir die mit Var_dump()n ausgeben lasse kommt folgende wert, die korekkt sind:

string(1) "3" string(1) "2"
 
ok, habe gemerkt, dass die Felder INT sind, in denen der STRG eingetragen werden soll, von daher --> Fehler von mir!

Aber eine weitere Frage habe ich:

wenn die IF-Anweisung TRUE ist, soll es sowohl den $aendern5 als auch $aendern6 ausführen, jedoch führt er nur die 5 aus und nicht die 6.....
 
Er meint das so:

PHP:
$abfragevorergebnis = 'SELECT * FROM spielplan_bundesliga2 WHERE heim = "'.$spiel->heim.'" AND gast = "'.$spiel->gast.'"';

// Zum Debuggen mal das Statement ausgeben
echo $abfragevorergebnis;

$ergebnisvorergebnis = mysql_query($abfragevorergebnis);

Dann kannst du das Statement mal in phpMyAdmin zum Testen reinkopieren.
 
Ja genau wie saftmeister es gezeigt hatte.

Hattest du nicht gesagt, dass die Felder heim und gast Integer sind?
Wieso schließt du sie dann im Query in Anführungszeichen (") ein?
 
Außerdem ist es immer sinnvoll, Fehler bei mysql_query() auch anzuzeigen, also genauso wie bei mysql_connect() oder mysql_select_db():

PHP:
$ergebnisvorergebnis = mysql_query($abfragevorergebnis);
if( !$ergebnisvorergebnis )
{
  echo "Fehler bei Query <pre>$abfragevorergebnis</pre>" . mysql_error();
}
 
Ich habe jetzt hinter jedem erstmal $update = mysql_query($aendern) or die (mysql_error ($verbindung)); gemacht und das mit den anführungszeichen musste nochmal erklären. des mache ich immer so?!
 
Zurück