begin process at 2012 05 31 07:15:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Problème de rafraichissement dune page !!!! [^^sad1]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de rafraichissement dune page !!!! [^^sad1]

vendredi 12 mars 2010 à 18:51:15 | Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

Bonjour à tous ,
Je m'explique ... j'ai 2 soucis dont je n'arrive pas à résoudre !

1. A chaque saisie d'un nombre, la modification à partir de la base de donnée s'effectue mais n'est pas mis à jours sur ma page Vcompte.php (ref: <?php echo $_SESSION['credit']; ?> ).

2. J'aimerai codé le numéro a découvrir mais je ne trouve pas de solutions a ce problème. j'ai essayé en indiquant value:'. (addslashes(md5($rand))) .' c'est codé mais ça ne fonctionne pas .

Je vous mets le code de la page membre avec le jeu ... et j'ai pris le soin de mettre quelques annotations ... Merci d'avance !

Code PHP :
<?php 
require_once('auth/connexion.php');

if (!isset($_SESSION['authentification'])){ 
}
else {
header("Location:index.php?erreur=intru");
}
session_start();?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
  <div class="body">
    <div class="body_resize">
      <div class="News">
        <h2>Accueil</h2>
        <div class="bg"></div>
        // AFFICHAGE LOGIN ET CREDIT : C'EST ICI QUE LA DONNEE CREDIT NE S'ACTUALISE PAS LORS DE L'ENVOI D'UN NOMBRE
		<p><em>Votre login :</em> <?php echo $_SESSION['login']; ?></p>
        <p><em>Crédits réstant :</em><?php echo $_SESSION['credit']; ?></p>
        <p><a href="deconnexion.php"><em><strong>Déconnexion</strong></em></a></p>
		<br>
       
     
          <center>Le jeu commence dans : </center>
          <center><script type="text/javascript" src="js/cpt.js"></script>
        <div id="countbox"></div></center>
         <p><center>Entrer votre numéro :</center></p>
         <center>
// LE JEU COMMENCE ICI
<?php 
				mysql_select_db("kdxprotec");
				$query = "SELECT winnerkadx FROM objetskdoox WHERE refobjet=1210110";
				$result = mysql_query($query);
				// Recuperation des resultats
				while($row = mysql_fetch_row($result))
				{
				$winnerkadx = $row[0];
				}
				
				if(empty($winnerkadx)){
				   //debut du jeu
				   mysql_select_db("kdxprotec");

// Creation et envoi de la requete
$query = "SELECT numobjetwin FROM objetskdoox WHERE refobjet=1210110";
$result = mysql_query($query);

// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$numobjetwin = $row[0];

}

 if (!isset($_POST['reponse']) AND !isset($_POST['counter']))
	{
		$rand = $numobjetwin; // numéro à découvrir inclu dans la base de donnée non cripté ici
		$cnt 	= $_SESSION['credit']; // Nombre de crédit restant
		$id_user = $_SESSION['id_user']; // Identification membre
		echo 'Tentez votre chance !!! <br/>'; 
	}
	else if (isset($_POST['reponse']) AND empty($_POST['reponse']))
	{
		$rand 	= $_POST['random'];
		$id_user = $_SESSION['id_user']; 
		$cnt 	= $_POST['counter'];
		echo 'N\'ouliez pas de mettre une reponse!!!<br/>';
	}
	else
	{
		$rand 	= $_POST['random']; 
		$cnt 	= $_POST['counter'];
		$number	= $_POST['reponse'];
		$id_user = $_SESSION['id_user']; 
		if (preg_match('![0-9]!', $number))
		{
			$cnt--;
		
			if ($number < $rand)
				echo 'le num&eacute;ro myst&egrave;re est sup&eacute;rieur! <br/>';
			else if ($number > $rand)
				echo 'le num&eacute;ro myst&egrave;re est inf&eacute;rieur! <br/>';
			else if ($number == $rand)
			{
				echo 'Gagn&Eacute;!!!<br/>';
				
				mysql_select_db ('$database_dbprotect');
				$sql = mysql_query("SELECT winnerkadx FROM objetskdoox WHERE numobjetwin='$numobjetwin'");
				$result = mysql_fetch_array($sql);
				$winnerkadx = $_SESSION['login'] ; 
				$sql = mysql_query("UPDATE objetskdoox SET winnerkadx='$winnerkadx' WHERE numobjetwin='$numobjetwin'") or die ('Erreur : '.mysql_error());
				echo 'Le Gagnant est '. $winnerkadx . '' ;
				echo '<script language="Javascript"> document.location.replace("redircpt.php")</script>';
				
				
			}
		}
		else
		{
			echo 'Votre réponse ne doit contenir que des chiffres !!!<br/>';
		}
	}
	
	if ($cnt > 0)
	{
		echo
		'Vous avez encore ' . $cnt . ' coups &agrave; jouer

		
		<form action="Vcompte.php" method="post" name="lol">
			<input type="text" name="reponse" />
			<input type="hidden" name="counter" value="'. $cnt .'" />
			<input type="hidden" name="random" value="'. $rand .'" />
			<input type="submit" value="envoi" />
		</form>';


		mysql_select_db ('$database_dbprotect');
		$sql = mysql_query("SELECT credit FROM utilisateurs WHERE id_user=$id_user");
		$result = mysql_fetch_array($sql);
		
		// Calcul des points
		$pointfin = $cnt-1;
		// Operation
	
	   $sql = mysql_query("UPDATE utilisateurs SET credit=$pointfin WHERE id_user=$id_user") or die ('Erreur : '.mysql_error());
	   
	   
    	echo '<script language="javascript">document.lol.reponse.focus();</script>';
		
	}
    
	else
	{
		echo '<script language="Javascript"> document.location.replace("achatcredits.php")</script>';
		
	}
	// fin du jeu
				   
				   
					}else{
					echo '<center>Le Gagnant est '. $winnerkadx . '</center><br>' ;
					echo '<center>Partie terminée</center>';
					
					}
					 
