Probleme d'affichage de tableau mysql/php
Résolu
desc1988
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
GaNoCla -
GaNoCla -
Bonjour bonjour,
Ceci est mon premier message posté sur ccm.J'espère trouver une réponse à ma question.
Voila mon problème :
J'ai une base de données avec dedans des étudiants identifiés par un numéro un nom et une classe.
Je désirs les faire apparaitre dans des tableaux ayant pour titre leur classe.
J'arrive à faire apparaître les tableaux cependant lorsque 2 étudiants sont dans une même classe, ils n'apparaissent pas dans le même tableau mais dans 2 tableaux différents ayant le même titre.
Pouvez vous m'aidez à pallier à ce problème.
Voici mon code source :
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("absences"); // Sélection de la base
$reponse = mysql_query("SELECT * FROM absences"); // Requête SQL
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
Ceci est mon premier message posté sur ccm.J'espère trouver une réponse à ma question.
Voila mon problème :
J'ai une base de données avec dedans des étudiants identifiés par un numéro un nom et une classe.
Je désirs les faire apparaitre dans des tableaux ayant pour titre leur classe.
J'arrive à faire apparaître les tableaux cependant lorsque 2 étudiants sont dans une même classe, ils n'apparaissent pas dans le même tableau mais dans 2 tableaux différents ayant le même titre.
Pouvez vous m'aidez à pallier à ce problème.
Voici mon code source :
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("absences"); // Sélection de la base
$reponse = mysql_query("SELECT * FROM absences"); // Requête SQL
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
A voir également:
- Probleme d'affichage de tableau mysql/php
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
7 réponses
Rien a dire, mis a part que vous avez oublié un ; après la variable $classeprecedente = 'truc' et que vous avez écris $donnes['classe'] au lieu de $donnees['classe'].
Je vous charrie un peu car je jalouse vaut talent de programmeur.
Je ne sais comment vous remercier pour votre aide.
Merci infiniment sincèrement.
Je suis impressionner par l'efficacité de ce site et par la qualité de ses membres.
Merci encore.
Je vous charrie un peu car je jalouse vaut talent de programmeur.
Je ne sais comment vous remercier pour votre aide.
Merci infiniment sincèrement.
Je suis impressionner par l'efficacité de ce site et par la qualité de ses membres.
Merci encore.
pyschopathe
Messages postés
1974
Date d'inscription
Statut
Membre
Dernière intervention
135
Effectivement c'est le genre d'erreurs que je fais couramment ! Une sorte de marque de fabrique pour faire crier un peu mon compilateur, quoi ^^ ! Je suis ravi d'avoir pu vous aider, bonne continuation dans vos projets et n'hésitez pas à repasser en cas de besoin ou pour aider un autre membre.
Bonsoir
En fait, le code dans la boucle while sera exécuté à chaque itération, il est donc normal qu'il y ait un tableau par étudiant...
Pour remédier à ce problème, il faudrait faire quelque chose du genre ordonner les résultats de la requête par classe, puis faire un test pour le création du tableau : ne le créer que si la classe est différentes de la classe de l'itération précédente, sinon ajouter l'étudiant à la classe courante.
J'espère que ma suggestion est compréhensible et qu'elle répondra à votre problème.
Bonne soirée
En fait, le code dans la boucle while sera exécuté à chaque itération, il est donc normal qu'il y ait un tableau par étudiant...
Pour remédier à ce problème, il faudrait faire quelque chose du genre ordonner les résultats de la requête par classe, puis faire un test pour le création du tableau : ne le créer que si la classe est différentes de la classe de l'itération précédente, sinon ajouter l'étudiant à la classe courante.
J'espère que ma suggestion est compréhensible et qu'elle répondra à votre problème.
Bonne soirée
Merci pour cette réponse si rapide.
Je sais comment ordonner par classe en revanche le test me parait moins réalisable (en gros je ne sais pas comment m'y prendre).
Pouvez vous m'en dire un peu plus sur le code à mettre afin de réaliser le test?
merci d'avance.
Je sais comment ordonner par classe en revanche le test me parait moins réalisable (en gros je ne sais pas comment m'y prendre).
Pouvez vous m'en dire un peu plus sur le code à mettre afin de réaliser le test?
merci d'avance.
Je pensais à une variable temporaire qui mémoriserait la valeur de la classe à l'itération précédente et un test du genre :
Je ne suis pas spécialiste de PHP et encore moins de MySQL mais je pense que vous devriez pouvoir adapter ce code à vos besoins. N'hésiter pas à demander si quelque chose ne vous semble pas clair.
classe_precedente = NULL tant que (...) faire si ( classe = classe_precedente) alors ajouter l'étudiant au tableau sinon créer un nouveau tableau ajouter l'étudiant au tableau finsi classe_precedente <- classe fintantque
Je ne suis pas spécialiste de PHP et encore moins de MySQL mais je pense que vous devriez pouvoir adapter ce code à vos besoins. N'hésiter pas à demander si quelque chose ne vous semble pas clair.
J'essaye quelque chose mais cela ne marche pas. Pouvez vous m'indiquer et corriger mes erreurs si cela n'est pas trop vous demander.
Voila comment je procède mes pleins de trucs cloche:
$donnees = mysql_fetch_array($reponse)
$classeprecedente=NULL
if ($donnees['classe']!=$classeprecedente;$donnees['classe']==$classeprecedente)
{
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
else
{
?>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
?>
Voila comment je procède mes pleins de trucs cloche:
$donnees = mysql_fetch_array($reponse)
$classeprecedente=NULL
if ($donnees['classe']!=$classeprecedente;$donnees['classe']==$classeprecedente)
{
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
else
{
?>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il faudrait virer le "$donnees['classe']==$classeprecedente" du test if et ajouter "$classeprecedente=$donnees['classe']" après le else (à la fin de la boucle while).
Il faudrait aussi vérifier qu'on puisse faire des comparaisons de chaînes de caractère avec l'opérateur ==, je sais qu'on ne peut pas le faire en C, et comme le PHP en est proche, c'est à voir.
Il faudrait aussi vérifier qu'on puisse faire des comparaisons de chaînes de caractère avec l'opérateur ==, je sais qu'on ne peut pas le faire en C, et comme le PHP en est proche, c'est à voir.
J'ai essayé autre chose mais ca ne marche toujours pas.
J'avoue que je galère pas mal.
Encore un petit coup de main ne serait pas de refus.
Voila ce que j'ai tenté de faire:
while ($donnees = mysql_fetch_array($reponse) )
{
$classeprecedente=$donnees['classe'];
if ($classeprecedente==NULL)
{
$classeprecedente=$donnees['classe']
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
else
{
?>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
}
mysql_close(); // Déconnexion de MySQL
?>
Je ne sais pas si j'ai tout bien positionné (apparemment non puisque ça ne marche pas).
J'avoue que je galère pas mal.
Encore un petit coup de main ne serait pas de refus.
Voila ce que j'ai tenté de faire:
while ($donnees = mysql_fetch_array($reponse) )
{
$classeprecedente=$donnees['classe'];
if ($classeprecedente==NULL)
{
$classeprecedente=$donnees['classe']
?>
<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table>
<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
else
{
?>
<tr>
<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td>
</tr>
</table>
</p>
<?php
}
}
mysql_close(); // Déconnexion de MySQL
?>
Je ne sais pas si j'ai tout bien positionné (apparemment non puisque ça ne marche pas).
Bah ouais mais si tu ne fais pas ce que je te dis, on va pas s'en sortir ^^ !
Essaie ça :
Essaie ça :
<?php $classeprecedente = 'truc' while ($donnees = mysql_fetch_array($reponse) ) { if ($donnes['classe'] != $classeprecedente) { ?> <p> <caption>Classe: <?php echo $donnees['classe']; ?></caption> <table> <tr> <th>Numero d'étudiant</th> <th>Nom/Prenom</th> <th>date d'absence</th> <th>Justifié</th> </tr> <tr> <td><?php echo $donnees['numero'] ?></td> <td><?php echo $donnees['np'] ?></td> <td><?php echo $donnees['date'] ?></td> <td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td> </tr> </table> </p> <?php } else { ?> <tr> <td><?php echo $donnees['numero'] ?></td> <td><?php echo $donnees['np'] ?></td> <td><?php echo $donnees['date'] ?></td> <td><?php if ($donnees['justif']==0 ){echo "non";} else{echo "oui";} ?></td> </tr> </table> </p> <?php } $classeprecedente=$donnees['classe']; } mysql_close(); // Déconnexion de MySQL ?>
Bonsoir,
j'ai pas testé mais essayes comme ça:
Changes les noms des champs si besoin la ou il y a $donnees['......']
j'ai pas testé mais essayes comme ça:
Changes les noms des champs si besoin la ou il y a $donnees['......']
<?php mysql_connect("localhost", "root", ""); // Connexion à MySQL mysql_select_db("absences"); // Sélection de la base $reponse = mysql_query("SELECT * FROM absences"); //on va faire un array à 3 dimensions premiere dimension la classe, deuxieme le num de l'eleve, 3 ième l'élève $array_eleves=array(); while ($donnees = mysql_fetch_array($reponse)){ $array_eleves[$donnees['classe']][$donnees['numero']]=$donnees['eleve']; } mysql_close(); //on affiche: echo "<table border=\"1\">"; foreach($array_eleves as $classe=>$value){ echo "<tr><th colspan=\"2\">".$classe."</th></tr>"; foreach($value as $num=>$eleve){ echo "<tr><td>".$num."</td><td>".$eleve."</td></tr>" } } echo "</table>"; ?>
Bonjour,
Depuis quelques temps, si tout va bien pour mes fichiers personnels, Outlook Express, etc., par contre dès que je demande une page Web, mon ordinateur se bloque et dans le message d'erreurs, il est mentionné ce qui suit :
C:\DOCUME~1\VIP\LOCALS~1\Temp\WERee01.dir00\iexplore.exe.mdmp
C:\DOCUME~1\VIP\LOCALS~1\Temp\WERee01.dir00\appcompat.txt
Que puis-je faire pour remédier à cette situation ?
Bien merci à qui pourra m'aider.
J.P.
Depuis quelques temps, si tout va bien pour mes fichiers personnels, Outlook Express, etc., par contre dès que je demande une page Web, mon ordinateur se bloque et dans le message d'erreurs, il est mentionné ce qui suit :
C:\DOCUME~1\VIP\LOCALS~1\Temp\WERee01.dir00\iexplore.exe.mdmp
C:\DOCUME~1\VIP\LOCALS~1\Temp\WERee01.dir00\appcompat.txt
Que puis-je faire pour remédier à cette situation ?
Bien merci à qui pourra m'aider.
J.P.