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,
    n'ayant reçu aucunes réponses
    je relance le sujet
    merci par avance

    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. 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

          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. 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>