Code javascript dans while php
Résolu
dwieser
Messages postés
235
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voici mon soucis
j'ai créé un code php dont je vous en donne une partie
et également plus bas le code javascript (le code javascript fonctionne)
je récupère des données via une base de données MYSQL
sous forme tableau
et je parcours tous les tableaux pour récupérer un time
c'est dans mon code echo 'tps compte à rebours: '.$exe[2].'<br />';
donc à chaque boucle mon souhait est de voir le compte à rebours
donc là je bug
un compte à rebours ds une boucle oui peut être mais je ne vois pas
comment je peux m'y prendre "lui est en javascript "
bien entendu à chaque passage de boucle while $exe[2] change et je vois les valeurs sous
forme tableau
MERCI PAR AVANCE DE VOTRE AIDE
UNE PARTIE DE MON CODE PHP
AVEC MA BOUCLE "WHILE"
VOICI LE CODE DU COMPTE A REBOURS JAVASCRIPT
Voici mon soucis
j'ai créé un code php dont je vous en donne une partie
et également plus bas le code javascript (le code javascript fonctionne)
je récupère des données via une base de données MYSQL
sous forme tableau
et je parcours tous les tableaux pour récupérer un time
c'est dans mon code echo 'tps compte à rebours: '.$exe[2].'<br />';
donc à chaque boucle mon souhait est de voir le compte à rebours
donc là je bug
un compte à rebours ds une boucle oui peut être mais je ne vois pas
comment je peux m'y prendre "lui est en javascript "
bien entendu à chaque passage de boucle while $exe[2] change et je vois les valeurs sous
forme tableau
MERCI PAR AVANCE DE VOTRE AIDE
UNE PARTIE DE MON CODE PHP
AVEC MA BOUCLE "WHILE"
else { $tab = explode ("|",$tab); $i=0; while ($i<count($tab)) { echo '<h1>'.$tab[$i].'</h1>'; $exe = explode ("|",$dpr[$tab[$i]]); echo 'time_deb_const: '.$exe[0].'<br />'; echo 'time_fin_const: '.$exe[1].'<br />'; echo 'tps compte à rebours: '.$exe[2].'<br />'; ?> //C EST CETTE PARTIE QUI M EMBETE <div id="compteur_production"> <script> temps_restant= "<?php echo $exe[2];?>"; compteur_production(); </script> </div> <?php $i++; echo '<hr color="blue">'; } }
VOICI LE CODE DU COMPTE A REBOURS JAVASCRIPT
function compteur_production() { var compteur_production=document.getElementById('compteur_production'); s=temps_restant; m=0; h=0; j=0; if(s<0) { //compteur.innerHTML="Terminé<br />" document.location.href="city.php" } 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_production.innerHTML=j+":"+h+":"+m+":"+s+"" } temps_restant=temps_restant-1; window.setTimeout("compteur_production();",1000); } </script>
A voir également:
- Code javascript dans while php
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
6 réponses
Bonjour
Tu as mis ton compte à rebours à l'intérieur d'une boucle : veux-tu un seul ou plusieurs compte à rebours ?
Si tu en veux plusieurs, problème : tu crées plusieurs div avec le même id, ce qui est interdit. Et c'est logique que ce soit interdit, car sinon ton getElementById va chercher quoi ?
Si tu en veux vraiment plusieurs, il faut leur donner des noms différents mais il faut aussi plusieurs compteurs, donc remplacer la variable simple temps_restant par un tableau.
D'autre part (et bien moins grave), faire -1 à chaque passage dans la fonction est une très mauvaise méthode, les tempos étant plus qu'approximatives... Il vaut mieux initialiser ta variable avec une heure de fin et calculer à chaque fois le temps restant, il n'y aura pas de dérive du comptage.
Tu as mis ton compte à rebours à l'intérieur d'une boucle : veux-tu un seul ou plusieurs compte à rebours ?
Si tu en veux plusieurs, problème : tu crées plusieurs div avec le même id, ce qui est interdit. Et c'est logique que ce soit interdit, car sinon ton getElementById va chercher quoi ?
Si tu en veux vraiment plusieurs, il faut leur donner des noms différents mais il faut aussi plusieurs compteurs, donc remplacer la variable simple temps_restant par un tableau.
D'autre part (et bien moins grave), faire -1 à chaque passage dans la fonction est une très mauvaise méthode, les tempos étant plus qu'approximatives... Il vaut mieux initialiser ta variable avec une heure de fin et calculer à chaque fois le temps restant, il n'y aura pas de dérive du comptage.
bonjour,
j'ai pris note
je me doutais bien qu'il fallait plusieurs div id
justement j'ai bûché dessus pour eviter d'avoir à écrire 10000 lignes
concernant le passage du -1 du code javascript
afin de ne pas avoir de dérive du comptage
je vais passer par "date()"
j'ai trouvé une solution avec mon while php
et mes compte à rebours
j'y connais pas grand chose en javascript
alors j'ai cherché des exemples et j'en ai analysé
quelques uns bien que sur internet y a pas énormément d'exemple
j'en ai choisi un qui est intéressant
je fais encore quelques essais mais pour l'instant
c'est bon
je vous exposerai le résultat final
y a deux ou trois petite chose que je n'ai pas très bien compris
dont je demanderai explication
a très bientot
Moi je plante et toi tu creuses !!!
j'ai pris note
je me doutais bien qu'il fallait plusieurs div id
justement j'ai bûché dessus pour eviter d'avoir à écrire 10000 lignes
concernant le passage du -1 du code javascript
afin de ne pas avoir de dérive du comptage
je vais passer par "date()"
j'ai trouvé une solution avec mon while php
et mes compte à rebours
j'y connais pas grand chose en javascript
alors j'ai cherché des exemples et j'en ai analysé
quelques uns bien que sur internet y a pas énormément d'exemple
j'en ai choisi un qui est intéressant
je fais encore quelques essais mais pour l'instant
c'est bon
je vous exposerai le résultat final
y a deux ou trois petite chose que je n'ai pas très bien compris
dont je demanderai explication
a très bientot
Moi je plante et toi tu creuses !!!
bonjour,
voici le code que j'ai trouvé
que veut dire date_event????
Après je vois id_compte_rebours partie javascript, et plus bas vers mon code php
j'ai setInterval(function(){Rebour('_______,'compte_rebours_<?php echo $i;?>');}, ____);
j'ai du mal à saisir peut on m'expliquer ????
j'ai essayé plusieurs compte à rebours, le script fonctionne
mais j'essaye de le modifier
et là j'ai vraiment de gros soucie enfin pour moi
voici ce que j'aurai espéré
lorsque le compte à rebours arrive à zéro, rafraichissement de la page
là on peut dire pas de soucis c'est eventuellement ds mon javascript en else
mais pour aller plus loin
dans mon code php j'aurai voulu donné des condition soit deux au préalable
première condition c'est si le compte à rebours est supérieur à zéro on affiche le compte à rebours
sinon si le compte a rebours est inferieur à zéro on affiche un lien
MERCI PAR AVANCE DE VOS EXPLICATIONS
voici le code javascript
voici une partie de mon code php
voici le code que j'ai trouvé
que veut dire date_event????
Après je vois id_compte_rebours partie javascript, et plus bas vers mon code php
j'ai setInterval(function(){Rebour('_______,'compte_rebours_<?php echo $i;?>');}, ____);
j'ai du mal à saisir peut on m'expliquer ????
j'ai essayé plusieurs compte à rebours, le script fonctionne
mais j'essaye de le modifier
et là j'ai vraiment de gros soucie enfin pour moi
voici ce que j'aurai espéré
lorsque le compte à rebours arrive à zéro, rafraichissement de la page
là on peut dire pas de soucis c'est eventuellement ds mon javascript en else
mais pour aller plus loin
dans mon code php j'aurai voulu donné des condition soit deux au préalable
première condition c'est si le compte à rebours est supérieur à zéro on affiche le compte à rebours
sinon si le compte a rebours est inferieur à zéro on affiche un lien
MERCI PAR AVANCE DE VOS EXPLICATIONS
voici le code javascript
<script type="text/JavaScript"> function Rebour(date_event,id_compte_rebours) { var Affiche=document.getElementById(id_compte_rebours); var date1 = new Date(); var date2 = new Date (date_event); // Date et heure de l'événement var sec = (date2 - date1) / 1000; // Temps donné en millièmes de seconde var n = 24 * 3600; //nombre de secondes dans un jour // Si le temps restant est supérieur à 0 if (sec >= 0) { j = Math.floor (sec / n); h = Math.floor ((sec - (j * n)) / 3600); mn = Math.floor ((sec - ((j * n + h * 3600))) / 60); sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60))); if(j == 0){ j = ''; Jour = ''; } else { Jour = (j == 1) ? "j <span class='or'>|</span>" : "j <span class='or'>|</span>"; } if(h == 0){ h = ''; Heure = ''; } else { Heure = (h == 1) ? "h <span class='or'>|</span>" : "h <span class='or'>|</span>"; } if(mn == 0){ mn = ''; Minute = ''; } else { Minute = (mn == 1) ? "min <span class='or'>|</span>" : "min <span class='or'>|</span>"; } if(sec == 0){ sec = ''; Seconde = ''; Et = ''; } else { Seconde = (sec == 1) ? "sec" : "sec"; Et = (mn == 0 && h == 0 && j == 0) ? "" : ""; } Affiche.innerHTML = j + ' ' + Jour + ' ' + h + ' ' + Heure + ' ' + mn + ' ' + Minute + ' ' + Et + ' ' + sec + ' ' + Seconde; }else{ Affiche.innerHTML="<font color=\"red\">C'est fini !!</font>"; //document.location.href="voir_production.php" } } </script>
voici une partie de mon code php
else { $tab = explode ("|",$tab); $i=0; while ($i<count($tab)) { echo '<h1>'.$tab[$i].'</h1>'; $exe = explode ("|",$dpr[$tab[$i]]); echo 'time_deb_const: '.$exe[0].'<br />'; echo 'time_fin_const: '.$exe[1].'<br />'; echo 'tps compte à rebours: '.'<br />'; echo $dat1[$i] = strtotime($exe[1]).'<br />'; echo $dat0 = strtotime(date("Y-m-d H:i:s")).'<br />'; if ($dat1[$i]>$dat0) //si "time construction" est superieur à "time()", // on affiche le compte à rebours { ?> <div id="compte_rebours_<?php echo $i;?>"> <script type="text/JavaScript"> setInterval(function(){Rebour('<?php echo $exe[1];?>','compte_rebours_<?php echo $i;?>');}, 1000); </script> </div> <?php } if ($dat1[$i]<$dat0)//ou else // si "time construction" est inferieur à "time()", //on n'affiche pas le compte à rebours mais on affiche un lien { echo '<a href="city.php">acceuil</a>'; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
voici le code que j'ai trouvé
que veut dire date_event????
Après je vois id_compte_rebours partie javascript, et plus bas vers mon code php
j'ai setInterval(function(){Rebour('_______,'compte_rebours_<?php echo $i;?>');}, ____);
j'ai du mal à saisir peut on m'expliquer ????
le code fonctionne très bien la partie javascript et également la partie php
mais après de nombreuses vérifications
j'ai pu remarqué qu'il fallait rajouter 1 heure "heure d'hivers"
mais cela pose problème comment faire pour changer ce changement d'heure été hivers sans le faire manuellement directement ds le code ????
Une petite idée?????
Moi je plante et toi tu creuses !!!
voici le code que j'ai trouvé
que veut dire date_event????
Après je vois id_compte_rebours partie javascript, et plus bas vers mon code php
j'ai setInterval(function(){Rebour('_______,'compte_rebours_<?php echo $i;?>');}, ____);
j'ai du mal à saisir peut on m'expliquer ????
le code fonctionne très bien la partie javascript et également la partie php
mais après de nombreuses vérifications
j'ai pu remarqué qu'il fallait rajouter 1 heure "heure d'hivers"
mais cela pose problème comment faire pour changer ce changement d'heure été hivers sans le faire manuellement directement ds le code ????
Une petite idée?????
<?php include('config.php') ?> <!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" /> <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" /> <title>Voir mes productions</title> <script type="text/JavaScript"> function Rebour(date_event,id_compte_rebours) { var Affiche=document.getElementById(id_compte_rebours); var date1 = new Date(); var date2 = new Date (date_event); // Date et heure de l'événement var sec = (date2 - date1) / 1000; // Temps donné en millièmes de seconde var n = 24 * 3600; //nombre de secondes dans un jour // Si le temps restant est supérieur à 0 if (sec >= 0) { j = Math.floor (sec / n); h = Math.floor ((sec - (j * n)) / 3600); mn = Math.floor ((sec - ((j * n + h * 3600))) / 60); sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60))); if(j == 0){ j = ''; Jour = ''; } else { Jour = (j == 1) ? "j <span class='or'>|</span>" : "j <span class='or'>|</span>"; } if(h == 0){ h = ''; Heure = ''; } else { Heure = (h == 1) ? "h <span class='or'>|</span>" : "h <span class='or'>|</span>"; } if(mn == 0){ mn = ''; Minute = ''; } else { Minute = (mn == 1) ? "min <span class='or'>|</span>" : "min <span class='or'>|</span>"; } if(sec == 0){ sec = ''; Seconde = ''; Et = ''; } else { Seconde = (sec == 1) ? "sec" : "sec"; Et = (mn == 0 && h == 0 && j == 0) ? "" : ""; } Affiche.innerHTML = j + ' ' + Jour + ' ' + h + ' ' + Heure + ' ' + mn + ' ' + Minute + ' ' + Et + ' ' + sec + ' ' + Seconde; }else{ //Affiche.innerHTML="<font color=\"red\">C'est fini !!</font>"; document.location.href="voir_production.php" } } </script> </head> <body> <center> <img src = "default/images/titre.gif"></img><br /> </center> <?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?><br /> <?php echo "id: ".$_SESSION['userid'];?><br /> <br /> <?php //Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter if(isset($_SESSION['username'])) { //On compte le nombre de nouveaux messages que lutilisateur a $nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"')); //Le nombre de nouveaux messages est stoque dans la variable $nb_new_pm $nb_new_pm = $nb_new_pm['nb_new_pm']; //on enregistre heure actuel et heure fin de connection $time_fin_connect = time() + $seconde_fin_connect; mysql_query("UPDATE users SET time_connect = '".time()."' , time_fin_connect = '".$time_fin_connect."' WHERE username='".$_SESSION['username']."'") or die("erreur time_connect ou time_fin_connect<br>"); if ($_SESSION['username']=='admin') { ?> <a href="gestion_production.php">Gestion des productions</a><br /> <?php } ?> <a href="accueil.php">Accueil</a><br /> <a href="city.php">Ma ville</a><br /> <a href="creer_production.php">Créer une production</a><br /> <a href="voir_production.php">Voir mes productions</a><br /> <a href="production.php">Acheter une production</a><br /> <a href="users.php">Classement</a><br /> <a href="option.php">Option</a><br /> <a href="list_pm.php">Messages(<?php echo $nb_new_pm; ?> non-lus)</a><br /> <a href="index.php">Se déconnecter</a><br /> <br /> <?php include_once "calcul.php"; $result = mysql_query('SELECT * FROM production where username = "'.$_SESSION['username'].'"'); $dpr = mysql_fetch_array($result, MYSQL_ASSOC); $_SESSION['production_id'] = $dpr['id']; echo $_SESSION['production_id'].'<br />'; echo "production de: ".$dpr['username'].'<br />'; echo "nom des produits: ".$dpr['production'].'<br />'; $tab=$dpr['production']; if($tab=="") { echo '<h1>Vous ne possédez pas de productions actuellement</h1>'; } else { $tab = explode ("|",$tab); $i=0; while ($i<count($tab)) { echo '<h1>'.$tab[$i].'</h1>'; $exe = explode ("|",$dpr[$tab[$i]]); echo 'time deb: '.$exe[0].'<br />'; echo 'time fin: '.$exe[1].'<br />'; echo 'tps compte à rebours: '.'<br />'; echo $dat0[$i] = strtotime($exe[0]).'heure deb<br />'; echo $dat1[$i] = strtotime($exe[1]).'heure fin<br />'; $madate= date("Y-m-d H:i:s"); list($annee,$mois,$jour,$h,$m,$s)=sscanf($madate,"%d-%d-%d %d:%d:%d"); echo "Ancienne date: ".$annee."-".$mois."-".$jour." ".$h.":".$m.":".$s."<br />"; $h+=1; $timestamp=mktime($h,$m,$s,$mois,$jour,$annee); $dat5=date('Y-m-d H:i:s',$timestamp); echo $dat5 = strtotime($dat5); if ($dat5<$dat1[$i]) //si "time construction" est superieur à "time()", // on affiche le compte à rebours { ?> <div id="compte_rebours_<?php echo $i;?>"> <script type="text/JavaScript"> setInterval(function(){Rebour('<?php echo $exe[1];?>','compte_rebours_<?php echo $i;?>');}, 1000); </script> </div> <?php } else//ou else // si "time construction" est inferieur à "time()", //on n'affiche pas le compte à rebours mais on affiche un lien { echo '<a href="city.php">acceuil</a>'; } //on recupere des donnees via id_production pour calcul $nm_pt = mysql_real_escape_string($tab[$i]); $result_id = mysql_query('SELECT * FROM id_production where nm_pt="'.$nm_pt.'"'); $did = mysql_fetch_array($result_id, MYSQL_ASSOC); echo 'temps de fabrication: '.$did['tps_fab'].'<br />'; echo 'nom de la matière n°1: '.$did['nm_mat_pre1'].'<br />'; echo 'image matière première n°1: '.$did['url1'].'<br />'; echo 'consommation de la matière n°1: '.$did['cons_mp1'].'<br />'; ?> <a href="const_id.php?id=<?php echo $nm_pt; ?>">construire</a> <?php $i++; echo '<hr color="blue">'; } } // echo "temps de fabrication du produit :".$dpr['tps_fab'].'<br />'; // echo "combien de vente par heure pour 1000 personnes :".$dpr['comb_vt'].'<br />'; // echo "nom de la matière n°1 :".$dpr['nm_mat_pre1'].'<br />'; // echo "image de la matière n°1 :".$dpr['url1'].'<br />'; //echo "prix achat de la matiere n°1 :".$dpr['px_at_mp1'].'<br />'; // echo "consommation de la matiere n°1 :".$dpr['cons_mp1'].'<br />'; // echo "nom de la matière n°2 :".$dpr['nm_mat_pre2'].'<br />'; // echo "image de la matière n°2 :".$dpr['url2'].'<br />'; // echo "prix achat de la matiere n°2 :".$dpr['px_at_mp2'].'<br />'; // echo "consommation de la matiere n°2 :".$dpr['cons_mp2'].'<br />'; // echo "nom de la matière n°3 :".$dpr['nm_mat_pre3'].'<br />'; // echo "image de la matière n°3 :".$dpr['url3'].'<br />'; // echo "prix achat de la matiere n°3 :".$dpr['px_at_mp3'].'<br />'; // echo "consommation de la matiere n°3 :".$dpr['cons_mp3'].'<br />'; ?> <!-- <a href="achat_production.php?id=<?php //echo $dpr['id'];?>">acheter</a><br /> <hr color="blue">--> <?php } else { //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter header('location:index.php'); } ?> </body> </html>
Moi je plante et toi tu creuses !!!
Bonjour
date_event représente dans la fonction la date de l'événement. Je suppose que ce script a été écrit par un français, car en anglais on dirait plutôt event_date ^^
compte_rebours_<?php echo $i;?> : ce code est lié au problème que je te signalais, si tu voulais plusieurs comptes à rebours. Il faut créer des <div> avec des noms différents, et, comme on passe le nom du div à la fonction, il faut aussi les appeler en passant des noms différents. Ces noms différents sont obtenus en ajoutant un compteur à la fin d'un nom de base. Quand on repasse dans la boucle avec $i=0,1,2 .. on crée successivement des div avec les noms compte_rebours_0,compte_rebours_1,compte_rebours_2... et on appelle la fonction Rebour en lui passant ces noms de div. Tous ces noms de div sont différents, chaque copie de la fonction peut retrouver le sien sans se mêler les pinceaux avec ceux des autres.
Pour ton problème d'heure d'hiver / heure d'été, je n'ai pas de réponse.
date_event représente dans la fonction la date de l'événement. Je suppose que ce script a été écrit par un français, car en anglais on dirait plutôt event_date ^^
compte_rebours_<?php echo $i;?> : ce code est lié au problème que je te signalais, si tu voulais plusieurs comptes à rebours. Il faut créer des <div> avec des noms différents, et, comme on passe le nom du div à la fonction, il faut aussi les appeler en passant des noms différents. Ces noms différents sont obtenus en ajoutant un compteur à la fin d'un nom de base. Quand on repasse dans la boucle avec $i=0,1,2 .. on crée successivement des div avec les noms compte_rebours_0,compte_rebours_1,compte_rebours_2... et on appelle la fonction Rebour en lui passant ces noms de div. Tous ces noms de div sont différents, chaque copie de la fonction peut retrouver le sien sans se mêler les pinceaux avec ceux des autres.
Pour ton problème d'heure d'hiver / heure d'été, je n'ai pas de réponse.