Tableau dynamique en php

Fermé
lettywan - 26 juil. 2010 à 13:05
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 juil. 2010 à 09:14
Bonjour,

Je voudrais afficher dynamiquement un tableau en php a partir de requetes sql.

Je m'explique:

Ma premiere requete cherche des données dans une table "jour_semaine "(num_jour_semaine;jour)

Ma deuxieme requete cherche des données dans une table "agent" (num_agent;nom_agent)

Ma troisieme requete cherche des données dans une table "donnees" (num_saisiedonnees;num_jour_semaine;num_agent;saisie)

Donc je voudrais afficher :
- en colonne les jours => resultat de ma premiere requete
- en ligne le nom de l'agent et la valeur saisie

Quelqu'un peut il m'aider.

Merci par avance

A voir également:

7 réponses

DasSium95 Messages postés 673 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 13 avril 2016 134
26 juil. 2010 à 13:13
tu dois mettre ton résultat de requête sous forme de tableau et ensuite faire un for dans lequel tu écris le code qui permet de créer une de ton tableau. un l'intérieur a l'intérieur de tes echo"<th>" echo"</td>" tu met la valeur i de ton tableau contenant le résultat de ta requête.

j'ai pas précisé mais le for parcours le tableau contenant le résultat
0
Bonjour DasSium95 .

Merci pour ta réponse rapide.

Faut il que je fasse 3 boucles For ? (une par requete ?).
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 juil. 2010 à 14:12
quand il parle de tableau c'est d'un array (a plusieurs dimensions)

à chaque requette tu fais une boucle while pour empiler les valeurs dans l'array

et ensuite tu fais une boucle foreach sur le premier niveau de l'array (les jours) et dans tes td affiches ensuite le deuxième niveau de l'array (agent, valeur)
0
Bonjour Alain_42.

Merci pour ta réponse.

Voila ce que j'ai commencé à faire.

Est ce que je suis sur la bonne piste ?

Merci
0
LE CODE:
<?php
//JOURS
mysql_select_db($database_aquinet, $aquinet);
$query_jours = "SELECT * FROM jour_semaine";
$jours = mysql_query($query_jours, $aquinet) or die(mysql_error());
$row_jours = mysql_fetch_assoc($jours);
$totalRows_jours = mysql_num_rows($jours);
$resultatJours=mysql_query($query_jours);

for($j=0;$j<$totalRows_jours;$j++)
{
$listeJours[$j]['num_jour_semaine']=$row_jours['num_jour_semaine'];
$listeJours[$j]['jour']=$row_jours['jour'];
$listeJours[$j]['semaine']=$row_jours['semaine'];
$row_jours = mysql_fetch_assoc($jours);
}

//AGENTS
mysql_select_db($database_aquinet, $aquinet);
$query_agent = "SELECT num_agent,nom_agent,prenom_agent FROM agent";
$agent = mysql_query($query_agent, $aquinet) or die(mysql_error());
$row_agent = mysql_fetch_assoc($agent);
$totalRows_agent = mysql_num_rows($agent);
$resultat=mysql_query($query_agent);

for($a=0;$a<$totalRows_agent;$a++)
{
$listeAgent[$a]['num_agent']=$row_agent['num_agent'];
$listeAgent[$a]['nom_agent']=$row_agent['nom_agent'];
$listeAgent[$a]['prenom_agent']=$row_agent['prenom_agent'];
$row_agent = mysql_fetch_assoc($agent);
}

mysql_select_db($database_aquinet, $aquinet);
$query_donnees = "SELECT num_jour_semaine, num_agent, saisie FROM donnees";
$donnees = mysql_query($query_donnees, $aquinet) or die(mysql_error());
$row_donnees = mysql_fetch_assoc($donnees);
$totalRows_donnees = mysql_num_rows($donnees);
$resultatDonnees=mysql_query($query_donnees);

for($d=0;$d<$totalRows_donnees;$d++)
{
$listeDonnees[$d]['num_saisiedonnees']=$row_donnees['num_saisiedonnees'];
$listeDonnees[$d]['num_jour_semaine']=$row_donnees['num_jour_semaine'];
$listeDonnees[$d]['num_agent']=$row_donnees['num_agent'];
$listeDonnees[$d]['saisie']=$row_donnees['saisie'];
$row_donnees = mysql_fetch_assoc($donnees);
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 26/07/2010 à 18:36
qqs erreurs, ne pas faire plusieurs fois la selection base, plusieurs fois mysql_fetch_assoc sur l m^me query

essayes comme ça:

<?php  
//connexion serveur puis..  
mysql_select_db($database_aquinet, $aquinet); //il suffit de le faire une seule fois  
//init de l'array  
$listeJours=array();  
//JOURS  

$query_jours = "SELECT * FROM jour_semaine";  
$jours = mysql_query($query_jours, $aquinet) or die(mysql_error());  

//boucle while pour lire tous les enre trouvés, qui remplace tous les num_rows etc.. que tu avais mis  
while($row_jours = mysql_fetch_assoc($jours)){  
 //l'index 1 ier niveau sera le num du jour de la semaine  
 $listeJours[$row_jours['num_jour_semaine']]['jour']=$row_jours['jour'];  
 $listeJours[$row_jours['num_jour_semaine']]['semaine']=$row_jours['semaine'];  
}  

//AGENTS  
//correspondance entre num jour semaine et num_agent  
$query_donnees = "SELECT num_jour_semaine, num_agent, saisie FROM donnees";  
$donnees = mysql_query($query_donnees, $aquinet) or die(mysql_error());  

while( = mysql_fetch_assoc($donnees)){  
 $listeJours[$row_donnees['num_jour_semaine']]['num_agent']=$row_donnees['num_agent'];  
 $listeJours[$row_donnees['num_jour_semaine']]['num_agent']['saisie']=$row_donnees['saisie'];  
}  

//on complete l'array avec les détails agent  
foreach($listeJours as $num_jour_semaine=>$s_array){  
 $query_agent = "SELECT num_agent,nom_agent,prenom_agent FROM agent WHERE num_agent='".$s_array['num_agent']."'";   
 $agent = mysql_query($query_agent, $aquinet) or die(mysql_error());  
 $row_agent=mysql_fetch_assoc($agent); //pas de boucle car un seul agent pour ce num_agent  
 $listeJours[$num_jour_semaine][$s_array['num_agent']]['nom_agent']=$row_agent['nom_agent'];  
 $listeJours[$num_jour_semaine][$s_array['num_agent']]['prenom_agent']=$row_agent['prenom_agent'];  
}  

 //TEST  
 //visualisation du contenu de l'array  
 echo '<pre>';  
 print_r($listeJours);  
 echo '</pre>';  





mysql_close();  
?>
0
Merci Signaler Alain_42.

Je vais regarder ca.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 juil. 2010 à 09:14
a la réflexion il y a une autre solution purement sql avec le surnomage des tables et une requette sur les 3 tables a la fois

<?php
mysql_select_db($database_aquinet, $aquinet);
$query="SELECT  d.num_jour_semaine as num_s,d.num_agent as num_a,d.saisie as sa,js.jour as j, js.semaine as sem,a.nom_agent as nom_a,a.prenom_agent as prenom_a FROM donnees d,jour_semaine js,agent a WHERE d.num_jour_semaine=js.num_jour_semaine AND d.num_agent=a.num_agent ORDER BY js";
$result=mysql_query($query) or die ("Pb avec la requette: <br />".$query."<br />".mysql_error());
echo '<table>';
//lignbe des titres
echo '<tr><th>Jour sem</th><th>num agent</th><th>Nom</th><th>Prenom</th><th>Saisie</th></tr>';
//boucle
while($row=mysql_fetch_assoc){
	echo '<tr>';
	echo '<td>'.$row['num_s'].'</td>';
	echo '<td>'.$row['num_a'].'</td>';
	echo '<td>'.$row['nom_a'].'</td>';
	echo '<td>'.$row['prenom_a'].'</td>';
	echo '<td>'.$row['sa'].'</td>';
	echo '</tr>';
}
echo '</table>';
?>
0