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 :

Affichage des résultats sous forme d'un tableau


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut Affichage des résultats sous forme d'un tableau
    Bonjour à tous. J'ai un petit problème et je ne vois pas bien comment y venir à bout (je suis relativement débutant ).

    J'ai besoin de réaliser un tableau affichant le résultat de mes requêtes d'une manière un peu particulière:



    J'aimerais que la première colonne (à gauche) affiche les constructeurs (DISTINCT ?) , la suivante les différents modèles par constructeur, et enfin la dernière colonne tous les équipements correspondants (au modèle et donc au constructeur) sur une même ligne à la place d'une forme de tableau classique.



    Ma base est constituée de la sorte:



    J'hésite entre faire une requête comme ci-dessus, stocker tout ça dans un array[] puis le 'distribuer' - mais je bloque sur le php, ou alors faire plusieurs requêtes SQL avec des conditions du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT m.hostname FROM equipements WHERE m.ID_modele = 'ID de la cellule de gauche'
    Auriez-vous des pistes ?

    Merci!

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Bonjour,

    personnellement je serais plus pour organiser en php les données.
    Avec un code dans cet esprit là :

    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
     
     $result = array();
     
      foreach ($datas as $data){
        if (!isset($result[$data['cstr']])){
          $result[$data['cstr']]['count'] = 0; // pour le rowspan constructeur
          $result[$data['cstr']]['modeles'] = array();
        }
     
        $result[$data['cstr']]['count']++;
        if (!$result[$data['cstr']]['modeles'][$data['modele']]){
          $result[$data['cstr']]['modeles'][$data['modele']]['opt'] = array();
        }
        $result[$data['cstr']]['modeles'][$data['modele']]['opt'][] = $data['opt'];
      }
    après pour l'affichage il te suffit de parcourir le tableau et de générer tes tr, td, en fonction du contenu.
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Merci pour ta rapidité, je test ça de suite et te tiens au courant!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Juste une question: dans ton exemple, $datas est le résultat de ma requête SQL telle que je l'ai mise dans mon premier post?

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Oui, $datas est le résultat des données issues de la BD.
    Tout énigme a une solution ! Tout est question de discipline !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Bon, j'ai testé, mais je ne comprends pas tout...

    J'ai placé un echo histoire de voir ce qu'il se passait, car tous ces tableaux imbriqués ne me sont pas familiers.

    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
     
    $result = array();
     
      foreach ($datas as $data){
        if (!isset($result[$data['cstr']])){
          $result[$data['cstr']]['count'] = 0; // pour le rowspan constructeur
          $result[$data['cstr']]['modeles'] = array();
        }
     
        $result[$data['cstr']]['count']++;
        if (!$result[$data['cstr']]['modeles'][$data['modele']]){
          $result[$data['cstr']]['modeles'][$data['modele']]['opt'] = array();
        }
        echo ($result[$data['cstr']]['modeles'][$data['modele']]['opt'][] = $data['opt']);
    
      }
    Mon echo me retourne A7N, à savoir la première lettre de mon constructeur (Alcatel), puis la première "lettre" du modèle (7750) et enfin la première lettre du hostname (Neea).
    Il ne s'agit que du premier enregistrement de ma base...

    J'imagine que je dois englober ce code par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $liste = mysql_query($query, $serveur) or die(mysql_error);
    while($datas= mysql_fetch_assoc($liste)){
       ***
       ***
    }
    J'ai aussi du mal à voir ce que sont 'opt' et 'modeles'...

  7. #7
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    modele correspond à la 2ieme colonne de ton tableau
    opt (options) c'est pour les dernières colonnes (equ1, ...)

    ton while, il faut le mettre à la place du foreach.

    Et pour l'affichage final, il faut reparcourir tous le tableau
    en sachant le 1er niveau correspond au constructeur
    le 2ieme au modele
    et pour chaque modele il faut afficher les options dans un td.
    Tout énigme a une solution ! Tout est question de discipline !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    J'avoue que je vois mal comment je peux parcourir un tableau à plusieurs dimensions...

    En faisant ça par exemple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo '<tr>';
     
    foreach($data['constructeur'] as $key => $value){
       echo ('<td>'.$value.'</td>');
       foreach($date['constructeur']['modeles'] as $key1 => $value1) {
          echo ('<td>'.$value1.'</td>');
          }
    }
     
    echo '</tr>';

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Comme ca, tu auras sur la même ligne tous les modèles.

    pour le parcours, l'esprit est le 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
     
      foreach ($result as $constructeur){
       echo '<tr>
              <td rowspan="' . $constructeur['count'] . '">' . $constructeur['name'] . '</td>'; // rajouter le name dans la création du tableau
     
       $first = true;
       foreach ($constructeur['modeles'] as $modele){
         if (!$first){
           echo '</tr><td>'; // pour le saut de ligne
         }
         echo '<td>' . $modele['name'] . '</td>'; // rajouter le name dans la création du tableau
         foreach ($model['opt'] as $option){
           echo '<td>' . $option . '</td>';
         }
       }
      echo '</tr>';
      }
    Tout énigme a une solution ! Tout est question de discipline !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup!
    J'essaye ça...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Un petit up car je suis bloqué et je tourne en rond.

    J'ai du mal avec les tableaux multidimensionnels imbriqués: je n'arrive même pas à voir si le code de Bebel est fonctionnel en l'état ou si je dois le modifier et l'adapter....

    Je travaille avec Dreamweaver: donc les requêtes sont de la formes:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_select_db($database, $localhost);
    $query= " la requete";
    $liste = mysql_query($query, $localhost) or die(mysql_error());
    $row_liste = mysql_fetch_assoc($liste);
    $totalRows_liste = mysql_num_rows($liste);
    Dois je travailler avec $row_liste ou $liste? (pour la variable $datas dont parle Bebel)

    Mon autre souci est avec le foreach: je n'ai à chaque fois que la première ligne de mon résultat....

  12. #12
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Salut,

    si tu regarde la doc de mysql_fetch_assoc, tu vois dans l'exemple qu'il est utilisé dans un while.

    donc ton $row_liste corresponds au $value de ma boucle. Essaye déjà avec ça. Si tu as d'autre soucis en cours de route, reviens avec ton code fourni.

    Mais tu auras surement besoin d'adapter celui qui je t'ai fourni. Mais dans les grandes lignes, il ne devrait pas trop changer.
    Tout énigme a une solution ! Tout est question de discipline !

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/10/2012, 17h07
  2. [Oracle] Affichage des données sous forme de tableau dynamique
    Par bsidy1 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/10/2008, 14h17
  3. [MySQL] Afficher des résultat sous form de tableau invisible ?
    Par tentsuken dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/01/2008, 15h18
  4. Visualiser des résultats sous forme d'un tableau (type Excel)
    Par meera dans le forum Interfaces Graphiques
    Réponses: 34
    Dernier message: 22/05/2007, 12h06
  5. Réponses: 3
    Dernier message: 20/10/2006, 09h36

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