Mysql probleme de calcul

Résolu/Fermé
Xidy Messages postés 82 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 19 juillet 2014 - 28 août 2008 à 11:21
Xidy Messages postés 82 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 19 juillet 2014 - 28 août 2008 à 21:15
Bonjour,
J'ai actuellement un petit site ou le but est de répondre a des questions pour augmenter son score^^ Seulement voila dans certains cas (heureusement très rare) les points au lieu d'augmenter diminuent! (Hors il est impossible de perdre des points normalement). J'ai eu le cas pour 2 personnes qui avaient un ordinateur plus lent (est-ce lié???). Est-il possible que ce ne soit pas dans mon code mais du coté de l'hébergeur(gratuit) et de sa gestion Mysql?

le code:

<?php

if(isset($_POST['rep1'],$_POST['rep2'],$_POST['rep3'],$_POST['rep4'],$_POST['rep5'],$_POST['rep6'],$_POST['rep7'],$_POST['rep8'],$_POST['rep9'],$_POST['rep10']))
{
$res=$_POST['rep1']+$_POST['rep2']+$_POST['rep3']+$_POST['rep4']+$_POST['rep5']+$_POST['rep6']+$_POST['rep7']+$_POST['rep8']+$_POST['rep9']+$_POST['rep10'];
 
  //base de donnees
 $verif = mysql_query("SELECT pseudomis FROM testfais WHERE pseudomis='$pseudo' AND test='jeuxpc'");
 $donnees = mysql_fetch_array($verif);
	if(!empty($donnees['pseudomis']))
		echo "Vous avez deja fais ce test en consequence le score n'est plus augmente mais vous pouvez toujours refaire chaque test!";
	else
	{
		echo "Score pris en compte!!!";
		if($res<0) $res*=-1;
		$score=$_SESSION['score']+$res;
		mysql_query("UPDATE infos SET score='$score' WHERE pseudo='$pseudo'");
		mysql_query("INSERT INTO testfais VALUES('','$pseudo','jeuxpc')");
	}
 //fin base de donnees 
 
 echo "<h3>Bienvenue!</h3>";
 echo "<h3>Tu as obtenu $res/50!!!</h3>";
 
 
 $long=($res/5)*10;

 echo "<table border=\"12\">";
		echo "<tr><td width=\"$long\" height=15 bgcolor=\"#00FF00\"</td></tr>";
 echo "</table>";
 
 echo "<table border=\"12\">";
		echo "<tr><td width=\"100\" height=15 bgcolor=\"#00FF00\"</td></tr>";
 echo "</table>"; 
 echo "</br></br></br>";
 
 
		if($res<25)
		{
		echo "<h2>";
		echo "<p>Bof bof jamais entendu </p>";
		echo "<p>Tout ceci n'est pas ton fort! Ton score s'en ressens! Mais au prochain test tu pourras mieux faire!</p>";
		echo "<p>Il est tant de prendre les devants tu n'arriveras pas a gagner comme ca!</p>";
		echo "</h2>";
		}

		if($res>=25 && $res<42)
		{
		echo "<h2>";
		echo "<p>Pas mal!</p>";
		echo "<p>Tu a les atouts qu'il faut pour gagner, n'hesite pas a t'en servir ce serais du gachis sinon!</p>";
		echo "<p>Pense a t'informer de l'actu concernant les sujets suivants!</p>";
		echo "</h2>";
		}

		if($res>=42)
		{
		echo "<h2>";
		echo "<p>Le supra connaisseur</p>";
		echo "<p>Bravo si tout mes eleves etaient comme toi!</p>";
		echo "<p>La chose importante pour toi c'est de bien garder ton rythme!</p>";
		echo "</h2>";
		}

}

else
{
echo "<h2> Vous n'avez pas repondu a toutes les questions!!! </h2>";
include("formujeu.inc.php");
}
 
?>
A voir également:

2 réponses

Xidy Messages postés 82 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 19 juillet 2014 3
28 août 2008 à 21:15
Je vais prendre la 2eme solution en effet c'est bête ce que j'ai fait pas besoin de session ici pour le score...
En fait pour pouvoir faire les tests on se connecte et la session est créée donc normalement le session score existe mais bon c'est mieux codé ac cette solution un grand merci!
1
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 388
28 août 2008 à 17:23
Bonjour,

La seule chose que j'ai constaté dans ton code est le suivant
$score=$_SESSION['score']+$res;
mysql_query("UPDATE infos SET score='$score' WHERE pseudo='$pseudo'");

Tu ne vérifies pas que la variable 'score' existe dans ta session, donc si elle est nulle tu vais mettre à jour ta table avec la valeur du score actuel et non la somme du score précédent et du score actuel. Tu peux soit vérifier que la variable 'score' existe dans ta session avec le code suivant
if(isset($_SESSION['score']))
ou bien mettre à jour ta table avec l'instruction suivante
mysql_query("UPDATE infos SET score=score + '$res' WHERE pseudo='$pseudo'");


A plus
0