Une seule valeur ne veut pas s'ajouter à la BDD

Petit nouveau ! | 9 Messages

24 févr. 2008, 01:08

Bonsoir tout le monde,
J'ai un bug très étrange : J'ai une BDD, avec une table qui contient des pseudos, et leur "score" respectif. C'est moi qui crédite a la main les scores, via un formulaire qui transmet a du PHP, qui met a jour la BDD. Si le pseudo s'y trouve deja, le score est credité, sans quoi en plus on crée le pseudo. Bref, ça marche pour tous les pseudos, mais pas pour le pseudo "yohan" (avec ses guillemets, qui indiquent que sur le jeu cette personne ne paie pas)
Lorsque j'indique ce pseudo, alors impossible de le mettre a jour dans la BDD !
Et ce n'est pas a cause des guillemets, car d'autres pseudos avec eux aussi des guillements fonctionnent... Ce n'est pas non plus le dernier pseudo de la table, il est en plein milieu...

Voilà le code :
<?php
$pseudo = $_POST["pseudo"];
$points = $_POST["points"];
$pass = $_POST["pass"];
if($pass != "XXXXXXXXXXX") {
	exit("Mot de passe incorrect<br/><br/><a href=\"addscore.php\">Retour</a>");
}
$present = "0";
$connexion = mysql_connect("mysql04-vh.amenworld.com","XXXXXXXX","XXXXXXXXXX");
mysql_select_db("XXXXXXXX");
$requete1 = "SELECT * FROM scores_pb";
$reponse1 = mysql_query($requete1);
while($line = mysql_fetch_assoc($reponse1)) {
   if ($pseudo == $line["pseudo"]) {
      $present = "1";
      $actuel = $line["score"];
   }
}
if($present == "0") {
   $requete = "INSERT INTO scores_pb (pseudo,score) VALUES ('$pseudo','$points')";
   $reponse = mysql_query($requete);
   $fin="Score correctement ajouté";
} else {
   $nouveau = $actuel + $points;
   $requete = "UPDATE `scores_pb` SET `score` = '$nouveau' WHERE `pseudo` = '$pseudo'";
   $reponse = mysql_query($requete);
   $fin="Score correctement mis à jour";
}
mysql_close($connexion);
if($reponse){
   echo $fin;
} else {
   echo "Impossible d'ajouter ou de mettre à jour le score";
}
?>
Et donc pour le pseudo "yohan" ça me renvoie "Impossible d'ajouter ou de mettre à jour le score"

Comment se fait-il alors que tous les autres marchent ?

Merci d'avance
Modifié en dernier par Kalyptus le 24 févr. 2008, 19:35, modifié 1 fois.

Eléphant du PHP | 445 Messages

24 févr. 2008, 01:30

$requete = "UPDATE `scores_pb` SET `score` = '$nouveau' WHERE `pseudo` = '$pseudo'";
Les bon guillemets sont les ' (Touche 4) et pas les ` (ALT+96)

ViPHP
ViPHP | 5924 Messages

24 févr. 2008, 02:53

Et tu peux les oublier pour faire du code compatible aux standards SQL92…

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 févr. 2008, 10:49

Sinon, pourquoi est-ce que tu sélectionnes toutes les lignes de ta table, puis tu les parcours en PHP pour retrouver la ligne concernant le pseudo recherché, alors qu'il serait beaucoup plus simple et optimisé de rechercher directement la ligne qui t'interesse

Code : Tout sélectionner

SELECT * FROM maTable WHERE pseudo='monpseudo'
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 févr. 2008, 14:02

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

24 févr. 2008, 17:35

@zeus : puisque l'on parlait de compatibilité ANSI je me suis permis de remplacer tes " (l'équivalent ANSI de `) par des '

Petit nouveau ! | 9 Messages

24 févr. 2008, 19:37

...
Je m'attendais à ce type de réponses. Je sais que mon code est loin d'être parfait ou même aux normes, mais ça ne m'explique pas pourquoi CETTE valeur ne fonctionne pas...
Merci quand même pour vos réponses.
J'ai édité le titre, j'avais pas fait attention à le rendre explicite.

A+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 févr. 2008, 20:11

Est-ce que tu as vérifié qu'il passait bien dans le update si une ligne existait dans la table score_pb ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

24 févr. 2008, 21:47

Est-ce que tu as vérifié qu'il passait bien dans le update si une ligne existait dans la table score_pb ?
Mais puisque je dis que les AUTRES valeurs fonctionnent ? Le update marche donc bien !
Bon, j'ai mis un addslashes en entrée et a la sortie un splitslashes, ça marche très bien, même si ça ne m'explique pas le problème.

A ciao et merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 févr. 2008, 22:29

Excuse moi d'essayer de t'aider :evil:

Si ça ne marche pas, c'est que quelque chose ne se passe pas comme tu le veux. Ma question avait pour but de te faire tester le fonctionnement exact de ton application pour suivre le cheminement exact et trouver l'endroit précis où ça ne marche pas.
Mais bon, je n'avais pas compris qu'il te fallait la solution sur un plateau dorée :x

Sinon, puisque ta question est résolu, j'ajoute le tag [RESOLU]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

25 févr. 2008, 00:09

Pardon pardon :oops:
J'avais pas compris ça comme ça. Mais bon maintenant ça marche :/ Mais c'est bizarre quand même. Et puis c'est pas la dernière valeur dans l'ordre alphabétique, ni la première. Mmmh.