Requete SQL

Eléphant du PHP | 167 Messages

31 mai 2013, 10:43

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

Mammouth du PHP | 619 Messages

31 mai 2013, 11:06


ViPHP
ViPHP | 2577 Messages

31 mai 2013, 11:13

Normalement "ORDER BY Etudiant.id_etabliss" permet d'avoir la liste trié par établissement. Je ne comprends pas ce qui te pose problème.

Mammouth du PHP | 619 Messages

31 mai 2013, 11:18

 $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

Eléphant du PHP | 167 Messages

31 mai 2013, 11:26

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

  

Mammouth du PHP | 619 Messages

31 mai 2013, 11:35

Re,

essaie de mettre
ORDER BY Etudiant.id_etabliss desc
ou
ORDER BY Etudiant.id_etabliss asc

ViPHP
ViPHP | 2577 Messages

31 mai 2013, 11:39

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.

Eléphant du PHP | 167 Messages

31 mai 2013, 11:46

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...

Mammouth du PHP | 619 Messages

31 mai 2013, 11:52

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

 
?>

Eléphant du PHP | 167 Messages

31 mai 2013, 11:55

Re,

Ça m'affiche ça Unknown column 'Array' in 'where clause'

Mammouth du PHP | 619 Messages

31 mai 2013, 12:03

Edit : que veux tu vraiment car un order by id comme tu le dit "Ça trie bien par id_etabliss"
Modifié en dernier par ghost5922 le 31 mai 2013, 12:08, modifié 1 fois.

Eléphant du PHP | 167 Messages

31 mai 2013, 12:07

Re,

Alors, ça m'affiche "Array" à la place des noms des étudiants mais ça reste toujours tout les étudiants participants à la formation 3

Mammouth du PHP | 619 Messages

31 mai 2013, 12:09

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 .

Eléphant du PHP | 167 Messages

01 juin 2013, 10:59

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

Mammouth du PHP | 619 Messages

01 juin 2013, 13:31

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

?>