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

PHP & Base de données Discussion :

délais dans une boucle entre les éléments du tableau [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut délais dans une boucle entre les éléments du tableau
    Bonjour à vous.

    Dans une boucle foreach, pourrait-on afficher avec un délais
    entre les éléments du tableau?

    Ici, j'affiche 1 à 49 en un seul coup. Mais je veux faire afficher
    un après l'autre avec un délais ou bien un effet avec le chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $numbers = range(1,49);
     
    foreach ($numbers as $v) {
      echo ' '.$v;
    }
    ?>

  2. #2
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour,

    Tu ne peux pas faire ça avec un langage serveur comme PHP.
    Le principe de PHP, c'est qu'il traite la demande, coté serveur, puis envoi le résultat au client (le navigateur) qui l'interprète (HTML, JavaScript, ...)

    C'est pour ça que le serveur traite toute la boucle, avant de l'envoyer au client qui l'affiche.

    Il y a quand même des options :
    - JavaScript. Tout s’exécute coté client. mais je présume que ce que tu cherches à faire est un peu plus compliqué que d'afficher des numéros...
    - Ajax. Ça permet de faire des appels serveur, depuis une fonction javasript (client).

    Il y a sur developpez.com des tutoriaux très bien fait sur cette techno.

    A bientôt,
    Gillou.

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Bonjour.

    Tien, j'ai essayé quelque chose du genre et ça affiche que le dernier chiffre.
    Ce que j'ai tenté de faire est une fonction qui affiche $v avec un délais d'une
    seconde. Pas concluant.

    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
    <?php
    $numbers = range(1,49);
    foreach ($numbers as $v){ ?>
     
    <script>
      function test(){
      document.write("<?php echo $v; ?>");
      }
    </script>
     
    <script>
      window.setTimeout('test()',1000);
    </script>
     
    <?php } ?>

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Si tu veux passer un tableau php à javascript utilises json_encode

    Trivialement :
    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
    19
    20
    21
    <?php
    $numbers = range(1,49);
    ?>
     
    <script>
    var tab_php = <?php echo json_encode($numbers)?>;
     
    function Affiche(i){
    i++;
    if (typeof tab_php[i] != 'undefined')
    	{
    		setTimeout('Affiche('+i+')',1000);
    		document.getElementById('mondiv').innerHTML = tab_php[i];
    	}
     
    }
    </script>
     
    <body onload="Affiche(-1)">
    <div id = "mondiv"></div>
    </body>

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    C'est techniquement possible en php en faisant quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    ob_start();
    echo "start"
     
    foreach(....)
    {
       //do something
       echo "progression dans la boucle <br />"
       ob_flush();
       flush();
    }
    Ca dépend cependant de certains paramètrage de php et éventuellement du serveur web pour que cela fonctionne
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Bonjour.

    Il y a bien un délai d'une seconde mais seulement au début de l'exécution
    de la boucle. Le délai devrait être entre chaque chiffre qui apparaît
    et tous les chiffres doivent restés affichés. C'est seulement le chiffre
    49 qui reste visible.


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <html>
    <head>
    </head>
    <body>
     
    <?php
    ob_start();
     
    $numbers = range(1,49);
    foreach ($numbers as $v){ 
    ?>
     
    <script>
      function test(){
      document.write("<?php echo $v; ?>");
      }
    </script>
     
     
    <script>
      window.setTimeout('test()',1000);
    </script>
     
     
     
    <?php
    ob_flush();
    flush();  
    } 
    ?>
     
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2014, 10h39
  2. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  3. Réponses: 5
    Dernier message: 22/03/2009, 23h22
  4. Réponses: 2
    Dernier message: 16/05/2008, 08h23
  5. Réponses: 2
    Dernier message: 30/05/2006, 14h58

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