Page 1 sur 2
Requete SQL
Posté : 31 mai 2013, 10:43
par NUAGE
Bonjour,
J'ai besoin de votre aide.
Je crée des formations auxquelles participent des étudiants. Je voudrais pouvoir afficher dans un pdf nom des étudiants par établissement qui participent à la formation n°3
Avec ce code j'ai tout les étudiants qui participent à la formation n°3.
J'ai essayé de placé les étudiants dans un tableau mais rien n'est fait...
$tab=array();
$res= mysql_query("SELECT * FROM Etudiant, Etablissement, Participation WHERE id_form='3' AND Participation.id_etu=Etudiant.id_etu AND Etablissement.id_etabliss=Etudiant.id_etabliss ORDER BY Etudiant.id_etabliss");
while($ligne = mysql_fetch_array($res)){
array_push($tab,$ligne['id_etu']);
$pdf->Cell(0,10,$ligne['nomEtu']." ".$ligne['prenomEtu'],0,0, 'L');
$pdf->Ln(5);
}
Merci d'avance
Re: Requete SQL
Posté : 31 mai 2013, 11:06
par ghost5922
Re: Requete SQL
Posté : 31 mai 2013, 11:13
par Mazarini
Normalement "ORDER BY Etudiant.id_etabliss" permet d'avoir la liste trié par établissement. Je ne comprends pas ce qui te pose problème.
Re: Requete SQL
Posté : 31 mai 2013, 11:18
par ghost5922
$pdf->Cell(0,10,$ligne['nomEtu']." ".$ligne['prenomEtu'],0,0, 'L');
$pdf->Ln(5);
ici il donne les distances du coup tout doit ce mettre au meme endroit
d'ou mon lien qui donne un exemple de tableau
http://www.fpdf.org/fr/tutorial/tuto5.htm
Re: Requete SQL
Posté : 31 mai 2013, 11:26
par NUAGE
Bonjour,
Oui, normalement mais moi ça m'affiche tout les étudiants participant à la formation et pas du tout trié par leur établissement.
J'ai essayé de stocker les participants dans un tableau et ensuite trier suivant ce tableau pourtant j'ai ceci Unknown column 'Array' in 'where clause'
res= "SELECT * FROM Etudiant, Participation WHERE id_form='3' AND Participation.id_etu=Etudiant.id_etu";
$query=mysql_query($res);
$tab=array();
while($ligne = mysql_fetch_array($query)){
$tab[$ligne['id_etu']] = $ligne['nom_etu'];
}
$res2= "SELECT * FROM Etudiant, Participation WHERE id_form='3' AND Participation.id_etu in ($tab )order by id_etabliss";
$query2=mysql_query($res2) or die(mysql_error());
while($ligne2 = mysql_fetch_assoc($query2)){
$pdf->Cell(0,10,$ligne2['nom_etu'],0,0, 'L');
$pdf->Ln(5);
}
mysql_free_result($query2);
Re: Requete SQL
Posté : 31 mai 2013, 11:35
par ghost5922
Re,
essaie de mettre
ORDER BY Etudiant.id_etabliss desc
ou
ORDER BY Etudiant.id_etabliss asc
Re: Requete SQL
Posté : 31 mai 2013, 11:39
par Mazarini
Essayes ca avec phpmyadmin ou un client mysql.
SELECT id_etabliss, NomEtu, PrenomEtu FROM Etudiant, Participation
WHERE id_form='3' AND Participation.id_etu=Etudiant.id_etu
order by id_etabliss
Normalement, ca ne peut être que trié par id_etabliss
Perso, je mettrai order by id_etabliss, NomEtu, PrenomEtu (voir je remplacerai id_etabliss par le nom.
Re: Requete SQL
Posté : 31 mai 2013, 11:46
par NUAGE
Re,
Ça trie bien par id_etabliss mais moi je veux que ça me trie les participants qui ont le même id_etabliss
C'est pour ça j'ai essayé de mettre tout les participants dans un tableau mais ça ne marche pas...
Re: Requete SQL
Posté : 31 mai 2013, 11:52
par ghost5922
ok et comme cela
tu avais oublie un [] sur cette ligne $tab[$ligne['id_etu']][] = $ligne['nom_etu'];
<?php
$res= "SELECT * FROM Etudiant, Participation WHERE id_form='3' AND Participation.id_etu=Etudiant.id_etu";
$query=mysql_query($res);
$tab=array();
while($ligne = mysql_fetch_array($query)){
$tab[$ligne['id_etu']][] = $ligne['nom_etu'];
}
$res2= "SELECT * FROM Etudiant, Participation WHERE id_form='3' AND Participation.id_etu in ($tab )order by id_etabliss";
$query2=mysql_query($res2) or die(mysql_error());
while($ligne2 = mysql_fetch_assoc($query2)){
$pdf->Cell(0,10,$ligne2['nom_etu'],0,0, 'L');
$pdf->Ln(5);
}
mysql_free_result($query2);
?>
Re: Requete SQL
Posté : 31 mai 2013, 11:55
par NUAGE
Re,
Ça m'affiche ça Unknown column 'Array' in 'where clause'
Re: Requete SQL
Posté : 31 mai 2013, 12:03
par ghost5922
Edit : que veux tu vraiment car un order by id comme tu le dit "Ça trie bien par id_etabliss"
Re: Requete SQL
Posté : 31 mai 2013, 12:07
par NUAGE
Re,
Alors, ça m'affiche "Array" à la place des noms des étudiants mais ça reste toujours tout les étudiants participants à la formation 3
Re: Requete SQL
Posté : 31 mai 2013, 12:09
par ghost5922
tu veux afficher tous les participant a la formation 3 puis les autres ? donne nous un exemple qu'on vois mieux la chose

ou dit nous comment tu veux les affiches
formation 3
Etablissement 1 =
id_elev
1
5
6
7
Etablissement 2 =
id_elev
2
4
8
9
etc .
Re: Requete SQL
Posté : 01 juin 2013, 10:59
par NUAGE
Bonjour,
Je suis désolé de ne pas être assez clair, en fait je crée une formation à laquelle suivant les établissements j'ajoute des étudiants de cet établissement.
Du coup pour une formation donnée donc dans ce cas 3, je veux pouvoir générer un pdf pour chaque établissement participants.
Exactement comme tu l'as dis ghost5922 :
nom_etabliss 1
id_etu
1
2
3
nom_etabliss 2
4
5
6
Re: Requete SQL
Posté : 01 juin 2013, 13:31
par ghost5922
Bonjour,
ok donc un order by Etablissement puis etudiant cela doit marche corrige si les tables et champ sont incorrecte
<?php
$res= "SELECT * FROM Etudiant, Participation WHERE id_form='3' AND Participation.id_etu=Etudiant.id_etu order by Etudiant.id_etabliss,Participation.id_etu";
$query=mysql_query($res);
$tab=array();
while($ligne = mysql_fetch_array($query)){
$pdf->Cell(0,10,$name,0,0, 'L');
$pdf->Ln(5);
}
?>