Requete Update

guilstunt Messages postés 52 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 1 mars 2016 - 21 oct. 2010 à 18:11
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 21 oct. 2010 à 22:20
Bonjour,

je bloque sur une requete update avec une condition

voici mon code

<?php
//Si l'action de "valider" a été faite

if(isset($_POST["Valider"]))
{
if (isset($_POST['equipier']) AND isset($_POST['resultat']) AND isset($_POST['adversaire']))
{ // Un { après chque IF

$equipier = htmlentities($_POST['equipier']);
$resultat = htmlentities($_POST['resultat']);
$adversaire = htmlentities($_POST['adversaire']);
$fight=mysql_query("select Fightvalue from stats WHERE Nom=$equipier") or die('Erreur SQL !
'.$fight.mysql_error());
$fight2=mysql_query("select Maxi from stats WHERE Adversaire=$adversaire") or die('Erreur SQL !
'.$fight2.mysql_error());

if($fight<$fight2);{
$requete=mysql_query("UPDATE stats SET Maxi=$fight WHERE Adversaire=$adversaire");
}
}
}

else{
}
?>

Le problème c'est que la modif ne se fait pas

Vous voyez une erreur?

Merci

2 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
21 oct. 2010 à 19:40
Salut,

Et toi, tu en vois une erreur ? Un message qui s'affiche, quelque chose ?

Il y a une balise exprès pour la coloration syntaxique : ça permet non seulement d'avoir de la couleur dans le code, mais aussi et surtout de garder l'indentation. C'est plus lisible quand le code est indenté...

Pour information, les opérateurs logique && et and ne sont pas identiques : && a une priorité plus forte que and. En d'autres termes, si le premier terme est vérifié (retourne TRUE ou un équivalent), le terme à droite de and ne SERA PAS VÉRIFIÉ, et la condition de if est considérée comme étant TRUE. Alors que si ça se trouve, c'est pas ça du tout...
Autre manière de dire : si tu utilises plusieurs and, la condition sera considérée comme vérifiée dès que l'une des comparaisons est vérifiée. Avec &&, la condition est vérifiée si et seulement si toutes les comparaisons sont vérifiées également.

Bon sinon, dans une requête SQL, les chaînes de caractères doivent impérativement être entourées de guillemets (simples ou doubles). Seuls les booléens et les numériques sont dispensés de guillemets.

$fight et $fight2 sont soit des ressources mysql soit des booléens valant FALSE. Les afficher en l'état à l'écran ne veut pas dire grand chose.

Pour terminer, il est important de protéger les valeurs que l'on insère dans la base de données avec mysql_real_escape_string().

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 oct. 2010 à 22:20
Salut,


$fight et $fight2 sont soit des ressources mysql soit des booléens valant FALSE. Les afficher en l'état à l'écran ne veut pas dire grand chose.

Et qui plus est de les utiliser dans la requête update qui suit ^^

Il y a un ';' qui n'a rien à faire là :
if($fight<$fight2);{

et cette condition sera toujours fausse (et donc l'update SQL qui suit ne sera jamais exécuté), puisque comme il est dit juste avant, les deux variables sont des ressources, voire valent false.

Quand tu rencontres ce genre de souci pense à "blinder" d'echo (de var_dump, ...) pour y voir plus clair.
En mettant un simple "echo 'le if marche archement bien !!';" (else 'ca foire') tu trouverai bien plus rapidement le problème.

Un petit tour sur la doc de mysql_query(), mysql_result(), mysql_fetch_*() te serait sans doute utile.

Cordialement,


Kohntark -
0
Rejoignez-nous