Afficher des enregistrements d'un $id sous forme de ligne
Fermédilaam Messages postés 19 Date d'inscription mercredi 4 novembre 2009 Statut Membre Dernière intervention 15 avril 2023 - 15 avril 2023 à 19:45
- Afficher des enregistrements d'un $id sous forme de ligne
- Mise en forme conditionnelle excel - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Aller à la ligne excel - Guide
4 réponses
9 avril 2023 à 12:38
bonjour,
je crois que le plus simple, c'est, en PHP, de parcourir le résultat que tu obtiens, et d'enregistrer les données dans un tableau à deux dimensions.
<?php $x=array(); $x['a']['b']=123; $x['a']['z']=123;
Quand ta table est remplie, tu pourras ensuite la parcourir avec deux boucles, et générer le tableau HTML.
9 avril 2023 à 14:50
Bonjour,
Le souci est avant tout la récupération des données....
Il faut que tu te penches sur les jointures (requête sql) afin de ne pas avoir à faire des boucles dans des boucles...
9 avril 2023 à 15:40
Merci pour ra réponse ☺️. Mais j'ai essayé avec la jointure avec les trois tables eleves, matieres et evaluations. Mais je n'arrive pas a afficher les données comme j'ai demandé en haut.
Pouvez vous me donner un petit exemple.
Merci
9 avril 2023 à 20:33
Djéà, Commence par faire la requête avec les jointures. ( le premier champ à mettre dans ta requête SELECT étant l'étudiant )
Une fois que tu as réalisé ceci.... fais un FETCH_ALL après l'éxécution de ta requête afin de stocker le résultat dans un array.
Dans l'idéal, si tu es en bien en PDO, tu peux ajouter un mode de "fetch" ( le FETCH_GROUP )
https://phpdelusions.net/pdo/fetch_modes#FETCH_GROUP
qui permettra de structurer ton tableau par "étudiant".
Il te suffira ensuite de deux foreach imbriqués pour réaliser ton tableau.
Si tu ne vois pas comment le faire, fais nous un var_dump de l'array contenant le résultat de ta requête et on verra comment t'aider.
11 avril 2023 à 19:47
salut tous le monde.
j'ai fait ce que vous m'avez demandé
configuration
<?php $bd = new PDO('mysql:dbname=ecole;host=127.0.0.1', 'root', ''); $bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $bd->exec("SET CHARACTER SET utf8"); <!---affichage des evalautaions---> <?php $cl = $_GET['id_c']; $sql = $bd->query("SELECT eleves.eleve, matieres.mat, evaluations.aquis FROM evaluations inner join eleves on evaluations.id_e = eleves.id_e inner join matieres on evaluations.id_m = matieres.id_m where evaluations.id_c = '".$cl."' "); while($data = $sql->fetch()){ var_dump($data); }?> <!---les resultats de (var_dump) pour cette classe sont les suivants:---> object(stdClass)#12 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(12) "Calcul" ["aquis"]=> int(1) } object(stdClass)#13 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(26) "Obj_sciences" ["aquis"]=> int(0) } object(stdClass)#12 (3) { ["eleve"]=> string(23) "Robert" ["mat"]=> string(26) "Obj_sciences" ["aquis"]=> int(0) } object(stdClass)#13 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(12) "Mesure" ["aquis"]=> int(0) } object(stdClass)#12 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(7) "Lecture" ["aquis"]=> int(1) } object(stdClass)#13 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(27) "Informatique" ["aquis"]=> int(1) } object(stdClass)#12 (3) { ["eleve"]=> string(25) "Sara" ["mat"]=> string(14) "Géométrie" ["aquis"]=> int(0) } object(stdClass)#13 (3) { ["eleve"]=> string(25) "Alain" ["mat"]=> string(14) "Géométrie" ["aquis"]=> int(1) }
------------------
Mais, si je met fetch_ALL, je n'oubtiens aucune donnée et si je change fetch_obj par fetch_assoc, je n'oubtiens aucune donnée aussi.
vraiment, vraiment, je suis figé dans ma place, je ne sais plus quoi faire.
11 avril 2023 à 22:36
peux-tu montrer le code avec fetchall?
14 avril 2023 à 20:08
fatchall ça marche. c'était une erreur de ma part; je n'ai actualisé la page
11 avril 2023 à 23:00
Commence par appliquer ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
11 avril 2023 à 23:13
A noter que ton code devrait ressembler à ceci (au niveau de la requête )
<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd try{ $bdd =new PDO('mysql:host=localhost; dbname=ecole; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //récupération PROPRE des variables AVANT de les utiliser $cl = !empty($_GET['id_c']) ? $_GET['id_c']: NULL; //préparation de la requête $sql = "SELECT E.eleve, M.mat, EV.aquis FROM evaluations EV inner join eleves E on EV.id_e = E.id_e inner join matieres M on EV.id_m = M.id_m where EV.id_c = :cl ORDER BY E.eleve ASC, M.mat asc "; $datas = array(':cl'=>$cl); // variables utilisées dans la requête //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //On stocke le résultat de la requête dans un array et avec un fetch_group $result = $requete->fetchAll(PDO::FETCH_GROUP); echo "<pre>": var_dump($result): echo "</pre>";
12 avril 2023 à 09:52
Salut tous le monde.
cher jordane45
voilà ler résultat de ta requete pour une autre classe cl = 14
array(3) { ["Sami"]=> array(4) { [0]=> array(2) { ["mat"]=> string(7) "Dictée" ["aquis"]=> int(1) } [1]=> array(2) { ["mat"]=> string(15) "Ecriture/Copier" ["aquis"]=> int(1) } [2]=> array(2) { ["mat"]=> string(4) "Oral" ["aquis"]=> int(2) } [3]=> array(2) { ["mat"]=> string(14) "Géométrie" ["aquis"]=> int(0) } } ["Nada"]=> array(1) { [0]=> array(2) { ["mat"]=> string(4) "Oral" ["aquis"]=> int(1) } } ["Carlo"]=> array(1) { [0]=> array(2) { ["mat"]=> string(4) "Oral" ["aquis"]=> int(1) } } }
12 avril 2023 à 10:08
Est ce que la connexion à ma base de cette façon est faux???
config_bd.php
<?php $bd = new PDO('mysql:dbname=ecole;host=127.0.0.1', 'root', ''); $bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $bd->exec("SET CHARACTER SET utf8");
config_Ec.php
<?php try { $bd = new PDO('mysql:host=127.0.0.1;dbname=ecole', 'root','',array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); } catch(PDOException $e) { die('erreur:'.$e->getMessage()); } ?>
requete..
<?php $cl = $_GET['id_c']; $sql = $bd->query('SELECT eleves.eleve, matieres.mat, evaluations.aquis FROM evaluations inner join eleves on evaluations.id_e = eleves.id_e inner join matieres on evaluations.id_m = matieres.id_m where evaluations.id_c = '.$cl.' '); while($data = $sql->fetchall()){ echo "<pre>"; var_dump($data); echo "</pre>"; }?>
j'ai fait fatchall, et il a marché. je crois que hier je na'i pas actualisé la page !!!
12 avril 2023 à 10:09
Merci mille fois pour votre aide jordane45 et les autres,
est ce que je suis proche de realiser le tableau???
12 avril 2023 à 11:03
Oublie ton code et reste sur le mien.....
A partir de là, grâce au var_dump tu peux voir que tu as un array structuré par : ELEVE et pour chaque ELEVE les matières pour lesquelles il a été évalué.
A toi de boucler sur cet array pour construire le tableau que tu veux....
NB: Tu dois boucler via un foreach directement sur la variable $result ... (et surtout pas un while($data = $sql->fetchall()){ ) !!
13 avril 2023 à 11:55
Bonjour, je suis vraiment désolé, mais je crois que je suis null!!!
//On stocke le résultat de la requête dans un array et avec un fetch_group $result = $requete->fetchAll(PDO::FETCH_GROUP); echo"<pre>"; var_dump($result);//je la laisse pour voir la structure echo"<pre>"; ?> <table border="1"> <tr> <th>Elève</th> <?php foreach ($result as $mat): ?> <th><?php echo" $mat "; ?></th><!--Warning: Array to string conversion in /opt/lampp/htdocs/ecole/Fr/test7.php on line 55 Array --> <?php endforeach ?> </tr> <?php foreach ($result as $eleve => $aquis): ?> <tr> <td><?php echo $eleve; ?></td><!---les noms affichés---> <?php foreach ($result as $mat => $aquis): ?> <td><?php echo $aquis; ?></td><!---Warning: Array to string conversion in /opt/lampp/htdocs/ecole/Fr/test7.php on line 62 Array--> <?php endforeach ?> </tr> <?php endforeach ?> </table>
c'est la premiere fois que j'utilise la fonction foreach, ja'i regardé des videos et je crois que j'ai fais une erreur pour $mat et $aquis.
pourriez vous me diriger? je m'excuse une autre fois.
Merci passer une bonne journée
13 avril 2023 à 12:09
14 avril 2023 à 20:13
Salut,
je viens vers toi apres plusieurs tentatives,
j'ai suivi le lien que tu m'as donné, j'ai fais un peu de progrès, mais je demande vraiment ton aide pour terminer se travail.
voilà mon foreach
<?php $result = $requete->fetchAll(PDO::FETCH_GROUP); echo"<pre>"; var_dump($result);//je la laisse pour voir la structure echo"<pre>"; foreach($result as $eleve => $nom ){ echo'L\'élève : '.$eleve. '<br>'; //nom des eleves foreach($nom as $nbeva => $tabmat){ echo 'l\'évaluation numéro : '.$nbeva.' <br> '; // nombre des évaluations faites par eleve' foreach($tabmat as $element =>$valeur){ echo' Nom de l\'élèment :' .$element.' sa valeur est :'.$valeur.' <br>'; //noms des elements mat et aquis avec leurs valeurs //**je ne sais pas comment faire pour les séparer** } } } ?>
j'ai du mal à réaliser le tableau
le résultat de foreach est le suivant:
L'élève : Alain
l'évaluation numéro : 0
Nom de l'élèment :mat sa valeur est :Dictée
Nom de l'élèment :aquis sa valeur est :1
l'évaluation numéro : 1
Nom de l'élèment :mat sa valeur est :Ecriture/Copier
Nom de l'élèment :aquis sa valeur est :1
l'évaluation numéro : 2
Nom de l'élèment :mat sa valeur est :Oral
Nom de l'élèment :aquis sa valeur est :2
l'évaluation numéro : 3
Nom de l'élèment :mat sa valeur est :Géométrie
Nom de l'élèment :aquis sa valeur est :0
L'élève : Robert
l'évaluation numéro : 0
Nom de l'élèment :mat sa valeur est :Oral
Nom de l'élèment :aquis sa valeur est :1
L'élève : Sara
l'évaluation numéro : 0
Nom de l'élèment :mat sa valeur est :Oral
Nom de l'élèment :aquis sa valeur est :1
svp. ton aide (:-
14 avril 2023 à 20:56
Je pense que tu devrais commencer par des exercices pus simples, afin de comprendre ce que tu fais.
15 avril 2023 à 19:45
J'ai suivi plusieurs videos et lu des pdfs concerants foreach.
dans mon cas, je crois que j'ai 3 tableaux array.
j'affiche le nom de l'élève du tableau 1 {contient les deux autres tableaux, }
le nombre des évaluations faites du tableau 2.{que je cache}
pour le tableau 3 qui contient matière (mat) et acquisition (aquis):{ mat , aquis se sont les elements}
ils sont relies entre eux !!!
foreach($result as $nom =>$eleve ){ echo"$nom =><br>"; foreach($eleve as $nbeva => $tabmat){ //echo 'l\'évaluation numéro : '.$nbeva.' <br> '; // nombre d'évaluation faite foreach($tabmat as $element => $valeur){ //echo' '.$element.''; echo"$element=>$valeur <br>"; } } }
affichage du .. var_dump($result)
array(1) { ["Sara"]=> array(1) { [0]=> array(2) { ["mat"]=> string(11) "Orthographe" ["aquis"]=> int(1) } } }
affichage du foreach ..
Sara=>
mat=>Orthographe
aquis=>1
si vous avez des idées je suis à votre écoute. merci d'avance
9 avril 2023 à 15:42
Merci. Svp. Un petit exemple que vous avez déjà sous la main ✋.
Merci
9 avril 2023 à 18:31
Montre ton code adapté, avec les jointures. Cela nous permettra de montrer un début d'exemple proche de ta situation.