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 :

Requete pour ne récupérer que les enregistrements liès à un champ


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut Requete pour ne récupérer que les enregistrements liès à un champ
    Bonjour,

    J'ai une table telsec_telechargements qui se présente comme ceci :

    id url_tel id_tel id_prospect downloaded date_maj
    1 General Catalog1.pdf 176 39956 2 2021-10-01
    5 Prep Catalog.pdf 177 39956 2 2021-10-01
    7 Sample Prep Catalog.pdf 177 39956 2 2021-10-01
    8 GC_Supply.pdf 178 39956 2 2021-10-01
    10 Sample Prep Catalog23.pdf 177 39957 2 2021-10-01
    14 Sample Prep2 Catalog.pdf 177 39957 2 2021-10-01
    15 LC_Supply3.pdf 181 39957 2 2021-10-01

    Elle me permet de récupérer qui a téléchargé un fichier pdf et combien de fois. Je souhaite afficher l'id_prospect de la personne et les documents qu'elle a téléchargé et combien de fois.
    Je souhaite faire une requête qui me permettrait de récupérer tous documents téléchargés par l'id_prospect 39956 par exemple, soit obtenir cet affichage dans mon tableau html :

    id_prospect url_tel downloaded
    39956 General Catalog1.pdf 2
    Prep Catalog.pdf 2
    Sample Prep Catalog.pdf 2
    GC_Supply.pdf 2
    39957 Sample Prep Catalog23.pdf 2
    Sample Prep2 Catalog.pdf 2
    LC_Supply3.pdf 2

    Ma requête est celle-ci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reqProducts = $db->query("SELECT telsec_telechargements.id, telsec_telechargements.url_tel, telsec_telechargements.id_tel, telsec_telechargements.id_prospect, telsec_telechargements.downloaded, telsec_telechargements.date_maj, prospects.id_prospect, prospects.nom, prospects.prenom, prospects.societe
    	FROM telsec_telechargements, prospects
    	WHERE telsec_telechargements.id_prospect = prospects.id_prospect");

    Je vais également cherches les infos de la personne dans une autre table prospects (nom, prénoms..) mais comment puis-je isoler la personne depuis la table telsec_telechargements pour avoir l'affichage souhaité au-dessus ?

    J'ai essayé avec distinct SELECT DISTINCT id_prospect FROM telsec_telechargements mais ça ne me retourne pas tous mes enregistrements, ce n'est pas ce que je recherche.
    Merci

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    • 1- on utilise des ALIAS pour les noms des tables (ça simplifie la lecture)
    • 2- les JOINTURES entre tables se fait avec INNER JOIN ... ON ...


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    	T.id, T.url_tel, T.id_tel, T.downloaded, T.date_maj, 
    	P.id_prospect, P.nom, P.prenom, P.societe
    FROM telsec_telechargements AS T
    INNER JOIN prospects AS P
    	ON T.id_prospect = P.id_prospect
    ORDER BY P.nom ASC, P.prenom ASC, P.id_prospect ASC
    Ensuite, ça se passe au moment de l'affichage.

    On peut améliorer avec :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    	T.id, T.url_tel, T.id_tel, T.downloaded, T.date_maj, 
    	P.id_prospect, P.nom, P.prenom, P.societe,
    	(SELECT COUNT(T2.id_prospect) FROM telsec_telechargements AS T2 WHERE T2.id_prospect = T.id_prospect) AS nbre_lignes
    FROM telsec_telechargements AS T
    INNER JOIN prospects AS P
    	ON T.id_prospect = P.id_prospect
    ORDER BY P.nom ASC, P.prenom ASC, P.id_prospect ASC
    • La donnée "nbre_lignes" correspond au <td rowspan="<?= $nbre_lignes; ?>"> pour les lignes fusionnées de la <table> (concernant le prospect)

  3. #3
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci beaucoup pour ta réponse
    Bonne journée

  4. #4
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Concrètement, je n'arrive pas à sortir mon tableau, je ne retrouve pas le bon affichage.

    Voici mon code :
    Code php : 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
    $reqProducts = $db->query("SELECT 
    	T.id, T.url_tel, T.id_tel, T.downloaded, T.date_maj, 
    	P.id_prospect, P.nom, P.prenom, P.societe,
    	(SELECT COUNT(T2.id_prospect) FROM telsec_telechargements AS T2 WHERE T2.id_prospect = T.id_prospect) AS nbre_lignes
    FROM telsec_telechargements AS T
    INNER JOIN prospects AS P
    	ON T.id_prospect = P.id_prospect
    ORDER BY P.nom ASC, P.prenom ASC, P.id_prospect ASC	LIMIT $firstOfPage,$perPage");			  				  
     
    	while($item = $reqProducts->fetch()){ 
     
    ?>
     
    <TR>
    <td rowspan="<?= $nbre_lignes; ?>" ><? echo $item['id_prospect']; ?>
    <TD width=33%><? echo $item['url_tel']; ?></TD>
    <TD width=34%><? echo $item['downloaded']; ?></TD>
    </TR>
    <TR>
    <TD width=33%>cel 2</TD>
    <TD width=34%>3</TD>
    </TR>


    Est-ce que c'est possible de me montrer pour articuler le code du tableau parce que quelque chose m'échappe ? Merci

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    sauf erreur... :

    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
    <?php
    $reqProducts = $db->query("SELECT 
    	T.id, T.url_tel, T.id_tel, T.downloaded, T.date_maj, 
    	P.id_prospect, P.nom, P.prenom, P.societe,
    	(SELECT COUNT(T2.id_prospect) FROM telsec_telechargements AS T2 WHERE T2.id_prospect = T.id_prospect) AS nbre_lignes
    FROM telsec_telechargements AS T
    INNER JOIN prospects AS P
    	ON T.id_prospect = P.id_prospect
    ORDER BY P.nom ASC, P.prenom ASC, P.id_prospect ASC	LIMIT $firstOfPage,$perPage");			  				  
    // affichage
    ?>
    	<table>
    	<thead>
    		<th>prospect</th>
    		<th>url_tel</th>
    		<th>downloaded</th>
    	</thead>
    	<tbody>
    <?php
    		$id_prospect_en_cours	= 0;
    		while( $item = $reqProducts->fetch() )
    		{ 
    ?>
    		<tr>
    <?php		if( $id_prospect_en_cours != $item['id_prospect'] )
    			{
    				$id_prospect_en_cours = $item['id_prospect'];
    ?>
    			<td rowspan="<?= $nbre_lignes; ?>" ><? echo $item['id_prospect']; ?>
    <?php		} ?>
     
    			<td width=33%><? echo $item['url_tel']; ?></td>
    			<td width=34%><? echo $item['downloaded']; ?></td>
    		</tr>
    <?php	} ?>
    	</tbody>
    	</table>

  6. #6
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Super ! Merci beaucoup, l'affichage est bon.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2012, 17h16
  2. Logiciel pour récupérer que les mails dans une page web
    Par mouss4rs dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 24/07/2010, 14h41
  3. Réponses: 6
    Dernier message: 26/11/2008, 22h27
  4. faire une requete qui ne sort que les valeurs d'un champ coché
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/12/2006, 16h01
  5. requete pour ne récuperer que 1 fois les données.
    Par petburn dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/01/2006, 18h24

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