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 :

Boucle while et affichage progressif


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut Boucle while et affichage progressif
    Bonjour,
    je suis sur OVH mutualisé et je cherche a afficher dans une boucle while plusieurs resultats de requetes mysql dans des echo.mais la page s'affiche que lorsque tout est fini.
    j'ai essayé d'inserer la fonction flush et ob_flush mas ca ne fonctionne apparement pas sur ovh mutualisé voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (ob_get_level() == 0) ob_start();
    while($resultat = mysql_fetch_array($requete))
    {
    	mail($resultat['email'],$sujet,$message,$headers);
    	echo str_pad('',4096)."\n";   
    	echo '<p>'.$resultat['email'].'</p>';
      	ob_flush();
    	flush();	
     	sleep(2);
    }
    ob_end_flush();
    est ce que c'est la mauvaise technique ? merci d'avance

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    Pour faire ce genre d'affichage progressif, je pense qu'il faut plutôt utiliser AJAX

  3. #3
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut
    J'ai cherché partout mais je ne trouve pas d'exemple de code

  4. #4
    Membre très actif Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Par défaut
    Salut,
    ça ne marchera pas avec php car tout simplement le navigateur ne reçoit aucune donnée du serveur juste après que le serveur finisse tout son travail.
    sleep ne ralentit pas l'affichage mais ralentit seulement l’exécution ça n'a rien à voir avec l'affichage.pour ce genre de trucs tu peux utiliser ajax ou bein une bibliothèque javascript qui supporte ajax comme jquery.
    bonne chance.

  5. #5
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Citation Envoyé par omar24 Voir le message
    Salut,
    ça ne marchera pas avec php car tout simplement le navigateur ne reçoit aucune donnée du serveur juste après que le serveur finisse tout son travail.
    sleep ne ralentit pas l'affichage mais ralentit seulement l’exécution ça n'a rien à voir avec l'affichage.pour ce genre de trucs tu peux utiliser ajax ou bein une bibliothèque javascript qui supporte ajax comme jquery.
    bonne chance.
    Tu as entièrement faux sur ce point.
    Lis donc la documentation de la fonction flush() et tu apprendras qu'elle permet d'envoyer avant la fin du script le buffer au navigateur.

    Cela dit il est aussi mentionné que cela ne fonctionnait pas sous certains serveurs et qu'il n'envoyait qu'à la fin. Ou même des problèmes de navigateur qui attend d'avoir tout reçu pour afficher (Netscape d'après la documentation), ou bien certaines version de IE qui attendent une taille minimum du buffer à afficher (256 octets).

  6. #6
    Membre très actif Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Par défaut
    Personnellement, connaissant comment les technologies coté serveurs fonctionnent, je n'arrive pas à imaginer comment une seule requête HTTP va faire deux allers/retours au/du serveur?

Discussions similaires

  1. [MySQL] [merci à Nnay ;)]Boucle while + SQL -> Affichage des données
    Par DiPSoMaNiE dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/01/2009, 11h45
  2. Réponses: 3
    Dernier message: 17/08/2007, 13h47
  3. [MySQL] Problème d'affichage dans un boucle while
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/05/2007, 08h31
  4. [MySQL] affichage d'une liste avec une boucle while
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/01/2007, 20h19
  5. Réponses: 9
    Dernier message: 01/06/2006, 18h10

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