Problème avec la boucle pour la création d'un tableau [Résolu]

Signaler
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
-
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
-
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

Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
18
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
Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
18
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.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
Merci je vais tester sa
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
J'ai trouver comment résoudre mon problème