Pb compte à rebours mysql

Résolu
Bonjour,

Voici code compte à rebours avec mysql

ce code fonctionne
dans mysql j'ai la table "temps_restant" avec 3 colonnes
"id" , "temps_fin" et j'en ai rajouté une "or" avec valeur par default "3000"

bien sur cette colonne or est un exemple

ce que je souhaite c'est que dès que le compte à rebours est terminé
soit par l'exemple si dessous 10 secondes
une valeur exemple +200 soit rajoutée à ma colonne or et deviendrai de ce fait 3200

tout en sachant que la valeur soit rajoutée même si l'internaute est déconnecté

merci par avance de vos réponses

<?php

// Déclaration de la variable id qui sert généralement pour plusieurs compteurs 
$id = '1';

// Nous récupérons le time actuel et nous lui ajoutons x secondes
$temps_final = time()+(10);

// Nous commencerons cette prmière étape par nous connecté à notre Base de Données		
include"connect_sql.php";

// Nous mettons à jour la table temps_restant, plus précisement la colone "temps_fin" avec la variable "$temps_finaux" qui possédera l'"id" 1
mysql_query("UPDATE temps_restant SET temps_fin ='".$temps_final."' WHERE id='".$id."'") or die("Un erreur c'est produite dans la base de donnée<br>"); 

?>


<?php 
// Nous sélectionnons la colone "temps_fin" de la table "temps_restant" avec pour "id" 1
// Vous pouvez remplacer le champs "id" par pseudo, joueur,...
// C'est à vous de voir.
$requete = "SELECT temps_fin  FROM temps_restant WHERE id = '1'" ;

// Ici nous envoyons la requete et nous demandons à être informé d'une éventuelle erreur
$resultat = mysql_query($requete) or die('Une erreur c\'est introduite rendant impossible l\'envoi de la requête.');

// La requête nous renvoie ici la donnée précédemment demandée
$row = mysql_fetch_array($resultat);

// Nous attribuons ici la donné à une variable pour plus de facilité
$temps_final = $row['temps_fin'];

// Ceci n'est pas une ligne obligatoire. 
// Elle permet d'afficher quand notre décompte prend fin.
echo 'Temps de fin '. date('H:i:s y-m-d', $temps_final) ."\n"; 

// Nous calculons le temps restant par rapport à l'heure actuelle.
$temps_final =  $temps_final - time();

// Puis nous refermons la base de données.
mysql_close();

?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Décompteur style Ogame</title>
</head>
<script>

// Nous créons la fonction temps qui permettra la création de notre compteur

function decompte_temps()
{
	var compteur=document.getElementById('compteur');
	
	// Déclaration des variables initiales
	
	s=temps_restant;
	m=0;
	h=0;
	j=0;
	
	// Si le temps restant est inférieur à 0
	if(s<0)
	{
		// Nous affichons le lien "Continuer" tant que le nombre de secondes restent inférieures à 0
		compteur.innerHTML="Terminé<br />"+"<a href=http://lien1.fr>continuer</a>"
	}
	// Si le temps restant est supérieur à 0
	else
	{
		// Dans cette partie nous allons vérifier que le nombre de seconde et de minute ne dépasse pas 60
		// Ainsi que le nombre d'heure ne dépasse pas 24
		
		if(s>59)
			{
				m=Math.floor(s/60);
				s=s-m*60
			}
		if(m>59)
			{
				h=Math.floor(m/60);
				m=m-h*60
			}
		if(h>23)
			{
				j=Math.floor(h/24);
				h=h-j*24
			}
		
		// cette partie sert uniquement à afficher 00 et non 0 si nos chiffre sont inférieur à 10.
		if(s<10)
			{
				s="0"+s
			}
		if(m<10)
			{
				m="0"+m
			}
		if(h<10)
			{
				h="0"+h
			}
		
		// Nous affichons le lien "Interrompre" tant que le nombre de secondes restent supérieures à 0
		compteur.innerHTML=j+":"+h+":"+m+":"+s+"<br /><a href=http://lien2.fr>Interrompre</a>"
	 }

	// Nous soustrayons une seconde à notre décompteur
	temps_restant=temps_restant-1;
	
	//Nous demandons à répéter cette opération toutes les secondes
	window.setTimeout("decompte_temps();",1000);

}
</script>
<body>
<div id="compteur">
		<script>
			// Nous affichons notre premier cycle de notre fonction
            temps_restant= "<?php echo $temps_final;?>";
			
			// Nous demandons à notre script de répéter la fonction "decompte_temps"
            decompte_temps();
        </script>
    </div>
</body>
</html>




--
Moi je plante et toi tu creuses !!!

