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 :

Gérer l'affichage sur resultat requete interne


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    technicien
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut Gérer l'affichage sur resultat requete interne
    Bonjour,
    Je suis à la recherche d'une solution et je tourne en rond depuis quelque temps...
    J'ai 3 tables dont une crée en tant que relation : rayon produit et contient
    J'ai 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
     
    $sql = 'SELECT nomrayon, nompro FROM rayon ray, produit pro, contient cont WHERE ray.numrayon=cont.numrayon AND cont.numpro=pro.numpro AND nomrayon = '.$nomrayon.' ;' ;
    $req = mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    echo ('<table border="1">');
    echo ('<tr>');
    echo ('<td>Nom rayon</td>');
    echo ('<td>Nom produit</td>');
    echo ('</tr>');
    while($result=mysql_fetch_row($req)){
    echo ('<tr>');
    for($i=0;$i<count($result);$i++){
    echo ('<td>'.$result[$i].'</td>');}
    echo ('</tr>');}
    echo ('</table>');
    Avec ce code j'obtiens bien pour chaque ligne le nomrayon et nomproduit mais le nomrayon revient systématiquement et j'aimerais mettre en évidence le nom du rayon, s'il est identique à la ligne précédente, avoir une cellule vide de cette manière :
    Nom rayon Nom produit
    Rayon 1 Produit 1
    Produit 2
    Rayon 2 Produit 1
    Produit 4

    Avez vous des suggestions pour le code php ? Ou avez d'autres solutions pour mettre en évidence que plusieurs produits appartiennent au meme rayon ?

    PS : je sais que les fonctions mysql sont dépassées, mais je débute alors la PDO c'est dans quelques mois.

  2. #2
    Membre expérimenté
    Homme Profil pro
    DSI interne
    Inscrit en
    Juin 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DSI interne
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2011
    Messages : 197
    Par défaut
    Bonsoir,
    Il existe plusieurs solutions, tu pourrais par exemple construire au préalable un tableau multidimensionnel de cette forme là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tableau[0]['produit1']
    $tableau[0]['produit2']
    $tableau[1]['produit1']
    $tableau[1]['produit2']
    $tableau[1]['produit3']
    //etc.......
    Il ne te reste plus qu'à modifier ton appel SQL.

  3. #3
    Membre averti
    Profil pro
    technicien
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    Merci pour la réponse,
    Si je comprends bien, la tableau
    En rang 0 : Rayon 1 avec produit1 et produit2
    En rang 1 : Rayon 2 avec produit1, produit2 et produit3
    Il faudrait en sql faire une requete par rayon, comment peut on faire ça ?
    En php on utilise toujours une boucle while ?
    Je nage un peu...

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    C'est toujours assez coton ce genre de problématique la première fois, reprenons ta requête (avec ma syntaxe préférée, qui ne mélange pas les jointures et les filtres).
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nomrayon, 
    nompro
    FROM rayon
    inner join contient on rayon.numrayon=contient.numrayon
    inner join produit on contient.numpro=produit.numpro 
    order by nomrayon, nompro

    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
    //tu ranges dans un tableau PHP
    $produits=array();
    while($row=mysql_fetch_assoc($req)){
       array_push($produits,$row);
    }
    //maintenant, tu peux fermer ta connexion à la base et constuire ton html
     
    //avant la boucle, tu prends le premier rayon
    $rayonTemoin=$produits[0]['nomrayon'];
    $start=true;
    //tu construis ici ton début de tableau HTML avec sa ligne de th
     
    foreach($produits as $produit){
       //tu ouvres ton tr
       if( $start){
          //tu rédiges ton td rayon rempli
          $start=false;
       }
       elseif($produit['nomrayon']==$rayonTemoin){
          //tu rédiges ton td rayon vide
       }
       elseif($produit['nomrayon']!=$rayonTemoin){
          $rayonTemoin=$produit['nomrayon'];
          //tu rédiges ton td rayon rempli
       }
       //ici dans tous les cas, tu rédiges ton td produit
       //tu fermes ton tr
    }
    //tu fermes ton tableau et tu fais péter le champagne
    J'ai pas testé, mais l'idée générale devrait fonctionner.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre averti
    Profil pro
    technicien
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    Super,
    Je saisi le concept, je vais tester tout ça dans quelques jours, je manque un peu de temps là... je viendrai vous tenir au courant.
    Dentrite, j'ai lu ton Tuto avec intérêt et c'est lui qui m'a lancé avec php.
    Un ptit tuto aussi bien fait sur PDO

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Une solution facile à mettre en place : une requête différent pour chaque rayon. Alors oui ça augmente le nombre de requête sql (et ça mettra quelques millièmes de secondes de plus à s’exécuter m'enfin ça reste grandement négligeable) mais ça facilite grandement la construction du code php.

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

Discussions similaires

  1. [WD15] HFiltre sur resultat Requete
    Par Jeje9 dans le forum WinDev
    Réponses: 9
    Dernier message: 11/09/2012, 16h35
  2. condition sur resultat requete sql
    Par GYooo dans le forum Android
    Réponses: 1
    Dernier message: 02/03/2011, 15h02
  3. [MySQL] affichage sur plusieur requete
    Par sinifer dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/04/2009, 09h32
  4. boucler sur une requete & affichage resultat
    Par ricoree78 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/08/2007, 15h44
  5. Réponses: 2
    Dernier message: 29/11/2004, 12h13

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