?></center>


      </div>
     
    </div>
  </div>
</body>
</html>
vendredi 12 mars 2010 à 20:51:16 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark

Membre Club
Salut,

J'ai lu sans doute trop vite mais j'ai une question (con) :
Où est définie $_SESSION['credit'] ??

Cordialement,

Kohntark -

vendredi 12 mars 2010 à 21:33:02 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

Bonjour Kohntark ,
Je suis assez content que tu ais pris la peine de regarder mon code , je suis assez de prêt tes publications sur phpcs ...

$_SESSION['credit'] apparait dans ma page d'inscription membre ... cette donnée s'affiche correctement avec pour seule condition qu'elle n'évolue pas au travers des changements de ma base de donnée .

Ex: il note $_SESSION['credit'] à 132 crédits alors que dans ma base de donnée le décompte se fait correctement ... quand je change de page , le compteur revient à 132 . Il n'y a qu'en se déconnectant et en me reconnectant sur le compte membre que je m'aperçois que $_SESSION['credit'] = à "credit" de la base de donnée .

donc je ne vois pas trop ou ca cloche !!!

S'il te faut plus de précisions n'hésites pas !

Cordialement , FXPhantom
samedi 13 mars 2010 à 10:13:33 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark

Membre Club
Re,

Je crains ne pas tout comprendre.
Arrête moi si je me trompe :
Tu as un jeu où chaque joueur à un crédit qu'il peut créditer dans sa page inscription et que tu renseignes à la connexion de ce dernier dans $_SESSION['credit']
Lorsque le joueur joue, son crédit décroit de 1.

En fait je me limite à ça et cherche donc dans ton code un truc du genre $_SESSION['credit'] = $_SESSION['credit'] - 1;

