A voir également:
- Probleme construction boucle WHILE
- Bash do while ✓ - Forum Shell
- Factorielle en c boucle while - Forum C
- Mon pc s'allume et s'éteint en boucle - Forum Matériel informatique
- Logiciel construction maison - Guide
- Boucle cmd - Forum Programmation
8 réponses
pitxu
Messages postés
689
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2015
94
7 sept. 2007 à 09:02
7 sept. 2007 à 09:02
Je ne suis pas sur, mais essaie :
require ("connectdb.php");
$id=1;
while($id < 53)//boucle pour passer à la question suivante jusqu'à la 53
{
$datedebut="SELECT date_deb,date_fin FROM parties WHERE id=$id";// selection des 2 dates pour la question 1
$date=mysql_query($datedebut)
or die('Erreur SQL !'.$date.'
'.mysql_error());
$datefetch=mysql_fetch_array($date);
$datedeb=$datefetch['date_deb'];
$datefin=$datefetch['date_fin'];
$datedebtime=strtotime($datedeb);//Conversion timestamp date_deb
$datefintime=strtotime($datefin);//conversion timestamps date_fin
$datediff=$datefintime-$datedebtime;//Différence entre les deux dates
$nbSecondes= $datediff -(mktime($datefin) % $datediff);
echo "Id question : $id<br>";
echo "Compte à rebours : $nbSecondes<br>";//c'est ce qui est récupéré par le javascript...
echo "Date debut : $datedeb<br/>";
echo "Date fin :$datefin<br/>";
echo "Timestamp deb :$datedebtime<br/>";
echo "Timestamp Date fin :$datefintime<br/>";
echo "Difference : $datediff<br/>";
if ($nbSecondes=0) { $id++; }
}
require ("connectdb.php");
$id=1;
while($id < 53)//boucle pour passer à la question suivante jusqu'à la 53
{
$datedebut="SELECT date_deb,date_fin FROM parties WHERE id=$id";// selection des 2 dates pour la question 1
$date=mysql_query($datedebut)
or die('Erreur SQL !'.$date.'
'.mysql_error());
$datefetch=mysql_fetch_array($date);
$datedeb=$datefetch['date_deb'];
$datefin=$datefetch['date_fin'];
$datedebtime=strtotime($datedeb);//Conversion timestamp date_deb
$datefintime=strtotime($datefin);//conversion timestamps date_fin
$datediff=$datefintime-$datedebtime;//Différence entre les deux dates
$nbSecondes= $datediff -(mktime($datefin) % $datediff);
echo "Id question : $id<br>";
echo "Compte à rebours : $nbSecondes<br>";//c'est ce qui est récupéré par le javascript...
echo "Date debut : $datedeb<br/>";
echo "Date fin :$datefin<br/>";
echo "Timestamp deb :$datedebtime<br/>";
echo "Timestamp Date fin :$datefintime<br/>";
echo "Difference : $datediff<br/>";
if ($nbSecondes=0) { $id++; }
}
Merci de t'occuper de cela...
J'avais essayé cette condition, mais cela semble boucler à l'infini...
J'avais essayé cette condition, mais cela semble boucler à l'infini...
pitxu
Messages postés
689
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2015
94
7 sept. 2007 à 09:31
7 sept. 2007 à 09:31
Je suis d'accord. Je pense qu'il faut passer par une fonction javascript qui détecte que $nbSecondes=0.
Tu aurias une idée de comment cela se fait en JS?
Cela me semble pourtant bizarre que je ne puisse pas le gerer en php...
Cela me semble pourtant bizarre que je ne puisse pas le gerer en php...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pitxu
Messages postés
689
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2015
94
7 sept. 2007 à 10:14
7 sept. 2007 à 10:14
Publie la routine js pour le compte à rebours, je vais regarder.
Voila :
<script language=javascript>
var x;
function tempsSession()
{
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
var method = "GET";
var filename = "renvoyeTempsRestantSession.php";
var data = null;
xhr_object.open(method, filename, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText;
document.form1.tempsRestantInitial.value = tmp;
document.form1.tempsRestant.value = tmp;
}
}
xhr_object.send(data);
}
function Decompte() {
//((document.form1.tempsRestant.value > 0)) ? (window.document.form1.tempsRestant.value = --valeur) : (window.clearInterval(x));
window.document.form1.tempsRestant.value--;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
}
//function Decompte() {
//window.document.form1.tempsRestant.value = parseInt(document.form1.tempsRestant.value)--;
//if (window.document.form1.tempsRestant.value == 0) {
//window.clearInterval(x);
//window.document.form1.submit.disabled = false;
//window.document.getElementById("reponse").style.visibility="visible";
//}
}
function init() {
x = window.setInterval('Decompte()', 1000);
}
function initCompteur()
{
tempsSession();
init();
}
</script>
le champs temps.restant.initial n'est pas utilisé.
dans mon champs du form1, c'est tempsrestant...
Merci
<script language=javascript>
var x;
function tempsSession()
{
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
var method = "GET";
var filename = "renvoyeTempsRestantSession.php";
var data = null;
xhr_object.open(method, filename, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText;
document.form1.tempsRestantInitial.value = tmp;
document.form1.tempsRestant.value = tmp;
}
}
xhr_object.send(data);
}
function Decompte() {
//((document.form1.tempsRestant.value > 0)) ? (window.document.form1.tempsRestant.value = --valeur) : (window.clearInterval(x));
window.document.form1.tempsRestant.value--;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
}
//function Decompte() {
//window.document.form1.tempsRestant.value = parseInt(document.form1.tempsRestant.value)--;
//if (window.document.form1.tempsRestant.value == 0) {
//window.clearInterval(x);
//window.document.form1.submit.disabled = false;
//window.document.getElementById("reponse").style.visibility="visible";
//}
}
function init() {
x = window.setInterval('Decompte()', 1000);
}
function initCompteur()
{
tempsSession();
init();
}
</script>
le champs temps.restant.initial n'est pas utilisé.
dans mon champs du form1, c'est tempsrestant...
Merci
pitxu
Messages postés
689
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2015
94
7 sept. 2007 à 10:37
7 sept. 2007 à 10:37
Apparement c'est faisable avec une imbrication de while. je cherche ...
C'est sympa...
Je me permets également, puisque tu es dans le js, de te demander autre chose.
Pour l'instant l'affichage de mon compteur dans le script php se fait avec uniquement les secondes.
Le but, parce que je suis en train de modifier ce php, c'est un affichage de type date('i:s', $nbSecondes) du compte à rebours, pour avoir par exemple :
00:36
Bon, ça je sais faire.
Mais le pb se situe au niveau du JS. Lui, il n'accepte pas les ":". Car il traite une valeur numérique et que le : lui pose probleme. D'ailleurs, il m'affiche Nan (Not a number).
De la même façon, et lorsque j'enlèbe les :, il affiche 0036 sur la première seconde d'affichage et revient ensuite à 36. Il ne semble pas prendre les 0 des minutes, et ni le 0 si secondes <10.
Je pense que le problème vient de la définition de la value dans la fonction Decompte :
function Decompte() {
window.document.form1.tempsRestant.value--;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
Mais je sèche... Si tu as une idée...
Je me permets également, puisque tu es dans le js, de te demander autre chose.
Pour l'instant l'affichage de mon compteur dans le script php se fait avec uniquement les secondes.
Le but, parce que je suis en train de modifier ce php, c'est un affichage de type date('i:s', $nbSecondes) du compte à rebours, pour avoir par exemple :
00:36
Bon, ça je sais faire.
Mais le pb se situe au niveau du JS. Lui, il n'accepte pas les ":". Car il traite une valeur numérique et que le : lui pose probleme. D'ailleurs, il m'affiche Nan (Not a number).
De la même façon, et lorsque j'enlèbe les :, il affiche 0036 sur la première seconde d'affichage et revient ensuite à 36. Il ne semble pas prendre les 0 des minutes, et ni le 0 si secondes <10.
Je pense que le problème vient de la définition de la value dans la fonction Decompte :
function Decompte() {
window.document.form1.tempsRestant.value--;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
Mais je sèche... Si tu as une idée...