IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher un message toutes les 10 secondes


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut Afficher un message toutes les 10 secondes
    Bonjour,
    je cherche à affciher une ligne différentes toutes les 10 secondes, j'ai fait ceci mais sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $lignes = array(' 1er ligne ', ' 2ème ligne ', ' 3ème ligne ');
     
    $temps2 = time();
    $taille = count($lignes);
    while ($i < $taille AND $temps1 + 10 * $i < $temps2)
    {
    echo $lignes[$i++];
    }
    ?>
    mais ça affiche le 2èmet et la 3ème ligne et ça reste comme ça.
    Vous pouvez pas me donner un p'tit coup de pouce ?
    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Euh... le PHP est un language côté serveur, le fait d'attendre 10 secondes ne fera que retarder l'arrivée de ta page résultante, mais dans tous les cas toute ta page arrivera en même temps et ne changera plus.

    Si tu veux modifier ta page par la suite, il faut te diriger vers le Javascript.
    Il y a 10 types de personnes, celles qui connaissent le binaire, et les autres...

  3. #3
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut
    Merci pour la réponse mais je savais pour le javascript...sinon j'aurais été sur le forum pour javascript
    Mon but est de le faire en php.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Hahaha, Bloodscalp avait raison,

    Ca n'a vraimment aucun sens de faire cela en php cote serveur.
    Bloodscalp essayait de t'aider c'est dommage d'eluder sa reponse, comme si il
    avait tort par defaut. Si tu n'arrives pas a faire ce que tu voulais c'est exactement pour la raison qu'il a donne. Et et a moins qu'il y aie une version de php dans un browser ...

    Je crois que ce que tu veux faire est impossible dans un environnement server <---> Browser
    Certains browser peuvent peut-etre fonctionner en "streaming" .... je pense qu'il y a une option dans firefox qui charge ce qu'il peut au fur et a mesure. Mais ca ne te garantit pas que cela s'affichera toutes les X secondes. Il y a pleins d'autres choses qui entrent en ligne de compte (et des timeouts surtout).

    Neanmoins, en ligne de commande tu peux faire ceci et cela marchera tres bien (tu dois avoir php-cli) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/usr/bin/php
    <?
    $lignes = array ('1er ligne' ,
                     '2e ligne',
                     '3e ligne',
                     '4e ligne',
                     '5e ligne'
                   );
     
    $taille = count($lignes);
    $secondes = 10 ;
     
    for ($i=0; $i<$taille ; $i++)
    {
      echo $lignes[$i]."\n";
      sleep(10);
    }
    ?>

  5. #5
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut
    Je me suis peut-être mal expliqué...

    Sur mon site j'ai des citations enregistrées dans la bd et je voudrais afficher une citation sur les 1000 enregistrées lorsque le visiteur rafraichit sa page.

    Si le visiteur rafrachit sa page après 10 secondes, la citation à changé sinon non.

    Ce meme système existe avec des images sur joomla, je l'ai déjà vu, donc c'est possible non ?

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Trés bonne ton idée,

    le principale est que ta page ne soit pas une page de saisie car si un gars ecrit depuis cinq minute et voit tout vide il va pas aimer
    donc ton PHP par un random va choisir une de tes phrases au hazard !!

    il te suffit si ta page s'appelle toto.php de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?PHP 
    xxxxxxxxxxxxxxxxxxxxx
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <head>
    <META HTTP-EQUIV="Refresh" CONTENT="5;URL=toto.php">
    </head>
    <body>
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    </body></HTML>

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Oui c'est tout a fait possible ;-)

    En général pour faire ce genre de truc on génère un nombre au hasard entre 1 et le nombre de citations/textes/images disponibles +d'infos sur rand().

    La ou tu corses le truc c'est que tu veux que la citation ne change que si l'utilisateur rafraichit apres 10 secondes ...

    La je ne vois que 2 moyens, le plus mauvais serait de faire une forme de session anonyme ... beurk.

    Une autre solution (a mon avis la bonne) serait de stocker dans un cookie le moment d'acces a la page et l'id (numero) de la citation affiche a ce moment la.

    Quand la page est chargee tu regardes si il y a un cookie, si il n'y en a pas tu generes un numero (indice,id ...) de citation au hasard, et tu stocke le moment + l'id dans un cookie. Si un cookie existe deja tu compares le moment du cookie avec maintenant et si la difference est plus grande que 10 secondes alors tu regeneres un id et tu re-complete le cookie.

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par andr386 Voir le message
    Une autre solution (a mon avis la bonne)
    Merci pour nous
    serait de stocker dans un cookie
    50% des gens refusent les cookies !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Fox le Renard Je comparais 2 idées que j'avais émises et je disais que celle la était la meilleure des deux.

    Je ne vois que 2 façon d'identifier un utilisateur : une session ou un cookie. L'adresse ip pouvant représenter toute une entreprise parfois.

    Mais puisque tu souleves ce point, Raffa ne veut pas rafraichir automatiquement sa page toutes les 5 ou 10 secondes. Il veut que quand un utilisateur rafraichisse la page apres 10 seconde la citation change, sinon non.

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par andr386 Voir le message
    Fox le Renard Je comparais 2 idées que j'avais émises et je disais que celle la était la meilleure des deux.

    Je ne vois que 2 façon d'identifier un utilisateur : une session ou un cookie. L'adresse ip pouvant représenter toute une entreprise parfois.

    Mais puisque tu souleves ce point, Raffa ne veut pas rafraichir automatiquement sa page toutes les 5 ou 10 secondes. Il veut que quand un utilisateur rafraichisse la page apres 10 seconde la citation change, sinon non.
    Oui OK, mais il ne veut pas identifier son visiteur mais quelque soit le visiteur, rafraichir la page qui du coup generera une phrase differente a chaque fois !

  11. #11
    FoxLeRenard
    Invité(e)
    Par défaut
    Bon je te proposes donc cette formule,

    1) tu rafraichi sa page tout les xxx secondes comme je t'ais indiqué,
    2) tu charges tes 1000 phrases dans un array par exemple $phrase

    puis tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $key="";
     $taille = 3;
     $chiffre = "123456789";
     srand(time());
     for ($i=0;$i<$taille;$i++)
      {
       $key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
      }
     
    echo $phrase[$key]."<br />";
    Et voila ça baigne ! même s'il fait un F5 au bout d'une seconde

  12. #12
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut
    Salut foxlerenard et merci pour ton effort mais ton code n'affiche rien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    $phrase = array(' citation 1 ', ' citation 2 ', ' citation 3 ');
     
    $key="";
    $taille = 3;
    $chiffre = "123456789";
    srand(time());
     
    for ($i=0; $i<$taille; $i++)
    {
      $key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
    }
     
    echo $phrase[$key]."<br />";
     
    ?>

  13. #13
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par raffa Voir le message
    Salut foxlerenard et merci pour ton effort mais ton code n'affiche rien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    $phrase = array(' citation 1 ', ' citation 2 ', ' citation 3 ');
     
    $key="";
    $taille = 3;
    $chiffre = "123456789";
    srand(time());
     
    for ($i=0; $i<$taille; $i++)
    {
      $key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
    }
     
    echo $phrase[$key]."<br />";
     
    ?>
    Heu OUI !! tu remplis 3 rang d'array et tu demande un chiiffre aléatoire de 1 a 1000 !!!

    pour ton test, met 11 valeurs et regle $taille = 1;

  14. #14
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut
    Effectivement comme ça ça marche mieux mais la citation change à chaque rafraichissement alors que ça devrais changer après 10 secondes

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par andr386 Voir le message
    Oui c'est tout a fait possible ;-)
    La ou tu corses le truc c'est que tu veux que la citation ne change que si l'utilisateur rafraichit apres 10 secondes ...

    La je ne vois que 2 moyens, le plus mauvais serait de faire une forme de session anonyme ...

    Une autre solution (a mon avis la bonne) serait de stocker dans un cookie le moment d'acces a la page et l'id (numero) de la citation affiche a ce moment la.

    Quand la page est chargee tu regardes si il y a un cookie, si il n'y en a pas tu generes un numero (indice,id ...) de citation au hasard, et tu stocke le moment + l'id dans un cookie. Si un cookie existe deja tu compares le moment du cookie avec maintenant et si la difference est plus grande que 10 secondes alors tu regeneres un id et tu re-complete le cookie.
    Finalement j'ai fait la meme chose mais avec une session et ca fonctionne tres bien.

    1. Quand l'utilisateur se connecte pour la premiere fois a la page tu crees ses informations de sessions. Par exemple un id utilisateur forme de son adresse ip et d'un nombre au hasard, tu choppe un numero de citation au hasad, et aussi le moment present. Ensuite Tu affiches la citation.
    2. Si ce n'est pas la premiere vistie de l'utisateur alors tu regarde si ca fait + de 10 secondes que l'utilisateur est venu sur ta page.
    3. Si ca fait + de 10 secondes que l'utilisateur est venu sur ta page, alors tu demande un nouveau numero de citation que tu sauvegarde dans la session, et tu sauvegarde le moment present aussi dans la session puis tu affiche la citation.
    4. Si ce n'est pas la premiere visite et que 10 secondes ne se sont pas passes, tu recuperes le numero de la citation dans la session et tu l'affiche.


    Donc ca marche tres bien avec cette logique. Pour les nombres aleatoires, tu peux utiliser srand ; citation = rand ( $min, $max).

    La fonction time() te donne le nombre de seconde passee depuis le 1er janvier 1970

    En tout cas c'est une tres bonne idee, je vais surement conserver ce code et en faire un petit module Joomla. Mais je mettrai un temps plus long. 10 secondes c'est tres court.

Discussions similaires

  1. [SDL 1.2] Afficher une image toutes les X secondes ?
    Par Odawin dans le forum SDL
    Réponses: 19
    Dernier message: 06/06/2013, 08h42
  2. Afficher une image toutes les 5 secondes
    Par Bois990 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/03/2012, 08h57
  3. afficher un point toutes les 5 secondes
    Par allezlolo dans le forum Débuter
    Réponses: 3
    Dernier message: 06/01/2009, 17h06
  4. Message d'erreur toutes les 10 secondes
    Par muzele dans le forum Windows XP
    Réponses: 3
    Dernier message: 02/01/2009, 13h29
  5. Afficher une image toutes les 20 secondes
    Par sab_etudianteBTS dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/02/2008, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo