Mysql probleme de calcul

[Résolu/Fermé]
Signaler
Messages postés
82
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
19 juillet 2014
-
Messages postés
82
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
19 juillet 2014
-
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");
}
 
?>

2 réponses

Messages postés
82
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
19 juillet 2014
3
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 357
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