Une erreur introuvable
Résolu
Meta-Dark
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius -
loupius -
Bonjour,
Je galère depuis plusieurs heures, je voulais trouver l'erreur moi même mais franchement je n'y arrive pas.
Apparemment, ça bloque au while car un echo de $nomobjet ne m'affiche rien.
J'ai bien une table qui s'appelle objets, et la variable $attaque existe bien.
Un résultat apparait forcément a la query, j'ai essayé la requête avec une Potion qui m'a affiché un résultat sur PhpMyAdmin
J'espere vraiment que vous pourrez m'aider, et de mon côté je vais chercher et vous tiendrais au courant tout en donnant la solution si jamais je met la souris dessus avant vous, merci d'avance !
Je galère depuis plusieurs heures, je voulais trouver l'erreur moi même mais franchement je n'y arrive pas.
Apparemment, ça bloque au while car un echo de $nomobjet ne m'affiche rien.
J'ai bien une table qui s'appelle objets, et la variable $attaque existe bien.
Un résultat apparait forcément a la query, j'ai essayé la requête avec une Potion qui m'a affiché un résultat sur PhpMyAdmin
mysql_select_db("objets"); $objetZ = mysql_query("SELECT * FROM objets WHERE `nom` = '$attaque'"); while($objetX = mysql_fetch_array($objetZ)) { $nomobjet = $objetX['nom']; $soinPV = $objetX['valeur']; $soinPM = $objetX['valeur2']; $type = $objetX['type']; $Cac = 0; $_SESSION['PV'] += $soinPV; $_SESSION['PV'] += $soinPM; $message = "$nom utilise l'objet $nomobjet et restaure $soinPV points de Vie et $soinPM points de Mana."; $utilise = 1; if($objet10 == "$nomobjet") { $case = 10; } elseif($objet1 == "$nomobjet") { $case = 1; } elseif($objet2 == "$nomobjet") { $case = 2; } elseif($objet3 == "$nomobjet") { $case = 3; } elseif($objet4 == $nomobjet) { $case = 4; } elseif($objet5 == $nomobjet) { $case = 5; } elseif($objet6 == $nomobjet) { $case = 6; } elseif($objet7 == $nomobjet) { $case = 7; } elseif($objet8 == $nomobjet) { $case = 8; } elseif($objet9 == $nomobjet) { $case = 9; } mysql_select_db("Rpaygay"); $quantiteM = mysql_query("SELECT `quantite $case` FROM Rpaygay WHERE `nom`='$nom', `objet $case`='$nomobjet'") or die (mysql_error()); while($quantiteW = mysql_fetch_array($quantiteM)) { $quantiteW = $quantiteW['objet $case']; } $quantiteI = $quantiteW - 1; mysql_query("UPDATE Rpaygay SET `quantite $case`='$quantiteI'") or die(mysql_error()); } /* Fin Objets */
J'espere vraiment que vous pourrez m'aider, et de mon côté je vais chercher et vous tiendrais au courant tout en donnant la solution si jamais je met la souris dessus avant vous, merci d'avance !
A voir également:
- Une erreur introuvable
- Supprimer un fichier introuvable - Guide
- Une erreur s'est produite instagram ✓ - Forum Instagram
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
4 réponses
Bonjour
Modifie le début de ton programme :
$objetZ = mysql_query("SELECT * FROM objets WHERE `nom` = '$attaque'") or die (mysql_error());
echo mysql_num_rows($objetZ);
ça ne va pas corriger l'erreur, mais permettre de la comprendre
Modifie le début de ton programme :
$objetZ = mysql_query("SELECT * FROM objets WHERE `nom` = '$attaque'") or die (mysql_error());
echo mysql_num_rows($objetZ);
ça ne va pas corriger l'erreur, mais permettre de la comprendre
bonjour moi je pense que c'est à l'intérieur de ta requete essaie un truc du genre
$objetZ = mysql_query("SELECT * FROM objets WHERE nom ='".$attaque."'")
ça devra normalement fonctionner
$objetZ = mysql_query("SELECT * FROM objets WHERE nom ='".$attaque."'")
ça devra normalement fonctionner
William, j'aimerais que tu me dises ce qui selon toi est incorrect dans la requête de Meta-Dark et surtout pourquoi c'est incorrect.
Il n'y a absolument AUCUNE raison que ta requête marche mieux que la sienne.
Il n'y a AUCUNE raison d'enlever les `` autour du nom de champ de la table, c'est même une bonne habitude qui évite un certain nombre de problèmes.
Les écritures "..WHERE `nom` = '$attaque'" et "..WHERE nom ='".$attaque."'" sont exactement équivalentes en PHP, alors pourquoi espérer un changement ?
À moins qu'il y ait autre chose qui m'échappe, bien sûr. Mais j'aimerais que tu me dises quoi.
Il n'y a absolument AUCUNE raison que ta requête marche mieux que la sienne.
Il n'y a AUCUNE raison d'enlever les `` autour du nom de champ de la table, c'est même une bonne habitude qui évite un certain nombre de problèmes.
Les écritures "..WHERE `nom` = '$attaque'" et "..WHERE nom ='".$attaque."'" sont exactement équivalentes en PHP, alors pourquoi espérer un changement ?
À moins qu'il y ait autre chose qui m'échappe, bien sûr. Mais j'aimerais que tu me dises quoi.
Voila l'erreur retournée :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `objet 1`='Potion'' at line 1
et voila le bout de code concerné :
Est-ce que cela viendrait du fait qu'une variable se trouve dans le nom du champ sélectionné ?
P.S : c'est vrai qu'il faudrait que je prenne la bonne habitude de mettre un or die sur mes requetes quand je peux, j'y penserais maintenant :)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `objet 1`='Potion'' at line 1
et voila le bout de code concerné :
$quantiteM = mysql_query("SELECT `quantite $case` FROM Rpaygay WHERE `nom`='$nom', `objet $case`='$nomobjet'") or die (mysql_error());
Est-ce que cela viendrait du fait qu'une variable se trouve dans le nom du champ sélectionné ?
P.S : c'est vrai qu'il faudrait que je prenne la bonne habitude de mettre un or die sur mes requetes quand je peux, j'y penserais maintenant :)
J'ai enfin trouvé l'erreur !
Voici le bout de code concerné :
et voici le code corrigé :
Et oui, j'ai mis une virgule pour séparer deux conditions, alors qu'il fallait utiliser AND. Merci pour votre aide, le problème est RESOLU
Voici le bout de code concerné :
$quantiteM = mysql_query("SELECT `quantite $case` FROM Rpaygay WHERE `nom`='$nom', `objet $case`='$nomobjet'") or die (mysql_error());
et voici le code corrigé :
$quantiteM = mysql_query("SELECT `quantite $case` FROM Rpaygay WHERE `nom`='$nom' AND `objet $case`='$nomobjet'") or die (mysql_error());
Et oui, j'ai mis une virgule pour séparer deux conditions, alors qu'il fallait utiliser AND. Merci pour votre aide, le problème est RESOLU