Problème avec la boucle pour la création d'un tableau

Résolu
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 21 mai 2014 à 13:12
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 21 mai 2014 à 17:00
Bonjour,
J'ai un soucis je n'arrive pas a réaliser la boucle qui pourrais me permettre de crée un tableau :
-Qui crée une ligne pour le premier N°de projet qui correspond au filtre sélectionner et qui vas lister dans les lignes suivantes le N°de request.
-Puis va passer au suivant et ainsi de suite jusqu'à la fin.

Voila se que j'ai fais
<html>
<title>TimeSheet Sorted by date</title>
<body>
<style>
.couleur_texte
{
	color: blue;
	font-style:italic;
	font-size: xx-large; 
	font-weight: bold;
}

#body
{            
	width : 50%;
	margin : auto; 
}

table 
{
	border: medium solid #000000;
	width: 100%;
}



td 
{
	font-family: sans-serif;
	border: thin solid #000000;
	width: 50%;
	padding: 5px;
	text-align: center;
	background-color: #ffffff;
}

</style>
<div id="body">
<?php
include("connexion.php");

    $Worker = $_POST['Worker'];
	$Between = $_POST['Between'];
	$End = $_POST['End'];

$select = "SELECT caetbl_ProgList.ProgramNumber,
				  count(caetbl_TimeTracking.date), 
				  caetbl_GroupList.Group_Name, 
				  caetbl_people.LastName, 
				  sum(time_spent), 
				  caetbl_Sim_requests.RequestID, 
				  caetbl_Sim_requests.Sim_Title, 
				  caetbl_ProgList.Description
			FROM (caetbl_GroupList INNER JOIN (caetbl_ProgList INNER JOIN caetbl_Sim_requests ON caetbl_ProgList.ProgramNumber=caetbl_Sim_requests.Proj_Number) 
								   ON caetbl_GroupList.GroupID=caetbl_ProgList.Group) 
			INNER JOIN (caetbl_people INNER JOIN caetbl_TimeTracking ON caetbl_people.PeopleID=caetbl_TimeTracking.Worker) 
			ON caetbl_Sim_requests.RequestID=caetbl_TimeTracking.SimRequest
			WHERE (((caetbl_TimeTracking.date) Between '$Between' And '$End') 
			AND ((caetbl_people.PeopleID)='$Worker'))";
		   
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);	

$select1 = "SELECT caetbl_ProgList.ProgramNumber,
				  count(caetbl_TimeTracking.date),
				  caetbl_TimeTracking.date,
				  caetbl_GroupList.Group_Name, 
				  caetbl_people.LastName, 
				  sum(time_spent), 
				  caetbl_Sim_requests.RequestID, 
				  caetbl_Sim_requests.Proj_Number,
				  caetbl_Sim_requests.Sim_Title, 
				  caetbl_ProgList.Description
			FROM (caetbl_GroupList 
			INNER JOIN (caetbl_ProgList 
				INNER JOIN caetbl_Sim_requests 
				ON caetbl_ProgList.ProgramNumber=caetbl_Sim_requests.Proj_Number) 
			ON caetbl_GroupList.GroupID=caetbl_ProgList.Group) 
			INNER JOIN (caetbl_people 
				INNER JOIN caetbl_TimeTracking 
					ON caetbl_people.PeopleID=caetbl_TimeTracking.Worker) 
			ON caetbl_Sim_requests.RequestID=caetbl_TimeTracking.SimRequest
			WHERE (((caetbl_TimeTracking.date) Between '$Between' And '$End') 
			AND ((caetbl_people.PeopleID)='$Worker'))
			GROUP BY Proj_Number";
		   
$result1 = mysql_query($select1) or die ('Erreur : '.mysql_error() );
$total1 = mysql_num_rows($result1);         
     