Hors il n'y a aucune modification de cette variable de session, contrairement à la DB où tu fais :
$sql = mysql_query("UPDATE utilisateurs SET credit=$pointfin ...

Il est donc normal que $_SESSION['credit'] n'évolue pas et qu'elle "recolle" avec la DB lorsque le membre se reconnecte.

J'ai sans doute loupé quelque chose mais s'il faut que le crédit du membre décroisse en fonction de son nombre de tentative il faut un truc du genre :
Code PHP :
// Calcul des points
$pointfin = $cnt-1;
$_SESSION['credit'] = $pointfin;
// Operation
//...


Commence peut être par là, mais il y aura encore pas mal de choses à modifier afin de rendre ton code plus clair (mysql_select_db() superflues, document.location.replace, die, doublons var session / requêtes, etc ...)

Cordialement,

Kohntark -

samedi 13 mars 2010 à 10:46:40 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

Non en fait j'aurai du te préciser ... c'est de ma faute ... Lors de la validation de chaque inscription , on incrémente automatiquement quelques crédits aux membres d'où $_SESSION['credit'] dans la page d'inscription .

Pour revenir au code de mon jeu , j'ai nommé "$cnt = $_SESSION['credit'];" dans la partie (debut du code du jeu):
Code PHP :
if (!isset($_POST['reponse']) AND !isset($_POST['counter']))
	{
        $rand = $numobjetwin; // numéro à découvrir inclue dans la base de donnée non cripté ici
	$cnt 	= $_SESSION['credit']; // Nombre de crédit restant
	$id_user = $_SESSION['id_user']; // Identification membre
	echo 'Tentez votre chance !!! <br/>'; 



donc dans la logique , il devrai le décompter de ma page car il le fait très bien dans la base de donnée !!! Franchement , là je bloque !!!
samedi 13 mars 2010 à 14:41:00 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark

Membre Club
Réponse acceptée !

Arf, je bloque moi aussi , j'ai du mal à te suivre.

Je pense que tu te prends la tête pour pas grand chose.
Il faut toujours s'inscrire dans une logique de simplification et donc de compréhension du code.
Là tu as pas mal de lignes en doublon, des affectations de variables qui ne servent à rien, des requêtes inutiles et inutilisées, des noms de variables qui ne représentent pas la même chose selon le contexte, ...

Côté sécurité c'est un véritable gouffre : file l'adresse du jeu, je gagne à tous les coups et je crédite mon compte sans passer par l'achat de crédit
Il doit également être possible de nuire gravement à ta DB.
Il faut toujours limiter et contrôler au maximum les données externes (celles provenant d'un formulaire, d'une url, ...)

J'ai regardé d'un peu plus près ton code et réécris quelques trucs rapidement (ça ne m'étonnerais pas qu'il y ait des bugs)
C'est loin d'être parfait, mais ça me semble un peu plus logique que le code original (tout du moins si j'ai correctement compris ton problème)


Code PHP :
<?php
require_once('auth/connexion.php');

session_start();
if (!isset($_SESSION['authentification'])) header("Location: index.php?erreur=intru");
mysql_select_db("kdxprotec"); // à mettre de préférence dans un fichier séparé, sauf à avoir à travailler avec de nombreuses bases
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="style.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div class="body">
            <div class="body_resize">
                <div class="News">
                    <h2>Accueil</h2>
                    <div class="bg"></div>
                    // AFFICHAGE LOGIN ET CREDIT : C'EST ICI QUE LA DONNEE CREDIT NE S'ACTUALISE PAS LORS DE L'ENVOI D'UN NOMBRE

                    <p><em>Votre login :</em> <?php echo $_SESSION['login']; ?></p>

                    <!-- Cela implique que tu aies mis à jour $_SESSION['credit'] à la connexion du membre à partir de la DB -->
                    <p><em>Crédits réstant :</em><?php echo $_SESSION['credit']; ?></p>
                    <p><a href="deconnexion.php"><em><strong>Déconnexion</strong></em></a></p>
                    <br />


                    <center>Le jeu commence dans : </center>
                    <center><script type="text/javascript" src="js/cpt.js"></script>
                        <div id="countbox"></div></center>
                    <p><center>Entrer votre numéro :</center></p>
                    <center>
                        // LE JEU COMMENCE ICI
                        <?php
                        
                        $query = "SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110";
                        $result = mysql_query($query);
                        // Recuperation des resultats
                        $winnerkadx = mysql_result($result, 0); // gagnant du jeu
                        $numobjetwin = mysql_result($result, 1); // numéro à découvrir
                        
                        if (empty($winnerkadx)) { // pas encore de gagnant
                        //debut du jeu
                            
                            if (!isset($_POST['reponse']) AND !isset($_POST['counter'])) { // arrivée sur la page
                                echo 'Tentez votre chance !!! <br/>';
                            } else if (isset($_POST['reponse']) AND empty($_POST['reponse'])) { // formulaire posté sans avoir rempli le champ reponse
                                    echo 'N\'ouliez pas de mettre une reponse!!!<br/>';
                                } else {
                                    
                                    if (preg_match('![0-9]!', $_POST['reponse'])) { // le coup est joué
                                    // le coup est joué, on supprime 1 crédit
                                    // dans la base de données
                                        $sql = mysql_query("UPDATE utilisateurs SET credit=credit -1 WHERE id_user=".$_SESSION['id_user']) or die ('Erreur : '.mysql_error());
                                        
                                        // puis dans la session puisque ce sont ces variables qui gèrent heu ... la session
                                        $_SESSION['credit']--;
                                        
                                        /* teste si l'utilisateur a gagné et donne des informations */
                                        if ($_POST['reponse'] < $numobjetwin) {
                                            echo 'le num&eacute;ro myst&egrave;re est sup&eacute;rieur! <br/>';
                                        } elseif ($_POST['reponse'] > $numobjetwin) {
                                            echo 'le num&eacute;ro myst&egrave;re est inf&eacute;rieur! <br/>';
                                        } elseif ($_POST['reponse'] == $numobjetwin) { // gagné !!!
                                            echo 'Gagn&Eacute;!!!<br/>';
                                            
                                            // mise à jour de la DB pour renseigné le gagnant de ce jeu
                                            $sql = mysql_query("UPDATE objetskdoox SET winnerkadx='".$_SESSION['login']."' WHERE numobjetwin='$numobjetwin'") or die ('Erreur : '.mysql_error());
                                            
                                            // tout ce que tu affiches avant (gagné, le gagnant est, ...) n'a pas d'intérêt si tu fais un location.replace à cet endroit
                                            echo 'Le Gagnant est '. $_SESSION['login'].'

                                            <script language="Javascript"> document.location.replace("redircpt.php")</script>';

                                        }
                                    } else {
                                        echo 'Votre réponse ne doit contenir que des chiffres !!!<br/>';
                                    }
                                }
                                
                            if ($_SESSION['credit'] > 0) { // l'utilisateur a encore des crédits sur son compte
                            // la seule info dont on a besoin est le chiffre donné par l'utilisateur, tout le reste est côté serveur
                                echo 'Vous avez encore ' . $_SESSION['credit'] . ' coups &agrave; jouer


                		<form action="Vcompte.php" method="post" name="lol">
                        	<input type="text" name="reponse" />
                                <input type="submit" value="envoi" />
                		</form>
                                <script language="javascript">document.lol.reponse.focus();</script>';

                                
                            } else { // plus de crédits, faut banquer !!
                                echo '<script type="text/javascript"> document.location.replace("achatcredits.php")</script>';
                            }
                        // fin du jeu
                        
                        } else { // un gagnant existe déjà pour ce jeu
                            echo '<center>Le Gagnant est '. $winnerkadx . '</center><br />

                            <center>Partie terminée</center>';   

                        }
                        ?></center>
                </div>
            </div>
        </div>
    </body>
</html>


Je le redis : c'est loin d'être parfait, mais en procédant ainsi tu limites très fortement les risques liés à la sécurité (le deuxième soucis que tu évoquais n'a plus lieu d'être), tu gagnes en rapidité et en clarté du code.

N'hésite pas à faire part des pbs que tu rencontres.

Cordialement,

Kohntark -

samedi 13 mars 2010 à 21:20:54 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

Ok merci , je vais regarder tes modifications de plus prés , je te tiendrai au courant du résultat ! mille merci !

Cordialement ,
FX
samedi 13 mars 2010 à 22:07:11 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

Ah ben ya du bon et du mauvais , mais on se rapproche de la vérité !
Alors je t'explique mes tests .

Donc j'ai utilisé ton code brillamment écrit et testé et le décompte se fait correctement lorsqu'on y joue.


1. Donc pour les tests , je pars dans le cas ou le chiffre n'a pas été trouvé et le gagnant non plus.

Lors de la connexion au compte membre , j'ai le message suivant : "Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 3 in /homez.318/kadoox/www/Vcompte.php on line 84" la ligne 84 correspond à "$numobjetwin = mysql_result($result, 1); // numéro à découvrir".

Lorsque j'essai d'inscrire le code a trouver , il me dit tout le temps "que le numéro mystère est inférieur!"

-FX-
samedi 13 mars 2010 à 22:29:51 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM

En gros si je comprends bien , il ne trouve pas les valeurs de $winnerkadx et $numobjetwin ?
lundi 15 mars 2010 à 07:29:31 | Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark

Membre Club
J'avais prévenu, j'ai écrit à la va vite !!

Tu peux simplement remplacer :
Code PHP :
$query = "SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110";
                        $result = mysql_query($query);
                        // Recuperation des resultats
                        $winnerkadx = mysql_result($result, 0); // gagnant du jeu
                        $numobjetwin = mysql_result($result, 1); // numéro à découvrir

par :
Code PHP :
$query = mysql_query("SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110");
$result = mysql_fetch_row($query); // 0=> gagnant du jeu, 1=> numéro à découvrir


Puis remplacer chaque occurrence de :
$winnerkadx par $result[0]
$numobjetwin par $result[1]

Je n'ai pas eu le temps de tester, j'aurai sans doute plus de temps ce soir.

Cordialement,


Kohntark -


1 2

Cette discussion est classée dans : mysql, user, id, echo, else


Répondre à ce message

Sujets en rapport avec ce message

Souci dans mon tableau [ par slhuilli ] Bonjour,je cherche la faille dans ce bout de code depuis p$ls jours sans trouver. Qu'elqu'un pourra peut être maider et m'expliquer . En fait, je n MySQL id? [ par Linuss ] Bonjour à tous, Voilà, lorsque j'essaie de faire un lien qui contient l'id (qui existe au ca sou quelqu'un poserait la question :) d'un tuto, je n'y a Besoin Aide Formulaire [ par Dexterage ] bonjour a tous :)voila jai un tit soucis avec ma page! Le but de la page étant de faire une lister d'évènement, en fonction des lieux. Il y a une tabl Mysql erreur, mais où ? [ par Tilix ] Bonjour,Je voudrais savoir où est l'erreur dans ceci :while($data = mysql_fetch_assoc($req))     {   if ('!'.$data['id'].'') { echo '(0)'; }    else { centrer une requete mysql [ par martiall ] Bonjour,bon le titre est un peu tiré par les cheveux mais bon...Pour simplifier, j'ai une table user (ID_USER, PSEUDO)depuis une page, je séléctionne Pagination en php URGENT [ par hoodlum ] Tout d'abord je suis debutant en php et J'ai un petit pb,jarrive pas a trouver l'erreur dans mon script de pagination pour une requete SQL qui retourn AU SECOUR [ par hoodlum ] voici mon script:   include("heads.inc.php");      $req=$_SERVER['REQUEST_METHOD'];     if($req=="POST")       $cho etre perdu [ par hoodlum ] contrairement a tous les message ke g pu laissé sur le forum ;G trouvé le probleme .mais je c pa pkoi.voici mon :   include("heads.inc.php");      $re UNE BOUCLE infernal HELP ME!!! [ par hoodlum ] Le problemes c ke o 2eme passage par pasage a l'url le script arrete d'etre executé a partir de la ou g mis le pointillé car le while n'est pas execut Authentification [ par Alricaus ] Bonjour à tous. J'aimerai réaliser un code en php, utilisant la base de donnée mysql, pour faire que lorsqu'une personne s'identifie sur l'index en ht


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales