Page 1 sur 1

Rafraichir mon compte à rebours

Posté : 11 déc. 2012, 00:09
par Jynno2
Bonsoir ,

Je viens de faire un petit code me permettant d'afficher un compte à rebours :
[javascript]
<body>

<div id="promoflash" style="width: 686px; height:46px; background: url('promoflash.png');">
<p>
<div id="compte_a_rebours"><noscript>Fin de l'évènement le 1er janvier 2013.</noscript></div>
<script type="text/javascript">
function compte_a_rebours()
{
var compte_a_rebours = document.getElementById("compte_a_rebours");

var date_actuelle = new Date();
var date_evenement = new Date("Dec 10 23:30:00 2012");
var total_secondes = (date_evenement - date_actuelle) / 1000;

var prefixe = "Compte à rebours terminé dans ";
if (total_secondes < 0)
{
prefixe = "Compte à rebours est terminé "; // On modifie le préfixe si la différence est négatif

total_secondes = Math.abs(total_secondes); // On ne garde que la valeur absolue

}

if (total_secondes > 0)
{
var jours = Math.floor(total_secondes / (60 * 60 * 24));
var heures = Math.floor((total_secondes - (jours * 60 * 60 * 24)) / (60 * 60));
minutes = Math.floor((total_secondes - ((jours * 60 * 60 * 24 + heures * 60 * 60))) / 60);
secondes = Math.floor(total_secondes - ((jours * 60 * 60 * 24 + heures * 60 * 60 + minutes * 60)));

var et = "et";
var mot_jour = "jours,";
var mot_heure = "heures,";
var mot_minute = "minutes,";
var mot_seconde = "secondes";

if (jours == 0)
{
jours = '';
mot_jour = '';
}
else if (jours == 1)
{
mot_jour = "jour,";
}

if (heures == 0)
{
heures = '';
mot_heure = '';
}
else if (heures == 1)
{
mot_heure = "heure,";
}

if (minutes == 0)
{
minutes = '';
mot_minute = '';
}
else if (minutes == 1)
{
mot_minute = "minute,";
}

if (secondes == 0)
{
secondes = '';
mot_seconde = '';
et = '';
}
else if (secondes == 1)
{
mot_seconde = "seconde";
}

if (minutes == 0 && heures == 0 && jours == 0)
{
et = "";
}

compte_a_rebours.innerHTML = prefixe + jours + ' ' + mot_jour + ' ' + heures + ' ' + mot_heure + ' ' + minutes + ' ' + mot_minute + ' ' + et + ' ' + secondes + ' ' + mot_seconde;
}
else
{
compte_a_rebours.innerHTML = 'Compte à rebours terminé.';
}

var actualisation = setTimeout("compte_a_rebours();", 1000);
}
compte_a_rebours();
</script>
</p>
</div>
</body>

[/javascript]

1er question : Par contre je suis obliger de rafraichir à chaque fois ma page pour voir le compte à rebours défilé , est il possible de le faire défilé automatiquement durant la navigation?
2e question : Comment récupérer la date directement d'un champ de ma base de données et surtout est il possible de le faire sur un seul champ ?


Merci d'avance

Re: Rafraichir mon compte à rebours

Posté : 11 déc. 2012, 09:11
par piotrowski-s
php est un language server, par conséquent tu es obligé d'envoyer une requête au server afin d'obtenir le résultat.

En revanche en javascript tu n'as pas ce soucis puisqu'il s'exécute côté client.

Une alternative : passer par ajax (ajax s'exécute de manière asynchrone et tu n'as pas besoin de rafraichir le navigateur)

une autre alternative: rester sur javascript

pour la deuxième question, tu peux faire une requête classique: en sql: SELECT `monchamp` FROM `matable` WHERE `tes criteres` ...

Re: Rafraichir mon compte à rebours

Posté : 11 déc. 2012, 10:48
par sirakawa
J'ai peut-être un code en javascript (trouvé sur internet) mais suite à un crash disque, le retrouver risque d'être aléatoire. Faut-il le chercher?

Re: Rafraichir mon compte à rebours

Posté : 11 déc. 2012, 19:57
par Jynno2
Bonsoir ,

Pour la question 1 j'ai trouvé .
Ensuite il va falloir que je créer récupère la date via une variable je suis en train de le coder et en dernière étape il faudra que j'affiche terminé car pour le moment le code me donne le compte a rebours est terminé depuis 2 heures par exemple.

Re: Rafraichir mon compte à rebours

Posté : 12 déc. 2012, 09:54
par piotrowski-s
c'est du javascript

tu fais basiquement un truc du genre

[javascript]<script type="text/javascript">
var date1 = <?php echo $var ; ?>; // ou $var est ta variable de la base de donnée
var currentTime = new Date(); //Date du jour
if (date1 >= currentTime)
{
document.getElementById('iddetondiv').value = "Rebours à zéro" ;
}
else
{
// Tu continu d'exécuter ton rebours
}
</script>[/javascript]

Re: Rafraichir mon compte à rebours

Posté : 12 déc. 2012, 16:47
par Jynno2
Merci pour l'infos , par contre je rencontre un autre problème , en faite je dois utiliser 4 fois le même script dans une même page . Chaque fois que j'utilise un script la date doit dépendre des informations dans la bdd suivant l'ID , le problème c'est que le script ne fonctionne qu'une fois , impossible de le répéter.

Re: Rafraichir mon compte à rebours

Posté : 12 déc. 2012, 17:14
par piotrowski-s
tu as quoi comme message d'erreur dans la console ? regarde sur le google bug de chrome en faisant clic droit et inspecter l'élément puis tu as un onglet "console"

Re: Rafraichir mon compte à rebours

Posté : 13 déc. 2012, 01:07
par Jynno2
Pour le problème de la répétition du script , je n'ai pas de message d'erreur , le script ne se répète pas c'est tout .
En faite j'appelle directement avec ce code <?php include("compteur.php"); ?> le script mais il ne marche que ma première div id = promo.

Voici mon code :
<div id="bonplan">
  <div id="col1">
   <img src="<?php echo $donnees['image']?>" width="200" height="304" alt="" /> 
    <div id="promo">
     <h2><?php echo $donnees['titre']?></h2><p>Ecrit par Romzz27 |  <?php echo $donnees['date']?></p>
     <?php include("compteur.php"); ?>
     <p><?php echo $donnees['desc']?></p>
     <p><a href="<?php echo $donnees['lien']?>" class="link-style">Accéder à l'offre</a></p>
  </div>
   <img src="<?php echo $donnees['image']?>" width="200" height="304" alt="" /> 
  <div id="promo">
     <h2><?php echo $donnees['titre']?></h2><p>Ecrit par Romzz27 |  <?php echo $donnees['date']?></p>
     <?php include("compteur.php"); ?>
     <p><?php echo $donnees['desc']?></p>
     <p><a href="<?php echo $donnees['lien']?>" class="link-style">Accéder à l'offre</a></p>
  </div>
    <img src="<?php echo $donnees['image']?>" width="200" height="304" alt="" /> 
  <div id="promo">
     <h2><?php echo $donnees['titre']?></h2><p>Ecrit par Romzz27 |  <?php echo $donnees['date']?></p>
     <?php include("compteur.php"); ?>
     <p><?php echo $donnees['desc']?></p>
     <p><a href="<?php echo $donnees['lien']?>" class="link-style">Accéder à l'offre</a></p>
  </div>
    <img src="<?php echo $donnees['image']?>" width="200" height="304" alt="" /> 
  <div id="promo">
    <h2><?php echo $donnees['titre']?></h2><p>Ecrit par Romzz27 |  <?php echo $donnees['date']?></p>
    <?php include("compteur.php"); ?>
    <p><?php echo $donnees['desc']?></p>
    <p><a href="<?php echo $donnees['lien']?>" class="link-style">Accéder à l'offre</a></p>
  </div>
</div>	
Par contre j'ai une autre question , je voudrais que dans chaque balise <div id="promo"> , les informations que je récupère de ma bdd correspondent à un id différent.
Exemple :
  • 1er div id="promo" => informations de l'ID 1
  • 2e div id="promo" => informations de l'ID 2
  • 3e div id="promo" => informations de l'ID 3
  • 4e div id="promo" => informations de l'ID 4
Voici le code me permettant de récupérer les données de ma base de données :
<?php try  { 	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) {  die('Erreur : '.$e->getMessage()); } $id = intval($_GET['id']);   $reponse = $bdd->query('SELECT * FROM promo WHERE id=' . $id); while ($donnees = $reponse->fetch()) { ?>

Re: Rafraichir mon compte à rebours

Posté : 13 déc. 2012, 07:56
par xTG
echo '<div id="promo' . $id . '">...</div>';
?

Re: Rafraichir mon compte à rebours

Posté : 13 déc. 2012, 19:09
par Jynno2
Je vais regarder mais pour l'instant j'ai un problème avec le code car je reste en commentaire , il doit manquer un ' ou " quelques part.

Je voudrais que quand j'affiche la page bonplan.php j'ai les 4 derniers bon plan de ma base de données je n'y arrive pas .