Page 1 sur 1

Utilisation de plusieurs requetes SQL dans un Tableau

Posté : 05 nov. 2014, 15:03
par BobFire
Bonjour à tous,

Je souhaite afficher un planning de travaille dans un tableau avec 3 colonnes (Matin, Après-Midi, Nuit). Pour cela, je requête une table déjà remplie et execute un msqli_fecth_array pour envoyer mes resultats dans un tableau.
Malheureusement, le tableau ne me renvoie pas l'ensemble des resultats, voici mon code :
 <table width="980" style="border-collapse:collapse;">
   <tr height="15"><td width="980" colspan=3></td></tr>
   <tr>
    <td width="980" align=center class="titrepage" colspan=3>Visualisation de la liste de Garde</td>
   </tr>
   <tr>
    <td width="980" colspan=3><hr style="height:0; border:solid 2px black"></hr></td>
   </tr>
<?php

$connexion = mysqli_connect($hote,$utilisateur,$motdepasse,$bdd)
		or die ("Connexion au serveur impossible.");

$requetematin = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a 
			 WHERE l.agent = a.IDAgent AND typegarde = 'Garde' 
			 OR l.agent = a.IDAgent AND typegarde = '08h00 - 20h00' 
			 OR l.agent = a.IDAgent AND typegarde = 'Matin'";
				 
$resultatmatin = mysqli_query($connexion,$requetematin);

$requeteapresmidi = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a 
			 WHERE l.agent = a.IDAgent AND typegarde = 'Garde' 
			 OR l.agent = a.IDAgent AND typegarde = '08h00 - 20h00' 
			 OR l.agent = a.IDAgent AND typegarde = 'Après-Midi'";
				 
$resultatapresmidi = mysqli_query($connexion,$requeteapresmidi);

$requetenuit = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a 
			 WHERE l.agent = a.IDAgent AND typegarde = 'Garde' 
			 OR l.agent = a.IDAgent AND typegarde = '20h00 - 08h00'";
				 
$resultatnuit = mysqli_query($connexion,$requetenuit);
?>
    <tr>
	 <td class="Titre" width="325" align=center style="border-right:1px solid; border-bottom:1px solid">Matin</td>
	 <td class="Titre" width="300" align=center style="border-left:1px solid; border-right:1px solid; border-bottom:1px solid">Après-Midi</td>
	 <td class="Titre" width="325" align=center style="border-left:1px solid; border-bottom:1px solid">Nuit</td>
	</tr>
<?php 
while ($lignematin = mysqli_fetch_array($resultatmatin) AND $ligneapresmidi = mysqli_fetch_array($resultatapresmidi) AND $lignenuit = mysqli_fetch_array($resultatnuit))
  {
  list($idmatin,$datematin,$agentmatin,$typegardematin,$observationmatin,$nommatin,$prenommatin)=$lignematin; 
  list($idapresmidi,$dateapresmidi,$agentapresmidi,$typegardeapresmidi,$observationapresmidi,$nomapresmidi,$prenomapresmidi)=$ligneapresmidi; 
  list($idnuit,$datenuit,$agentnuit,$typegardenuit,$observationnuit,$nomnuit,$prenomnuit)=$lignematin; 

  $i2=0;
  
   if ($i2=0)
   { 

   }
   else 
   {	
	$datemodifie = TUSF ($date);
	echo "<tr>"; 
	echo "<td class=\"Titre\" width=\"300\" align=center style=\"border-right:1px solid; border-bottom:1px solid\">$nommatin $prenommatin $idmatin</td>";
	echo "<td class=\"Titre\" width=\"300\" align=center style=\"border-left:1px solid; border-right:1px solid; border-bottom:1px solid\">$nomapresmidi $prenomapresmidi $idapresmidi</td>";
	echo "<td class=\"Titre\" width=\"325\" align=center style=\"border-left:1px solid; border-bottom:1px solid\">$nomnuit $prenomnuit $idnuit</td>";
	echo "</tr>";
   }
    $i2++ ;
   }		

?>   
  </table>
Merci d'avance pour votre aide.

Re: Utilisation de plusieurs requetes SQL dans un Tableau

Posté : 05 nov. 2014, 16:00
par ynx
Salut,

Tes requêtes ne semblent pas correctes. On peut les corriger simplement comme ceci :
$requetematin = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a
                         WHERE l.agent = a.IDAgent AND typegarde IN ('Garde', '08h00 - 20h00', 'Matin')";

$requeteapresmidi = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a
                         WHERE l.agent = a.IDAgent AND typegarde IN ('Garde', '08h00 - 20h00', 'Après-Midi')";

$requetenuit = "SELECT l.*,a.Nom, a.Prenom FROM listedegarde l, agent a
                         WHERE l.agent = a.IDAgent AND typegarde IN ('Garde', '20h00 - 08h00')";
Cela dit je trouve étrange que la valeur du champ typegarde puisse être égale à 'Garde' : celle-ci ne nous donne aucune information sur la période et donc cette garde se retrouvera dans les résultats des 3 requêtes. Un problème de conception bdd ?
Dans l'idéal tu devrais pouvoir récupérer l'ensemble des gardes avec chacune leur période (marin, aprèm, nuit) en une seule et unique requête.

Bonne journée

Re: Utilisation de plusieurs requetes SQL dans un Tableau

Posté : 05 nov. 2014, 16:18
par Invité
Merci pour les requêtes elles sont plus fluides comme cela.

Pour la valeur garde, elle représente une durée de 24h de travaille et c'est pour cela qu'elle se retrouve dans les 3 requêtes.
Le réel problème se retrouve dans l'affichage du tableau, tous les enregistrements ne s'affiche pas correctement dans le tableau comme décrit dans le code