// si on a récupéré un résultat on l'affiche.
if($total) 
{
	//$row0 = mysql_fetch_array($result0)
	//En-tête
	$row = mysql_fetch_array($result);

	echo '<fieldset>
			
				<label class="couleur_texte">TimeSheet</label> <br />
				<label >Check of data :</label > <br />
				               
				              
				<label >Date mentionned : </label><label >'.$row["count(caetbl_TimeTracking.date)"].'</label > <br />
		  
				               
				              
				<label >Total hours work : </label><label >'.$row["sum(time_spent)"].'</label > <br />
	     </fieldset>';

	//En-tête du tableau
	echo '<table align="center" >'."\n";
		echo '<tr>';
			echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
			echo '<td bgcolor="#669999"></td>';
			echo '<td bgcolor="#669999"></td>';
			echo '<td bgcolor="#669999"><b><u>Time(h)</u></b></td>';
		echo '</tr>'."\n";

		//Corp du tableau
		while($row1 = mysql_fetch_array($result1)) 
		{
			echo '<tr>';
				echo '<th bgcolor="#696969">'.$row1["ProgramNumber"].'</th>';
				$PN=$row1["ProgramNumber"];
				echo '<th bgcolor="#696969">'.$row1["Description"].'</th>';		//titel Project
				echo '<th bgcolor="#696969">'.$row1["count(caetbl_TimeTracking.date)"].'</th>';		//day marked
				echo '<th bgcolor="#696969">'.$row1["sum(time_spent)"].'</th>';
			echo '</tr>'."\n";
				
				if($row1["Proj_Number"]=$row1["ProgramNumber"]) 
				{
					echo '<tr>';
						echo '<td bgcolor="#FFFFFF">'.$row1["date"].'</td>';
						echo '<td bgcolor="#FFFFFF">'.$row1["Sim_Title"].'</td>';		//titel request
						echo '<td bgcolor="#FFFFFF">'.$row1["RequestID"].'</td>';
						echo '<td bgcolor="#FFFFFF"></td>';
					echo '</tr>'."\n";
				}
		}
	echo '</table>'."\n";
	//fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
     
mysql_free_result($result);
     
?>
</div>
</body>
</html>


La parti avec la boucle :
if($total) 
{
	//$row0 = mysql_fetch_array($result0)
	//En-tête
	$row = mysql_fetch_array($result);

	echo '<fieldset>
			
				<label class="couleur_texte">TimeSheet</label> <br />
				<label >Check of data :</label > <br />
				               
				              
				<label >Date mentionned : </label><label >'.$row["count(caetbl_TimeTracking.date)"].'</label > <br />
		  
				               
				              
				<label >Total hours work : </label><label >'.$row["sum(time_spent)"].'</label > <br />
	     </fieldset>';

	//En-tête du tableau
	echo '<table align="center" >'."\n";
		echo '<tr>';
			echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
			echo '<td bgcolor="#669999"></td>';
			echo '<td bgcolor="#669999"></td>';
			echo '<td bgcolor="#669999"><b><u>Time(h)</u></b></td>';
		echo '</tr>'."\n";

		//Corp du tableau
		while($row1 = mysql_fetch_array($result1)) 
		{
			echo '<tr>';
				echo '<th bgcolor="#696969">'.$row1["ProgramNumber"].'</th>';
				$PN=$row1["ProgramNumber"];
				echo '<th bgcolor="#696969">'.$row1["Description"].'</th>';		//titel Project
				echo '<th bgcolor="#696969">'.$row1["count(caetbl_TimeTracking.date)"].'</th>';		//day marked
				echo '<th bgcolor="#696969">'.$row1["sum(time_spent)"].'</th>';
			echo '</tr>'."\n";
				
				if($row1["Proj_Number"]=$row1["ProgramNumber"]) 
				{
					echo '<tr>';
						echo '<td bgcolor="#FFFFFF">'.$row1["date"].'</td>';
						echo '<td bgcolor="#FFFFFF">'.$row1["Sim_Title"].'</td>';		//titel request
						echo '<td bgcolor="#FFFFFF">'.$row1["RequestID"].'</td>';
						echo '<td bgcolor="#FFFFFF"></td>';
					echo '</tr>'."\n";
				}
		}
	echo '</table>'."\n";
	//fin du tableau.
}


(Je n'ai pas encore fais les alias car je ne suis pas encor très au point avec ceci)

Pour l'instant ma boucle me liste bien les numéro de projet mais ne me même q'un seul request.

Merci

3 réponses

YepoMax Messages postés 74 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 14 juin 2014 20
21 mai 2014 à 14:10
Bonjour,

Pour comparer si A et B sont égaux, on utilise "==" et non pas "="

Remplacez donc
while($row1 = mysql_fetch_array($result1)) 

par
while($row1 == mysql_fetch_array($result1)) 


et
if($row1["Proj_Number"]=$row1["ProgramNumber"]) 

par
if($row1["Proj_Number"] == $row1["ProgramNumber"]) 



Conseil :

Définissez plusieurs FONCTIONS plutôt que d'avoir un bloc si énorme où l'on se perd !

Bien à vous, YepoMax
0
YepoMax Messages postés 74 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 14 juin 2014 20
21 mai 2014 à 16:14
Je me suis mal exprimé, je ne voulais pas donner la solution mais corriger ne fut-ce que la syntaxe. Si vous remplacez le "while" par celui que j'ai donné, ça ne fonctionnera pas car $row1 = mysql_fetch_array($result1) n'est pas une CONDITION mais bien ASSIGNER une valeur à une variable.

Vous devez revoir votre code au niveau du while, pour cela je vous conseille donc d'écrire des fonctions (par exemple une qui prendra comme paramètre une ligne (row) et qui vous retournera un chaine de caractères contenant le code HTML à imprimer (echo)). En décomposant votre code, je suis certain qu'il vous paraitra évident que votre while pose un soucis et que vous verrez plus clair pour le corriger.
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
21 mai 2014 à 14:13
Merci je vais tester sa
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
21 mai 2014 à 17:00
J'ai trouver comment résoudre mon problème
0
Rejoignez-nous