5 réponses

  1. Bonjour

    Pour répondre à ce sujet
    et n'ayant reçu aucune réponse
    donc voici mon travail

    l'objectif était d'obtenir le résultat suivant
    nb d'habitants = nb dollars / 1h
    et celà généré de façon automatique avec une base mysql

    l'actualisation de la page se fait automatiquement toutes les 5 secondes

    je vous souhaite une bonne réflexion, pas évident à réaliser

    <?php
    include('config.php')
    ?>
    
    <html>
        <head>
                   <title>Mon bureau</title>
    <META HTTP-EQUIV="Refresh" CONTENT="5; URL=index.php">
    
    
        </head>
        <body>
    
    
    Bonjour<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>,<br />
    Bienvenue sur notre site.<br />
    Vous pouvez <a href="users.php">voir la liste des utilisateurs</a>.<br /><br />
    <?php
    
    if(isset($_SESSION['username']))
    {
    			$heureReel=time();
    			$dnn = mysql_fetch_array(mysql_query('select dollars, population, time from users where username="'.$_SESSION['username'].'"'));
    			$dollars = htmlentities($dnn['dollars'], ENT_QUOTES, 'UTF-8');
    			$population = htmlentities($dnn['population'], ENT_QUOTES, 'UTF-8');
    			$time = htmlentities($dnn['time'], ENT_QUOTES, 'UTF-8');			
    			$diftime = $heureReel - $time;			
    			$dollarsReel = 	($population /3600 * $diftime) + $dollars;		
    		    mysql_query("UPDATE users SET time ='".$heureReel."' WHERE username='".$_SESSION['username']."'") or die("Un erreur timeReel dans la base de donnée<br>"); 
    			mysql_query("UPDATE users SET dollars ='".$dollarsReel."' WHERE username='".$_SESSION['username']."'") or die("Un erreur dollarsReel dans la base de donnée<br>"); 
    ?>
    <center>
    <h1>Mon bureau</h1>
    </center>
    ARGENT PASSE: <?php echo $dollars; ?> Dollars<br />
    ARGENT REEL: <?php echo round ($dollarsReel); ?> Dollars<br />
    POPULATION: <?php echo $population; ?> Citoyens<br />
    TIME REEL: <?php echo $heureReel; ?> Secondes<br />
    TIME PASSE: <?php echo $time; ?> secondes
    
    
    <br />
    <a href="edit_infos.php">Modifier mon compte</a><br />
    <a href="XY.php">Choisissez votre position sur cette carte</a><br />
    <a href="batiment.php">Mes bâtiments</a><br />
    <a href="connexion.php">Se déconnecter</a>
    <?php
    }
    else
    {
    //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
    ?>
    <a href="sign_up.php">Inscription</a><br />
    <a href="connexion.php">Se connecter</a>
    <?php
    }
    ?>
    		</body>
    </html>
    1. Bonjour

      voici de nouveau mon code sans les commentaires

      <?php
      $id = '1';
      $temps_final = time()+(10);
      include"connect_sql.php";
      mysql_query("UPDATE temps_restant SET temps_fin ='".$temps_final."' WHERE id='".$id."'") or die("Un erreur c'est produite dans la base de donnée<br>"); 
      ?>
      
      <?php 
      $requete = "SELECT temps_fin  FROM temps_restant WHERE id = '1'" ;
      $resultat = mysql_query($requete) or die('Une erreur c\'est introduite rendant impossible l\'envoi de la requête.');
      $row = mysql_fetch_array($resultat);
      $temps_final = $row['temps_fin'];
      echo 'Temps de fin '. date('H:i:s y-m-d', $temps_final) ."\n"; 
      $temps_final =  $temps_final - time();
      mysql_close();
      ?>
      <!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>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Décompteur style Ogame</title>
      </head>
      <script>
      function decompte_temps()
      {
      	var compteur=document.getElementById('compteur');
      	s=temps_restant;
      	m=0;
      	h=0;
      	j=0;
      	if(s<0)
      	{
      		compteur.innerHTML="Terminé<br />"+"<a href=http://lien1.fr>continuer</a>"
      	}
      	else
      	{
      		if(s>59)
      			{
      				m=Math.floor(s/60);
      				s=s-m*60
      			}
      		if(m>59)
      			{
      				h=Math.floor(m/60);
      				m=m-h*60
      			}
      		if(h>23)
      			{
      				j=Math.floor(h/24);
      				h=h-j*24
      			}
      	
      		if(s<10)
      			{
      				s="0"+s
      			}
      		if(m<10)
      			{
      				m="0"+m
      			}
      		if(h<10)
      			{
      				h="0"+h
      			}
      		compteur.innerHTML=j+":"+h+":"+m+":"+s+"<br /><a href=http://lien2.fr>Interrompre</a>"
      	 }
      	temps_restant=temps_restant-1;
      	window.setTimeout("decompte_temps();",1000);
      }
      </script>
      <body>
      <div id="compteur">
      		<script>
                  temps_restant= "<?php echo $temps_final;?>";
                  decompte_temps();
              </script>
          </div>
      </body>
      </html>
      


      1. Pardon...... Pas de réponse!!
    2. S'il te plait efface les commentaires, car je n'arrive pas a lire votre code....
      je souhaite vous aider dans le futur
      1. bonjour,

        n'ayant reçu aucunes réponses
        je relance le sujet
        merci par avance

        Voici code compte à rebours avec mysql

        ce code fonctionne
        dans mysql j'ai la table "temps_restant" avec 3 colonnes
        "id" , "temps_fin" et j'en ai rajouté une "or" avec valeur par default "3000"

        bien sur cette colonne or est un exemple

        ce que je souhaite c'est que dès que le compte à rebours est terminé
        soit par l'exemple si dessous 10 secondes
        une valeur exemple +200 soit rajoutée à ma colonne or et deviendrai de ce fait 3200

        tout en sachant que la valeur soit rajoutée même si l'internaute est déconnecté

        merci par avance de vos réponses

        <?php
        
        // Déclaration de la variable id qui sert généralement pour plusieurs compteurs 
        $id = '1';
        
        // Nous récupérons le time actuel et nous lui ajoutons x secondes
        $temps_final = time()+(10);
        
        // Nous commencerons cette prmière étape par nous connecté à notre Base de Données		
        include"connect_sql.php";
        
        // Nous mettons à jour la table temps_restant, plus précisement la colone "temps_fin" avec la variable "$temps_finaux" qui possédera l'"id" 1
        mysql_query("UPDATE temps_restant SET temps_fin ='".$temps_final."' WHERE id='".$id."'") or die("Un erreur c'est produite dans la base de donnée<br>"); 
        
        ?>
        
        
        <?php 
        // Nous sélectionnons la colone "temps_fin" de la table "temps_restant" avec pour "id" 1
        // Vous pouvez remplacer le champs "id" par pseudo, joueur,...
        // C'est à vous de voir.
        $requete = "SELECT temps_fin  FROM temps_restant WHERE id = '1'" ;
        
        // Ici nous envoyons la requete et nous demandons à être informé d'une éventuelle erreur
        $resultat = mysql_query($requete) or die('Une erreur c\'est introduite rendant impossible l\'envoi de la requête.');
        
        // La requête nous renvoie ici la donnée précédemment demandée
        $row = mysql_fetch_array($resultat);
        
        // Nous attribuons ici la donné à une variable pour plus de facilité
        $temps_final = $row['temps_fin'];
        
        // Ceci n'est pas une ligne obligatoire. 
        // Elle permet d'afficher quand notre décompte prend fin.
        echo 'Temps de fin '. date('H:i:s y-m-d', $temps_final) ."\n"; 
        
        // Nous calculons le temps restant par rapport à l'heure actuelle.
        $temps_final =  $temps_final - time();
        
        // Puis nous refermons la base de données.
        mysql_close();
        
        ?>
        <!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>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Décompteur style Ogame</title>
        </head>
        <script>
        
        // Nous créons la fonction temps qui permettra la création de notre compteur
        
        function decompte_temps()
        {
        	var compteur=document.getElementById('compteur');
        	
        	// Déclaration des variables initiales
        	
        	s=temps_restant;
        	m=0;
        	h=0;
        	j=0;
        	
        	// Si le temps restant est inférieur à 0
        	if(s<0)
        	{
        		// Nous affichons le lien "Continuer" tant que le nombre de secondes restent inférieures à 0
        		compteur.innerHTML="Terminé<br />"+"<a href=http://lien1.fr>continuer</a>"
        	}
        	// Si le temps restant est supérieur à 0
        	else
        	{
        		// Dans cette partie nous allons vérifier que le nombre de seconde et de minute ne dépasse pas 60
        		// Ainsi que le nombre d'heure ne dépasse pas 24
        		
        		if(s>59)
        			{
        				m=Math.floor(s/60);
        				s=s-m*60
        			}
        		if(m>59)
        			{
        				h=Math.floor(m/60);
        				m=m-h*60
        			}
        		if(h>23)
        			{
        				j=Math.floor(h/24);
        				h=h-j*24
        			}
        		
        		// cette partie sert uniquement à afficher 00 et non 0 si nos chiffre sont inférieur à 10.
        		if(s<10)
        			{
        				s="0"+s
        			}
        		if(m<10)
        			{
        				m="0"+m
        			}
        		if(h<10)
        			{
        				h="0"+h
        			}
        		
        		// Nous affichons le lien "Interrompre" tant que le nombre de secondes restent supérieures à 0
        		compteur.innerHTML=j+":"+h+":"+m+":"+s+"<br /><a href=http://lien2.fr>Interrompre</a>"
        	 }
        
        	// Nous soustrayons une seconde à notre décompteur
        	temps_restant=temps_restant-1;
        	
        	//Nous demandons à répéter cette opération toutes les secondes
        	window.setTimeout("decompte_temps();",1000);
        
        }
        </script>
        <body>
        <div id="compteur">
        		<script>
        			// Nous affichons notre premier cycle de notre fonction
                    temps_restant= "<?php echo $temps_final;?>";
        			
        			// Nous demandons à notre script de répéter la fonction "decompte_temps"
                    decompte_temps();
                </script>
            </div>
        </body>
        </html>
        
        


        Moi je plante et toi tu creuses !!!
        1. Bonjour,
          n'ayant reçu aucunes réponses
          je relance le sujet
          merci par avance