Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 12h22   #1
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Par défaut Select sur 2 tables dans une boucle?

Bonjour,

Voici ma structure sql raccourci :
Table t_journee
id_journee | date

Table t_volontaires
id_journee | id_volontaire

En fait l'administrateur créé une journée de formation.
Ensuite les volontaires s'inscrivent.

A l'heure actuelle, dans la partie administrateur je fais une requète avec une boucle pour récupérer les dates des journées de formation.
Et dans la boucle while, je fais une requète pour récupérer les volontaires de la journée en question.

Ca fonctionne trés bien.

Mais n'y à t'il pas un moyen d'éviter de faire une requête dans une boucle?

Merci pour votre réponse.
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 13h24   #2
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 344
Points : 2 344
Bonjour,

Montre nous ton code actuel peut-être ?
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 14h30   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
A priori, tu dois pouvoir faire ça avec une jointure, mais ça implique que tu auras autant de lignes que de participants par journée. Donc ça dépend essentiellement de ce que tu fais du résultat de ces requêtes.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h38   #4
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Voici un bout de code:

Code php :
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
 
<?
$sql = "SELECT *
FROM t_instruction
ORDER BY date_d ASC";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>' . mysql_error());
$true = mysql_num_rows($req);
if ($true == 0 ) exit;
$i = 0;	
$active = 0;
while ($result = mysql_fetch_array ($req))
{
 
$sql2 = "SELECT reservistes.id_res, reservistes.nom, grades.grades as grade
	FROM t_instruction_candidats
	LEFT JOIN reservistes ON t_instruction_candidats.id_res = reservistes.id_res
	LEFT JOIN grades ON reservistes.id_grades = grades.id_grades
	WHERE id_instruction = '".$result['id_instruction']."'
	ORDER BY nom ASC";
	$req2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>' . mysql_error());
 
echo "<h3><a href=\"#\">".$tab_jours[$jour]." ".datefr($result['date_d'])." - ".$nbr_inscrit." inscrit(s) pour ".$result['nbr_candidats']." places</a></h3>";
 
while ($result2 = mysql_fetch_array ($req2))
	{
		?>
        <li><? echo $result2['nom'];?> (<? echo $result2['grade'];?>) <a href="index_admin.php?page=admin_instruction.php&id_instruction=<? echo $result['id_instruction'];?>&id_res=<? echo $result2['id_res'];?>=&supp_res=1" onclick="return doconfirm('Ceci supprimera le réserviste de l\'instruction.');"><img src="images/Delete.png" width="15" height="15" title="Supprimer"></a></li>
        <?
	}
}
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h52   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Tu peux effectivement tout récupérer dans une seule requête. Il suffit de trier des résultats de façon à regrouper chaque instruction et de mettre un filtre pour n'afficher chaque entête qu'une seule fois :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$sql = "SELECT t_instruction.id_instruction, t_instruction.date_d, t_instruction.nbr_candidats, reservistes.id_res, reservistes.nom, grades.grades as grade
        FROM t_instruction 
        INNER JOIN t_instruction_candidats ON t_instruction.id_instruction = t_instruction_candidats.id_instruction
        LEFT JOIN reservistes ON t_instruction_candidats.id_res = reservistes.id_res
        LEFT JOIN grades ON reservistes.id_grades = grades.id_grades
        ORDER BY date_d ASC, t_instruction.id_instruction ASC, nom ASC";
$true = mysql_num_rows($req);
if ($true == 0 ) exit;
$id_courant = null;
while ($result = mysql_fetch_array ($req)) {
    // si on a change de groupe
    if ($id_courant != $result['id_instruction']) {
        echo "<h3><a href=\"#\">".$tab_jours[$jour]." ".datefr($result['date_d'])." - ".$nbr_inscrit." inscrit(s) pour ".$result['nbr_candidats']." places</a></h3>";
        $id_courant = $result['id_instruction'];
    }
    //affichage du candidat
    ?>
    <li><? echo $result['nom'];?> (<? echo $result['grade'];?>) <a href="index_admin.php?page=admin_instruction.php&id_instruction=<? echo $result['id_instruction'];?>&id_res=<? echo $result['id_res'];?>=&supp_res=1" onclick="return doconfirm('Ceci supprimera le réserviste de l\'instruction.');"><img src="images/Delete.png" width="15" height="15" title="Supprimer"></a></li>
    <?
}
Au passage, je pense que dans ton lien tu veux parler de "réservation" et non de "réserviste"
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 01h29   #6
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Merci pour ta réponse.

J'ai eu un contact avec l'administrateur, et il aimerai avec une seul requète pouvoir faire exporter à partir de phpmyadmin.

Donc est t'il possible de rajouter les différentes lignes de la seconde table en colonne à la première?

par exemple :

id_journée | date | id_volontaire | idvolontaire | id_volontaire... jusqu'a ce que tous les volontaires s'affichent?
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 15h17   #7
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
Je crois que si tu fais un SELECT * sa devrais marcher
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 23h27   #8
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Le soucis c'est que les id_volontaire sont dans une seconde table.
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h15   #9
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 1
Points : 1
Par défaut A/s requete

bonsoir a tt

désole je suis débutant je sais pas comment vous explique ce que je veux .mais j'ess
j'ai :
1-le premier tableau sur une feuille exel contient( code- nom- prénom -date de naissance.......etc )
2-le deuxième tableau tjrs sur un autre feuille exel contient (code-date d’entrée -date de sortie.......etc )
je veux créer une 3eme feuille qui regrouper tous les informations (code- nom- prénom -date naissance-date d’entrée -date de sortie..........)
merci d'avance
trezo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 09h41   #10
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par trezo Voir le message
bonsoir a tt

désole je suis débutant je sais pas comment vous explique ce que je veux .mais j'ess
j'ai :
1-le premier tableau sur une feuille exel contient( code- nom- prénom -date de naissance.......etc )
2-le deuxième tableau tjrs sur un autre feuille exel contient (code-date d’entrée -date de sortie.......etc )
je veux créer une 3eme feuille qui regrouper tous les informations (code- nom- prénom -date naissance-date d’entrée -date de sortie..........)
merci d'avance
Bonjour,
euh, question : je parie que la 3ème feuille est sur Excel, non ?
Si oui, ce n'est pas le bon forum ici c'est le forum PHP, et c'est le forum Excel
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web