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 :

Plusieurs même requetes sur une même table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de bibom
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    83
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 83
    Points : 77
    Points
    77
    Par défaut Plusieurs même requetes sur une même table
    Bonjour à tous

    Alors voici mon problème :
    Je fais une requete sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <tr>
     <?php
     $select = "SELECT * FROM resultat ORDER BY id ";
     $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
     while($row = mysql_fetch_array($result)) { ?>
    <td align="center"><?php echo $row['resultat1'];?></td>
    <?php }?>
    </tr>

    cette requete je dois faire exactement la meme à differents endroits de la page (4 fois en tout) mais sans afficher les meme champs bien sur.

    Pour ne pas refaire ma requete plusieurs fois j'ai essayer de me resservir de mon $result plusieurs fois comme il contient tous mes résultats donc pour mon affichage suivant j'ai juste mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <?php
     while($row = mysql_fetch_array($result)) { ?>
    <td align="center"><?php echo $row['resultat2'];?></td>
    <?php }?>

    Mais cela ne fonctionne pas il ne m'affiche pas de résultat.
    Avez vous une solution ?

    Merci

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je crois qu'il faut jouer avec ça
    http://fr3.php.net/manual/fr/functio...-data-seek.php
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    il faut faire un mysql_data_seek entre chaque traitement pour remettre le pointeur sur la ligne numero 1.
    Edit : Trop lent
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Bonjour
    tu ne peux pas fermer une balise PHP alors que tu es dans un while... enfin je ne crois pas. [EDIT: en fait si, c'est tout à fait légal] En tout cas c'est pas très propre.
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      while($row = mysql_fetch_array($result)) {
        echo '<td align="center">' .  $row['resultat1'] . '</td>';
      }
    ?>
    </tr>
    Et on est bien d'accord : resultat1 c'est le nom du champ dans la table MySQL ?

  5. #5
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Citation Envoyé par Eusebius
    tu ne peux pas fermer une balise PHP alors que tu es dans un while... enfin je ne crois pas. En tout cas c'est pas très propre.
    Cela n'a rien de pas propre ni d'interdit.
    Il faut juste que cela s'y prete (c'est le cas ici).
    Le echo peut tres vite etre difficile a lire et a maintenir.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  6. #6
    Membre régulier Avatar de bibom
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    83
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    Oui resultat1 est un des champs de ma table

    Mais on peut fermer sa balise dans le while mon code est correct depuis que je code en php j'utilise ce procédé
    Mais bon c'est vrai que sa ne fait pas très propre

    Je vais tester avec mysql_data_seek

    merci

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par stunti
    Cela n'a rien de pas propre ni d'interdit.
    Il faut juste que cela s'y prete (c'est le cas ici).
    Le echo peut tres vite etre difficile a lire et a maintenir.
    OK, disons que c'est un avis personnel alors.
    Mais du coup, je vois pas pourquoi son code n'affiche rien.

  8. #8
    Membre du Club

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Ou alors stocke toutes les réponses de ta requete dans un tableau à deux dimensions au sommet de ton code par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
       $i = 0;
     
       $select = "SELECT * FROM resultat ORDER BY id ";
       $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
       while($row = mysql_fetch_array($result)) { 
          $tableau[$i] = $row;
          $i++;
       }
    ?>
    Et ensuite dans le reste de ta page tu utilise ce tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    foreach( $tableau as $ligne )
    {
    ?>
    <tr>
    <td align="center"><?php echo $ligne['resultat1'];?></td>
    <?php }?>
    </tr>

  9. #9
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Citation Envoyé par Eusebius
    OK, disons que c'est un avis personnel alors.
    Mais du coup, je vois pas pourquoi son code n'affiche rien.
    Car une fois le pointeur mysql a parcouru toutes les lignes, il faut le remettre au debut avant de reparcourir le resultset.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  10. #10
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    @Charette : s'il a 10 lignes c jouable, mais s'il a plusieurs milliers de lignes, le serveur peut tres rapidement en avoir marre de toutes ces donnees.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  11. #11
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par stunti
    Car une fois le pointeur mysql a parcouru toutes les lignes, il faut le remettre au debut avant de reparcourir le resultset.
    J'avais compris que c'était au premier parcours qu'il avait un souci... Au temps pour moi, je crois que les vacances seront les bienvenues.

  12. #12
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    On en est tous la....
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  13. #13
    Membre régulier Avatar de bibom
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    83
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    J'ai testé de tout mettre dans un tableau et sa fonctionne nickel
    J'opte donc pour cette solution , je pense que cela va considérablement réduire le temps de chargement de mes pages au lieu de faire 5 ou 6 fois la meme requete je ne la ferais qu'une fois

    Merci a tous de m'avoir aidé

  14. #14
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Le echo peut tres vite etre difficile a lire et a maintenir.
    C'est sûr que c'est tellement plus lisible d'avoir des balises PHP qui s'ouvrent et se ferment dans tous les sens et qui se mélangent dans le code HTML...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  15. #15
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Citation Envoyé par Eusebius
    OK, disons que c'est un avis personnel alors.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

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

Discussions similaires

  1. requete sur une même table
    Par fakie dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/02/2010, 11h40
  2. Requete sur une même table
    Par laipreu dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/05/2008, 21h42
  3. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  4. [SQL] Probleme de requete sur une même table
    Par LP-mpascolo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/01/2008, 14h02
  5. Fusion de deux requetes sur une même table
    Par jojosbiz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/06/2007, 09h18

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