Bug incompréhensible !!??? - PHP - Programmation
Marsh Posté le 15-06-2008 à 03:27:26
salut !
Quelques petits probleme de base déjà :
ligne 7 : $note = $_POST['note'] suffit (toujours mettre des quotes, sinon ta clé est considéré comme constante
ligne 9 : vu les champs que tu recuperes dans ton script, évite les select * :
"SELECT vote, points FROM ..." fera largement l'affaire
ligne 9 : ton $id tu le sors d'où ? mets les register_globals à Off !
ligne 14 : $vote++ c'est plus propre
ligne 22 : pour tout champ numérique, inutile de mettre des quotes à tout va
ligne 23 : limit 1 ne sert à rien pour un update
pour vérifier ta requete, procede plutot ainsi :
$ma_requete = "SELECT ..."
reqmysql($ma_requete)
afin de voir exactement les valeurs mises à jour
pour ta question, ton script n'est pas censé faire un "+2" sur le nb de vote, mis à part rafraichir 1x la page
Voilou
Marsh Posté le 15-06-2008 à 13:45:36
Merci pour tes réponses !
Il rafraîchit une fois la page ? Le bug semble se produire uniquement avec Mozilla ?
Comment y remédier ?
J'ai déjà tout corrigé avec tous tes conseils.
Mais avec ++ au lieu de +1, le nombre de votes n'augmente plus....
Marsh Posté le 15-06-2008 à 14:47:01
une dernier petite remarque d'optimisation : je te conseillerais d'utiliser mysql_fetch_assoc plutot que mysql_fetch_array qui te renvoie numérique et associatif. Fais un :
Code :
|
tu verras ....
les écritures $vote++ ou $vote+=1; ou $vote=$vote+1 sont completement identiques.
Si tu veux t'en assurer fais un echo avant et apres ...
Tes données sont lu dans une table, donc avant de faire quoi que ce soit, fais un print_r($ligne1) ce que tu manipules comme données.
Puis apres, sotckes ta requete update dans une variable, afiche la et execute ta requete à partir de ta variable, comme ca tu sais exactement ce que tu recupere et ce que tu mets à jour.
Bref, passes en mode debuggage
Marsh Posté le 20-06-2008 à 14:43:13
en gros je dirait que la moitié de ton code est plus ou moins inutile, il y a possibilité de remplacé les ligne 9 à 23 par ça :
mysql_query( "UPDATE archives SET vote=(vote+1), points=(points+".$note." );" );
Je suis pas certains de la syntaxe mais ça doit s'en rapprocher
ton premier select ne sert à rien, tu peux très bien faire les calculs dans la requête
ensuite, l'intérêt de sauvegarder une note moyenne est pas évident, étant donné que c'est une valeur calculée à partir de données en base, tu pourra le calculer via le php à l'affichage, c'est pour celà que je ne les ai pas inclu dans la requête d'update.
après c'est un choix, mais généralement tous ce qui peux être calculé simplement, j'évite de le mettre en base.
ça donnerais à peu près ça :
Code :
|
je décline toute responsabilité en cas d'erreur, je n'ai pas testé
Marsh Posté le 21-06-2008 à 03:50:03
gugus a écrit : en gros je dirait que la moitié de ton code est plus ou moins inutile, il y a possibilité de remplacé les ligne 9 à 23 par ça :
|
Ta responsabilité civile sera engagée en cas de retard sur la recette
Marsh Posté le 15-06-2008 à 01:05:59
SAlut,
J'ai étébli ce script pour établir une note moyenne sur 5 en fonction des votes :
Le gros problème c'est que $vote qui est le nombre de votes monte de 1 ou de 2 de manière complètemenat aléatoire. Des fois il se prend normalement +1 et des fois il se prend +2 de manière totalement incompréhensible !!!!
Là faut m'expliquer...
Message édité par ti-bank le 15-06-2008 à 02:17:04
---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr