Tableau dynamique en php
lettywan
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Tableau dynamique en php
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Tableau ascii - Guide
- Trier un tableau excel - Guide
7 réponses
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
j'ai pas précisé mais le for parcours le tableau contenant le résultat
Bonjour DasSium95 .
Merci pour ta réponse rapide.
Faut il que je fasse 3 boucles For ? (une par requete ?).
Merci pour ta réponse rapide.
Faut il que je fasse 3 boucles For ? (une par requete ?).
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)
à 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)
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
Merci pour ta réponse.
Voila ce que j'ai commencé à faire.
Est ce que je suis sur la bonne piste ?
Merci
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);
}
?>
<?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);
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
qqs erreurs, ne pas faire plusieurs fois la selection base, plusieurs fois mysql_fetch_assoc sur l m^me query
essayes comme ça:
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(); ?>
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>'; ?>