Requete Update

Signaler
Messages postés
52
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
1 mars 2016
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
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à ;)
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -