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 :

Boucle pour parcourir une table


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut Boucle pour parcourir une table
    Bonjour,

    Je souhaite parcourir entièrement une table (albums) et récupérer pour chaque nom d'artiste les albums trouvés.

    J'ai donc testé 2 requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $req = "SELECT ALBUM.*, ARTISTE.* FROM ARTISTE, ALBUM WHERE ARTISTE.NUM_ART = ALBUM.NUM_ALB AND ARTISTE.NOM_ART = '$nom'";
    $res = mysql_query ($req) or die ("Erreur requête");
     
    $req1=mysql_query("SELECT COUNT(*) as total FROM ALBUM");
    while($ligne = mysql_fetch_array($req1))
    $total = $ligne['total'];
     
    $nom=$_GET['art'];
    $total devant me renvoyer le nombre total de lignes de la table Album.

    J'ai donc implanté le code suivant :

    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
     
    <?php
     
    for ($i=1; $i=$total; $i++) {
     
    if ($tab['$i'] = mysql_fetch_array($res)){
     
    $alb=$tab['NOM_ALB'];
     
    echo '
    
    <table>
    <tr>
         <td>
    	     <img src="' . $tab['IMAGE_ALB'] . '">
    			</a>
    		</td>
    <td width="125">
    
    <a href="chronique.php?art=' . $alb .'">' . $alb . '</a>
    
    <br>
    ' . $tab['GENRE_ALB'] . '	
    <br>
    ' . $tab['DATE_ALB'] . '	
    </td>
    </tr> 
    </table>' ;
     
      }
    }
     
    ?>
    La boucle for semble ne pas marcher, j'ai le message d'erreur suivant :

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\Siteweb\chroniques.php on line 144 (ligne du for)

    Quelqu'un peut-il m'éclairer un peu ?

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Dans ta boucle for, remplace le"$i=$total" par "$i<=$total" :

    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
    <?php
     
    for ($i=1; $i<=$total; $i++) {
     
    if ($tab['$i'] = mysql_fetch_array($res)){
     
    $alb=$tab['NOM_ALB'];
     
    echo '
     
    <table>
    <tr>
         <td>
    	     <img src="' . $tab['IMAGE_ALB'] . '">
    			</a>
    		</td>
    <td width="125">
     
    <a href="chronique.php?art=' . $alb .'">' . $alb . '</a>
     
    <br>
    ' . $tab['GENRE_ALB'] . '	
    <br>
    ' . $tab['DATE_ALB'] . '	
    </td>
    </tr> 
    </table>' ;
     
      }
    }
     
    ?>

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i=1; $i <= $total; $i++) {

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    • Cette requête est fausse car elle compte la totalité des albums contenus dans la table, sans tenir compte des filtres appliqués dans la précédente :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $req1 = mysql_query("SELECT COUNT(*) as total FROM ALBUM");
    • Mais quand bien même elle serait correcte, ces lignes sont inutiles, car il y d'autre moyen de générer un tableau sans connaître le nombre de lignes retournées :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
        $req1 = mysql_query("SELECT COUNT(*) as total FROM ALBUM");
        while($ligne = mysql_fetch_array($req1))
        $total = $ligne['total'];
    • Quand je vois les variables que tu tentes d'afficher, je ne suis pas loin de penser que la structure de la BDD, ainsi que celles des tables, ne sont pas très bonnes. Mais ce n'est qu'une supposition, n'ayant pas ces structures sous la main.

    Exemple de code permettant de générer un tableau sans connaître le nombre de lignes :
    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
    <?php
      $req = "SELECT ALBUM.*, ARTISTE.* 
              FROM ARTISTE, ALBUM 
              WHERE ARTISTE.NUM_ART = ALBUM.NUM_ALB 
              AND ARTISTE.NOM_ART = '$nom'";
      $res = mysql_query ($req) 
        or die ("Erreur requête");
     
      $tab = '<table>';
      while($colonne = mysql_fetch_object($res, MYSQL_ASSOC))
      {
        $tab .= '<tr>
                   <td>
                     <img src="' . $colonne['IMAGE_ALB'] . '">
                   </td>
                   <td width="125">
                     <a href="chronique.php?art=' . $colonne['NOM_ALB'] .'">' . $colonne['NOM_ALB'] . '</a>
                     <br>' . $colonne['GENRE_ALB'] . '
                     <br>' . $colonne['DATE_ALB'] . '	
                   </td>
                 </tr>';
      }
      $tab .= '</table>';
      echo $tab;

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. [XL-2003] Boucle pour parcourir une partie d'une feuille
    Par defigueiredoh dans le forum Excel
    Réponses: 0
    Dernier message: 11/07/2012, 11h32
  3. Function pour parcourir une colonne de table
    Par Rgent dans le forum Développement de jobs
    Réponses: 10
    Dernier message: 22/05/2008, 11h26
  4. Réponses: 6
    Dernier message: 28/12/2004, 16h09

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