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 sur 2 tables


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 19
    Points
    19
    Par défaut requete sur 2 tables
    Bonjour a tous amis du web!
    J'ai un problème via une requête que je fais surement mal!
    Tout d'abords j'ai deux tables :
    La 1ère se nomme convention elle contient pas mal d'infos genre nom de société etc...
    Elle contient surtout le nombre de participant et le numéro qui lui est commun à la seconde table.
    J'ai ma 2éme table qui se nomme beneficiaire et qui contient les colonne numero et stagiaire. stagiaire contient le nom des stagiaire associé au numero de convention .
    Bref on m'a conseillé de faire cette requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
    	c.numero,
    	c.nmbreParticipant,
    	GROUP_CONCAT(b.stagiaire	SEPARATOR	' - ')	AS	listeStagiaire
    FROM
    	convention	c,
    	beneficiaire	b
    WHERE
    	c.numero	=	b.numero
    GROUP BY
    	c.numero
    	c.nmbreParticipant
    Le probleme c'est que ne connaissant pas forcément cette syntaxe j'ai des problème pour mon echo.
    j'avais fait de cette manière
    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
    <?php
    require_once("../biblio/connexion.php");
    if(isset($_GET['numero'])) $numero=$_GET['numero'];
    $result=mysql_query("SELECT * FROM convention, beneficiaire WHERE convention.numero = beneficiaire.numero"); 
    $number_of_products = mysql_num_rows($result); 
    $beneficiaire = Array();
    $i = 0;
     
    while ($row = mysql_fetch_array($result))
    {
    	$nmbreParticipant = $row['nmbreParticipant'];
    	$beneficiaire[$i] = $row['stagiaire'.$i];
    	echo "test nombre participant et leur noms";
    	echo $nmbreParticipant. 'avec : ';
    	for ($i=1;$i<=$nmbreParticipant;$i++){
    		echo " - " .$beneficiaire[$i];
    	}
    }
    Mais malheureusement il prend en compte seulement les informations de ma 1ère table et pas de la seconde.
    Je pense que j'ai ma variable bénéficiaire qui n'est pas bonne mais je cale sur les solutions.. J'espère qu'une personne pourra m'aider en tout cas!! Merci d'avance!! Cordialement,

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    1) Les jointures s'écrivent depuis 20 ans avec l'opérateur JOIN ; il serait temps de s'y mettre !

    2) Il vaut mieux éviter la guerre des étoiles !

    3) Que veux-tu faire plus précisément ?
    Avoir la liste des conventions et des stagiaires associés ?

    Avec ta première requête, tu vas avoir des lignes du genre :
    1, 4, 'toto - titi - tata - tutu'

    La deuxième requête qui figure dans ton code PHP va donner, pour une convention, autant de lignes qu'il y a de stagiaires :
    1, 'toto'
    1, 'titi'
    1, 'tata'
    1, 'tutu'

    Le traitement sera donc forcément différent pour l'affichage.
    Dans le premier cas, il faut faire un explode de $row['listeStagiaire'] alors que dans el second il faut parcourir le jeu de résultats et gérer les ruptures (changements) de convention.

    Au passage, la première requête sera plus lente à exécuter par le SGBD que la seconde mais retournera moins de lignes. Si tu as beaucoup de données dans les tables, préfère la seconde requête, en évitant tout de même la guerre des étoiles !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    salutation cinephil!
    Merci pour tout ses conseil et pour le coup ce que je souhaite faire c'est afficher au format pdf a la base mais c'est pas le problème ici.
    Ce que je voudrait c'est que quand je fais ma requete elle m'écrive un truc du genre :
    Pour la convention numero 252525
    il y a 8 participants qui sont :
    -stagiaire 1
    -stagiaire 2
    -stagiaire 3
    -stagiaire 4
    -stagiaire 5
    -stagiaire 6
    -stagiaire 7
    -stagiaire 8

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La requête ne renverra jamais ce que tu viens de spécifier. L'affichage, c'est le boulot du logiciel qui présente les données, pas celui du SGBD qui ne fait que renvoyer un paquet de lignes et de colonnes de résultats.

    Donc, pour que PHP génère l'affichage que tu souhaites, il faut, comme je l'ai dit dans mon message précédent et selon la requête que tu feras exécuter :
    - soit faire un explode de la liste de stagiaires renvoyée par la requête pour chaque convention ;
    - soit gérer les changement de convention dans le foreach du parcours du jeu de résultats renvoyés par la requête.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Le mieux la donc serait de faire l'explode du tableau non ?
    Je vois ce que tu veux dire pour l'explode et comprend mieux pourquoi forcément ya rtien qui s'affiche
    Je vais partir dans ce sens la en tout cas merci pour l'infos a force de chercher on voit pas ce qu'il ya devant son nez!!

Discussions similaires

  1. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  2. requete sur 2 tables mysql
    Par PAYASS59 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/09/2005, 11h48
  3. Pb requete sur 2 tables
    Par panini182 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2005, 17h26
  4. Requete sur deux tables
    Par ReaseT dans le forum ASP
    Réponses: 13
    Dernier message: 07/02/2005, 16h18
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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