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);
}

?>