probleme de boucle while.

Petit nouveau ! | 8 Messages

20 mars 2009, 16:36

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]

Eléphanteau du PHP | 15 Messages

20 mars 2009, 17:16

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.

Petit nouveau ! | 8 Messages

20 mars 2009, 17:38

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

Eléphanteau du PHP | 15 Messages

20 mars 2009, 17:46

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

Petit nouveau ! | 8 Messages

20 mars 2009, 18:00

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'];

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

Eléphanteau du PHP | 15 Messages

20 mars 2009, 18:25

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2009, 18:28

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
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

20 mars 2009, 18:39

merci pour ton aide je vais aller voir du coté de js

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 18:56

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);
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 21:13

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>

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 21:21

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>';
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 21:26

merci a tous
merci Aureusms
c'est bon ça marche!!!

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 21:28

Pense à mettre RESOLU
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr