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 :

[Conception] Je voudrais lire une table en continu


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut [Conception] Je voudrais lire une table en continu
    Bonjour à tous,

    J'ai crée une boucle while qui parcourt une table. Mais elle s'arrête à la fin et je voudrais qu'elle reparte au début et recommence la lecture indéfiniement. Comment faire ?
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $i = 0;
    $sql = mysql_query("SELECT champ1 FROM table order by id");
    while($row = mysql_fetch_row($sql)){
    $data[$i] = $row[0];
    $i++;
    }
    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    jette un coup d'oeil a mysql_data_seek. peut etre que ça fera ton affaire
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    oui merci, j'ai regardé doc et exemples sur mysql_data_seek...mais trop bien capté...
    j'ai fait ça...mais ça fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $sql = "SELECT champ1 FROM table order by sid";
    $res = mysql_query($sql);
    for ($i = mysql_num_rows ($res) - 1; $i >=0; $i--) 
    {
    	$row = mysql_fetch_row($res);      
    	$data[$i] = $row[0];    
    	mysql_data_seek ($res, $i);    
     
    }
    T'as une idée ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    essai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = "SELECT champ1 FROM table order by sid";
    $res = mysql_query($sql);
    $i = $nbelt=mysql_num_rows ($res) - 1;
    while ($i>-1){
            $row = mysql_fetch_row($res);      
    	$data[$i] = $row[0];    
    	mysql_data_seek ($res, $i);
           $i--;
           if ($i==-1)
               $i= $nbelt  ;
    }
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  5. #5
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ou la la gros plantage du serveur...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par renaud26
    ou la la gros plantage du serveur...
    c'est normal puisque c'est une lecture en boucle. on sort jamais de la boucle en fait. c'est pas ce que tu voulais faire? en fait je me demandais a quoi ça peut bien te servir de faire une boucle infinie
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    En fait je souhaite créer un affichage d'url selon un timeout javascript. J'ai donc besoin d'un array(), ce que fait ma boucle avec data.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    while($row = mysql_fetch_row($res)){
    $data[$i] = $row[0];
    $i++;
    }
    J'ai donc besoin que, une fois la table parcourue, la boucle ne s'arrête pas, mais que le pointeur revienne au début et relise la table. J'ai cru comprendre que c'est ce que faisait mysql_data_seek, mais je n'ai pas capté comment l'utiliser dans la boucle...

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    tu est obligé de mettre une condition pour sortir de ta boucle sinon le serveur va forcément planté.

    J'ai pas bien compris quel est ton objectif.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par renaud26
    J'ai donc besoin que, une fois la table parcourue, la boucle ne s'arrête pas, mais que le pointeur revienne au début et relise la table.
    le resultat ne peut produire qu'une boucle infinie. Il faut bien sortir de la boucle a un moment ou a un autre. Faudrait peut etre eclaircir tes intentions
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  10. #10
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci de ton intêret.
    mon objectif est le suivant: je veux afficher des URL dans un iframe. Elles changent automatiquement toutes les X secondes avec un setTimeout qui lit un array().
    Pour générer ce tableau, je les ai stockées dans une table. Ma boucle parcourt la table, génère le tableau et affiche les url. A la dernière url, elle s'arrête. Hors je voudrais que le pointeur revienne à 0 et que la boucle recommence. Sûrement que mysql_data_seek est une bonne piste, mais je n'arrive pas à le faire fonctionner...
    Euh...je sais pas si je suis bien clair, là ?

  11. #11
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    Je n'ai pas tout compris, essaye tu d'aficher des données venant d'un table SQL après le chargement de la page ? Car le seul moyen pour faire ça est d'utiliser l'objet javascript XmlHttpRequest.
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  12. #12
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ok, ok...je vais me renseigner sur l'objet XmlHttpRequest que je ne connais pas du tout...

  13. #13
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    Tu peux chercher ici : AJAX
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  14. #14
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ou la la....ma pauvre tête...

    Mais en fait, je ne pense pas que mon problème vienne de là...car j'ai une fonction qui récupère un array() php et me permet de l'interpréter en JS. Ca fonctionne nickel...Simplement cette p... de boucle qui se bloque quand elle a lu la table et ne veut pas relire ensuite. Ca tient qu'à ça.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    une question: dans quelle condition on sort de la boucle??
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  16. #16
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Moi je dirais que le code donné plus haut est un bon départ mais l'utilisation de la fonction ne va pas du tout. Enfin ce n'est que mon avis. Moi je proposerai ceci, obtenu avec l'aide de la FAQ (Comment se repositionner sur le premier enregistrement d'une requête Select ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $i = 0;
    $sql = mysql_query("SELECT champ1 FROM table order by id");
    $nb_elt = mysql_num_rows($sql);
    while($row = mysql_fetch_row($sql)){
    $data[$i] = $row[0];
    if($i < ($nb_elt - 1))
    // On se repositionne sur le premier enregistrement
    @mysql_data_seek($sql, 0);
    $i++; 
    }

  17. #17
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ben...jamais ! je voudrais que ça "rembobine" à la fin de la lecture...mais peut être qu'il faut pas une boucle while, mais une fonction de tableau...je sais plus, je suis un peu largué, là. Je suis en train de tester une fonction récursive...pas terrible...

  18. #18
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ah zut je me suis trompé entre < et >

    Et ca le ferai par contre le problème que dans le cas indéfini il faudrait un compteur qui serait réinitialisé à chaque remise à zéro et là ca devrait fonctionner

  19. #19
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    oui, merci, Kerod, je vais tester ça. En effet, ton premier bout de code faisait "patiner" la boucle sur le 1er enreg...

  20. #20
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    En gros quelque chose comme ceci :
    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
     
    $i = $cpt = 0;
    $sql = mysql_query("SELECT champ1 FROM table order by id");
    $nb_elt = mysql_num_rows($sql);
    while($row = mysql_fetch_row($sql)){
    $data[$i] = $row[0];
    if($cpt >= ($nb_elt - 1))
    {
       // On se repositionne sur le premier enregistrement
       @mysql_data_seek($sql, 0);
       $cpt = 0;
    }
    else
    {   
       $cpt++;
    }
    $i++; 
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Lire une table
    Par koKoTis dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 06/10/2008, 13h59
  2. [Tableaux] Lire une table simple avec foreach
    Par dreeve dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2008, 18h38
  3. [Access][Conception] Nb champs dans une table
    Par arno2000 dans le forum Access
    Réponses: 6
    Dernier message: 01/08/2006, 17h30
  4. Création d'une table en continu
    Par jmde dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 20h41
  5. conception et utilisation d'une table
    Par lkryss dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/06/2006, 11h14

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