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 de requête SQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut Affichage de requête SQL
    PHP 5.3.8 - mySQL 5.5.16

    Recoucou,

    Bon, vous risquez de me voir assez souvent parce que là il me reste très peu de temps avant ma soutenance... J'espère que je vous embête pas trop avec mes questions de débutante...

    Bref, le site dont je m'occupe présente des films documentaires et des séries de films documentaires.

    Sur une page, il doit y avoir une liste des films et des séries classés par ordre alphabétique.

    Mais quand c'est une série, il ne faut pas afficher ses films, seulement le nom de la série et le nombre de films qu'elle contient.

    Un exemple sera plus parlant :

    AFRICANISTES, PEINTRES VOYAGEURS
    AMOCO-CADIZ... 20 ANS APRES
    A MOSSA
    AMOUR SANS LES MOTS
    ARCHITECTURES DE L'HABITAT série de 1 à 10
    ARTISANS DE LA MER série de 1 à 13
    AU DELA
    ...

    Je vais pêcher les infos dans deux tables mySQL : documentaire et serieDoc.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    -- --------------------------------------------------------
    --
    -- Structure de la table documentaire (8)
    --
     
    CREATE TABLE IF NOT EXISTS documentaire (
      idDoc int (3) NOT NULL AUTO_INCREMENT, 
      nomDoc_fr varchar(100) NOT NULL,
      nomDoc_en varchar(100) NOT NULL,
      datCopyright year NOT NULL,
      nomRea varchar(255) NOT NULL,
      nomAut varchar (255) NOT NULL,
      nomChore varchar(100) ,
      nomProd text NOT NULL,
      nomParticip text(400) NOT NULL,
      dureeDoc1 smallint(3) NOT NULL,
      dureeDoc2 smallint(3),
      dureeDoc3 smallint(3),
      noSerieDoc smallint(3),
      txtDoc_fr text NOT NULL,
      txtDoc_en text NOT NULL,
      datMajDoc timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      idNaturDoc varchar(3) ,
      idSerieDoc tinyint (2) ,
      idGenreDoc varchar(3) ,
      idImg int(4) ,
      CONSTRAINT pk_documentaire
    		PRIMARY KEY (idDoc),
      CONSTRAINT fk_DocNatur
    		FOREIGN KEY (idNaturDoc) REFERENCES naturDoc(idNaturDoc) ON DELETE CASCADE,
      CONSTRAINT fk_DocSerie
    		FOREIGN KEY (idSerieDoc) REFERENCES serieDoc(idSerieDoc) ON DELETE CASCADE,
      CONSTRAINT fk_DocGenre
    		FOREIGN KEY (idGenreDoc) REFERENCES genreDoc(idGenreDoc) ON DELETE CASCADE,
      CONSTRAINT fk_imgDocSerie_documentaire
    		FOREIGN KEY (idImg) REFERENCES imgDocSerie(idImg) ON DELETE CASCADE
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
     
    -- --------------------------------------------------------
    --
    -- Structure de la table serieDoc (7)
    --
     
    CREATE TABLE IF NOT EXISTS serieDoc (
      idSerieDoc tinyint (2) NOT NULL AUTO_INCREMENT, 
      nomSerieDoc_fr varchar(255) NOT NULL,
      nomSerieDoc_en varchar(255) NOT NULL,
      txtSerieDoc_fr text,
      txtSerieDoc_en text,
      nbDocsSerie smallint(2),
      datMajSerie timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      idImg int(4),
      CONSTRAINT pk_serieDoc
    		PRIMARY KEY (idSerieDoc),
      CONSTRAINT fk_imgDocSerie_serieDoc
    		FOREIGN KEY (idImg) REFERENCES imgDocSerie(idImg) ON DELETE CASCADE
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $req = "SELECT nomDoc_fr, nomSerieDoc_fr 
    FROM documentaire 
    INNER JOIN serieDoc ON documentaire.idSerieDoc = serieDoc.idSerieDoc";
     
    $result = mysql_query($req);
     
    while($rows = mysql_fetch_assoc($result)){
     
    echo '<p>'.$rows['nomDoc_fr'].'</p><p>'.$rows['nomSerieDoc_fr'].'</p>'; 
    }
    ?>
    Mais ça m'affiche :
    - nomFilm1 de la série X
    - nomSérie X
    - nomFilm2 de la série X
    - nomSérie X
    - nomFilm3 de la série X
    - nomSérie X

    Vous aurez remarqué que par contre ça n'affiche aucun film seul (=qui ne fait pas partie d'une série )

    Je patauge clairement et j'espère que l'un de vous saura m'aider. Merci d'avance !

  2. #2
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Salut,

    Alors si j'ai bien compris, il te suffit de remplacer ton INNER JOIN en LEFT JOIN

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Mais quand c'est une série, il ne faut pas afficher ses films, seulement le nom de la série et le nombre de films qu'elle contient.
    Tu veux dire qu'un film n'est pas forcément rattaché à une série ?
    Si c'est le cas, et si j'ai bien compris, tu chercherais donc une requête extrayant les séries ainsi que les films non rattachés à une série.
    J'ai bon ?

  4. #4
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Seb, tu as tout compris

    Il y a :
    - des séries comportants des films
    - des films qui font partie d'une série
    - des films qui ne font pas partie d'une série (des films seuls)

    et je cherche bien à faire dans un premier temps une requête extrayant les séries ainsi que les films non rattachés à une série.

    Après, il faudra aussi que j'arrive à ajouter pour les séries le nbre de films qu'elle contient comme par ex : ARCHITECTURES DE L'HABITAT série de 1 à 10.

  5. #5
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Nowwis, j'ai testé le LEFT JOIN et ça ne fait pas ce que j'attends non plus, même si on progresse un peu puisque maintenant ça affiche aussi les films seuls


    Voici ce que ça donne :

    • film A
    • film 1 de la série 1 (commence par A)
    • série 1
    • film 2 de la série 1 (commence par B)
    • série 1
    • film 3 de la série 1 (commence par C)
    • série 1


    au lieu de :

    • film A
    • série 1 (série de 1 à 3)

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Une solution serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (requête allant chercher les films sans série)
    UNION
    (requête allant chercher les séries)
    ORDER BY titre ASC
    http://dev.mysql.com/doc/refman/5.5/en/union.html

  7. #7
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Oui, c'est ça pour la première partie du problème, merciii Seb !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $req = "SELECT nomDoc_fr AS nom FROM documentaire
    UNION 
    SELECT nomSerieDoc_fr AS nom FROM serieDoc
    ORDER BY nom ASC ;";
     
     
    $result = mysql_query($req);
     
    while($rows = mysql_fetch_assoc($result)){
     
    	echo '<p>'.$rows['nom'].'</p>'; 
    }
    ?>
    Reste à indiquer pour les séries : série 1 à x

Discussions similaires

  1. [MySQL] Affichage de requêtes SQL
    Par Mouchh dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/08/2011, 15h20
  2. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  3. Affichage résultat requête SQL
    Par Shankara dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2010, 21h21
  4. Affichage de requête SQL
    Par bibipsi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/05/2009, 20h49
  5. [SQL] Soucis d'affichage de requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/06/2006, 16h25

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