Page 1 sur 1

probleme de boucle while.

Posté : 20 mars 2009, 16:36
par sammel
bonjour à tous
je cherche à faire patienter pendant x secondes avant d'afficher une phrase pour faire un suspens j'ai essayé la fonction sleep() mais elle ne marche pas
j'ai donc essayé avec une boucle mais la non plus ce n'est pas un success il reste bloqué sur patience.:shock: :? :(
voici un bout de mon code.
à l'aide please!!!!!
$seconde = date("s");

print("<center><font color=\"#FF0099\">Patience</font></center>");
$fpdate = fopen("date.txt","r+");
fseek($fpdate, 0);// 4.On se place en début de fichier
fputs($fpdate ,$seconde);   // 5.On écrit dans le fichier le nouveau nb     
fclose($fpdate);         

$fpdate = fopen("date.txt","r+");
fseek($fpdate, 0);
$donnees =  fgets($fpdate,255);
while ($donnees <= $seconde + 10)
{
$fpdate = fopen("date.txt","r+");
fseek($fpdate, 0);
$donnees =  fgets($fpdate,255);
}
sammel.
http://sammel.0fees.net

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 20 mars 2009, 17:16
par Poulpe
A quel endroit as-tu placé ton sleep dans ton script ?

Mais si c'est juste pour faire de la figuration, utilises plutôt le javascript que le php.

Posté : 20 mars 2009, 17:38
par sammel
mon sleep etait placé au debut du script
<?php

$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$mail= $_POST['mail'];
$qui= $_POST['qui'];
$message= $_POST['message'];
$genre= $_POST['radiobutton'];
$seconde = date("s");

print("<center><font color=\"#FF0099\">Patience</font></center>");

sleep(10);
......

Posté : 20 mars 2009, 17:46
par Poulpe
Et donc tu veux utiliser une tempo pour afficher ton message patience, et quelque soit le temps de travail de ton script, faire patienter l'internaute quelques secondes avant qu'il voit un message apparaître du style "données enregistrées" ?

Si c'est le cas, c'est vers le javascript qu'il faut se tourner et sa méthode setTimeout().

Le sleep n'est pas prévu pour ça.

Tu as un petit exemple à cette page assez explicite : http://fr.php.net/manual/fr/function.sleep.php

Posté : 20 mars 2009, 18:00
par sammel
merci pour la reponse
dans mon idée je faisait cette boucle pour faire une tempo de X seconde mais ça reste bloqué à patience et pour la méthode setTimeout, j'ai deja essayé, puisque ma première idée était de faire un compte à rebours mais le problème c'est que le message que je veux faire apparaitre est en PHP (il reprend des données de mon formulaire) et apparait des le debut du compte à rebour. la je bloque je n'arrive plus à avancer. si quelqu'un a une idée???? :shock:
le code etait :
     <body topmargin="0">
     <SCRIPT LANGUAGE="JavaScript">
    window.setTimeout("document.form.time.value='25'",1000)
    window.setTimeout("document.form.time.value='24'",2000)
    window.setTimeout("document.form.time.value='23'",3000)
    window.setTimeout("document.form.time.value='22'",4000)
    window.setTimeout("document.form.time.value='21'",5000)
   window.setTimeout("document.form.time.value='20'",6000)
    print("tu aimerais bien connaitre la réponse?")
	 window.setTimeout("document.form.time.value='19'",7000)
     window.setTimeout("document.form.time.value='18'",8000)
     window.setTimeout("document.form.time.value='17'",9000)
    window.setTimeout("document.form.time.value='16'",10000)
    window.setTimeout("document.form.time.value='15'",11000)
                                           .......
                                           .......
     window.setTimeout("document.form.time.value='1'",25000)
    window.setTimeout("document.form.time.value='0';location=('verif0.php');",26000)
    </script>

<?php

$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$mail= $_POST['mail'];
$qui= $_POST['qui'];
$message= $_POST['message'];
$genre= $_POST['radiobutton'];

........
.......
...

Posté : 20 mars 2009, 18:25
par Poulpe
Pour ton message, tu le places dans une balise <span id="reponse"> par exemple que tu caches avec un hidden via un css, ensuite avec ton javascript tu mets en place ta temporisation, et à la fin de ta temporisation, tu dis à ton script js de rendre visible ton span reponse.

Je ne vais pas m'étendre sur le script js en lui même, puisque ce forum est consacré au php. Mais je suis certain qu'on pourra t'aider sur des forums js sans problème.

En espérant t'avoir aidé malgré tout.

Posté : 20 mars 2009, 18:28
par Ryle
Modération :
sammel, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 20 mars 2009, 18:39
par sammel
merci pour ton aide je vais aller voir du coté de js

Posté : 20 mars 2009, 18:56
par Aureusms
Utilise les CSS et javascript associé :Un settimeout associé à un style.display ="block" peut aussi être pas mal. En clair tu edite sous PHP ta sortie texte mais tu la cache en CSS via style="display:none;" puis avec setTimeout("affiche()",10000); tu l'affiches, exemeple :

Code : Tout sélectionner

<div id="essai" style="display:none;"> dshgfljqshgdljshdgl <p>kxjfvnksdb</p> </div>
et le javascript :

Code : Tout sélectionner

function affiche () { document.getElementById("essai").style.display="block"; } setTimeout("affiche()",10000);

Posté : 20 mars 2009, 21:13
par sammel
j'ai reussi a avancer serieusement ça marche presque seulement dans ma phrase PHP je n'ai pas le prenom qui remplace $prenom est ce que quelqu'un peut m'aider je vois pas l'erreur
 
<?php

$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$mail= $_POST['mail'];
$qui= $_POST['qui'];

echo'<table><td id="countdown"></td><td  style="display: none;" id="noedit"><center><font color=\"#FF0099\">Cher(e) <b>$prenom</b> Tu as gagne ! Tu seras bien $qui de <b>Nell</b> </font></center> !</td><br /></table>';

et la partie js

Code : Tout sélectionner

<script type="text/javascript"> count=5; function countdown() { if (count > 0) { count--; if(count == 0) { document.getElementById('noedit').style.display = ''; document.getElementById('countdown').style.display = 'none'; } if(count > 0) { if(count > 1) { document.getElementById("countdown").innerHTML = '<br /> dans '+count+' secondes tu sauras si ton pronostic est bon !</a>'; setTimeout('countdown()',1000); } else { document.getElementById("countdown").innerHTML = '<br /> dans '+count+' seconde tu sauras si ton pronostic est bon !</a>'; setTimeout('countdown()',1000); } } } } countdown(); </script>

Posté : 20 mars 2009, 21:21
par Aureusms
Tu es resté en simple quote sans concaténé (je t'ai nettoyé aussi les <center> et <font>et <b> qui n'ont plus lieux d'être avec les CSS :
echo'
<table>
  <td id="countdown">$nbsp;</td>
  <td  style="display: none; color:#FF0099; text-align:center;" id="noedit">
      Cher(e) <strong>'.$prenom.'</strong> Tu as gagne ! Tu seras bien '.$qui.' de <strong>Nell</strong>!
  </td>
</table>';

Posté : 20 mars 2009, 21:26
par sammel
merci a tous
merci Aureusms
c'est bon ça marche!!!

Posté : 20 mars 2009, 21:28
par Aureusms
Pense à mettre RESOLU