Tout à fait ; je m'en suis aperçu après avoir écrit ça. D'ailleurs, je l'ai écrit au post #40. Par contre, je ne sais pas où tu en es, ni quels sont les besoins qui restent. Peux-tu faire une mise à jour ?
J'ai une version de ton code avec les modifs que j'y ai apportées (et avec le code de cosmo) et notamment, la connexion à la bdd que je préfère...Le but reste flou.
J'arrive à afficher mes images pour chacun de mes actifs sur les pages ficheBatimentAeroTest.php donc sur ce point c'est bon. Maintenant je m'occupe de faire le fichier actifsaero.php qui devraient afficher mes actifs comme une liste avec la première image.
Pour l'instant j'arrive à afficher mes articles actifs mais si je leurs donnent plusieurs images ils vont s'afficher autant de fois qu'ils ont d'images (une fois avec chaque images) et si j'ai une image qui n'est pas reliés à un actifs elle s'affiche aussi
OK, peux-tu donner ton code pour ficheBatimentAeroTest.php ? Quand tu parles des actifs, ce sont les bâtiments ? Car la table SQL actifaero contient des bâtiments.
Tu emploie ici le terme articles . C'est quoi la différence avec actifs ? Je vais être indispo cette fin de matinée...Pour l'instant j'arrive à afficher mes articles mais si je leurs donnent plusieurs images ils vont s'afficher autant de fois qu'ils ont d'images (une fois avec chaque images) et si j'ai une image qui n'est pas reliés à un actifs elle s'affiche aussi
tiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 <?php $getid = $_GET['id']; var_dump($getid); if(isset($getid) AND !empty($getid)){ echo "Yolo <br>"; $recupActifsAero = $bdd->prepare('SELECT aca.titre, aca.description, GROUP_CONCAT(img.lien) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.idimages = aca.idaero WHERE aca.id = ? GROUP BY aca.id, aca.titre, aca.description'); var_dump($recupActifsAero); $recupActifsAero->execute(array($getid)); echo "Insh"; if($recupActifsAero->rowCount()>0){ $actifsAeroInfos = $recupActifsAero->fetch(); $titre = $actifsAeroInfos['titre']; $description = $actifsAeroInfos['description']; $images = $actifsAeroInfos['lien']; echo "<br>coucou"; }else{ echo "<br>Aucun actifs aéroportuaires trouvé"; } } include('../head.php'); ?> <title>Air - <?= $titre ?></title> </head> <body> <section id="implantationAeroport"> <a id="implantationAeroport"> <?php include("navbarHaute.php"); ?> <?php include("navbar.php"); ?> <container> <div class="actifsAero"> <h2><?= $titre ?? null ?></h2> <p><?= $description ?? null ?></p> <div class="carouselImagesBatimentAero"> <?php foreach(explode(',', $images) as $src): ?> <div class="imagesBatimentAero"><img src="<?= $src ?>"></div> <?php endforeach; ?> </div> <br><br> </div> </container> </a> </section> <?php include("../footer.php"); ?>
En reprenant la requête SQL de Cosmo j'ai réussi à gérer l'affichage de mes différents articles. Problèmes mes images ne s'affichent pas. Je regarde dans l'inspecteur d'élément et je me rends compte que logiquement j'ai mes deux liens d'images qui ses sont inséré dans ma balise <img>. J'aimerais savoir si vous savez comment je pourrais dire de ne mettre que un seul lien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <?php include('../head.php'); ?> <title>Actifs aéroportuaires</title> </head> <body> <section id="implantationAeroport"> <a id="implantationAeroport"> <?php include("navbarHaute.php"); ?> <?php include("navbar.php"); ?> <container> <?php $recupactifsAero = $bdd->query('SELECT aca.id, aca.titre, aca.description, GROUP_CONCAT(img.lien) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.idimages = aca.idaero GROUP BY aca.id, aca.titre, aca.description'); while($actifsAero = $recupactifsAero->fetch()){ ?> <div class="actifsAero"> <h2><?= $actifsAero['titre']; ?></h2> <p><?= $actifsAero['description']; ?></p> <img src="/AirChateaudunv2/espaceAdmin/<?= $actifsAero['lien']; ?>"> <br> <a href="ficheBatimentAeroTest.php?id=<?= $actifsAero['id']; ?>"><button style="background-color:blue; color:white">Accéder au batiment</button></a> <hr> </div> <?php } ?> </container> </a> </section> <?php include("../footer.php"); ?>
Je viens de résoudre mon problème grâce à la requête SQL suivante
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT aca.id, aca.titre, aca.description, GROUP_CONCAT(img.lien LIMIT 1) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.idimages = aca.idaero GROUP BY aca.id, aca.titre, aca.description
Je n'ai pas trouvé de solution mais la requête que tu proposes n'est pas acceptée chez moi...
Je ne sais pas pourquoi cela ne marche pas chez toi, voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?php include('../head.php'); ?> <title>Actifs aéroportuaires</title> </head> <body> <section id="implantationAeroport"> <a id="implantationAeroport"> <?php include("navbarHaute.php"); ?> <?php include("navbar.php"); ?> <container> <?php $recupactifsAero = $bdd->query('SELECT aca.id, aca.titre, aca.description, GROUP_CONCAT(img.lien LIMIT 1) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.idimages = aca.idaero GROUP BY aca.id, aca.titre, aca.description'); while($actifsAero = $recupactifsAero->fetch()){ ?> <div class="actifsAero"> <h2><?= $actifsAero['titre']; ?></h2> <p><?= $actifsAero['description']; ?></p> <?php foreach(explode(',', $actifsAero['lien']) as $src): ?> <img src="<?= $src; ?>"> <?php endforeach; ?> <br> <a href="ficheBatimentAero.php?id=<?= $actifsAero['id']; ?>"><button style="background-color:blue; color:white">Accéder au batiment</button></a> <hr> </div> <?php } ?> </container> </a> </section> <?php include("../footer.php"); ?>
Je crois me souvenir que tu gères ta bdd avec PhpMyAdmin ; moi, j'utilise MysqlWorkbench (8.0) et si j'exécute la requêteça donne
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT aca.titre, aca.description, GROUP_CONCAT(img.lien LIMIT 1) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.idimages = aca.idaero WHERE aca.id = 1 GROUP BY aca.id, aca.titre, aca.descriptionJ'ai mis 1 ligne 8 car il fallait bien mettre une valeur à la place du ?Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1) AS lien FROM actifsaero AS aca LEFT JOIN images AS img ON img.id' at line 4
J'utilise bien PhpMyAdmin. Et la requête me renvoie ce que je lui demande.
Tout dépend de quel problème tu parles mais oui par rapport à l'affichage dans ficheBatiment.php ou ficheBatimentTest.php il y a besoin de l'id pour les afficher séparément. Dans mon code ça passe par l'URL
Tandis que pour les afficher en liste pas besoin de l'id.
En tout cas grâce à vous deux j'ai trouvé des solutions à mes problèmes. et je vous en remercie
Bonjour,
content que ça soit résolu. Même si j'ai essayé d'aider, je pense que la contribution de Cosmo représente entre 95 et 99%...
J'ai essayé de trouver un code qui fonctionnerait aussi chez moi. Ma version PHP est 8.1.4, et toi, louisrimb ?
Peux-tu donner un zip qui contiendrait la version finale du projet ?
Si tu me le donnes, je testerai une version de ficheBatimentAeroTest.php qui contournerait ce problème.
Aussi, peux tu me donner un cas où tu avais précédemment un problème d'affichage de plusieurs images ?
Air.zip
Normalement tout est bon
Pas de problème laurentSc tu m'as quand même bien aidé.
Je n'ai aucune idée de quel version php j'utilises pour être honnête j'ai découvert ce langage l'année dernière.
Plusieurs problèmes, comme par exemple plusieurs images essayaient de s'afficher au même endroit mais mon plus grand problème a été de gérer les id pour les afficher au bon endroit
ficheBatimentAeroTest.php Sur la dernière version c'est juste ficheBatimentAero.php le Test était un moyen de save ma première version
Merci pour ton code.
Quelques remarques :
- <container> sert à rien. Et si tu la remplaçais par <div> ?
- connexion à la bdd. Je t'avais indiqué une amélioration post #39. Je te conseille de la suivre.
- tu as plusieurs classes et identifiants CSS mais aucun fichier CSS. Et si tu déclarais un fichier CSS externe dans index.php ? <link href="style.css" type="text/css" rel="stylesheet" /> et dans style.css tu mets les déclarations requises.
Peux tu STP me donner quelques exemples d'appel avec notamment un cas qui initialement posait problème (plusieurs images affichées) ?
Facile pour le savoir :
tu crées un fichier phpinfo.php :tu le places à la racine de ton projet puis tu saisis dans ton navigateur url_racine\phpinfo.php. Y aura plein d'infos et en première ligne la version.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php phpinfo( ); ?>
J'avais mal regardé : head.php
Par contre, y a un fichier trouvé nulle part : logoSite.png
Et j'ai du modifier certaines adresses : souvent <img src="images/xxx"> à la place de <img src="assets/images/xxx">.
Et pourrais-tu me donner un essai qui justifie de mettre dans la requête GROUP_CONCAT(img.lien LIMIT 1) AS lien car si je remplace cela par GROUP_CONCAT(img.lien) AS lien, je ne vois pas de problème...
J'ai d'abord supposé que la différence de comportement venait de la différence de version, mais il semblerait que non : https://www.developpez.net/forums/d2.../#post11842443. Donc, la suite sera quand on m'aura répondu ici : https://www.developpez.net/forums/d2.../#post11842440
J'avais compris. Je croyais avoir trouvé un moyen de faire autrement, mais y a encore toutes les images
Es-tu bien en MySQL 8.0 ?
Bonjour,
je cherche encore une explication pour la différence (ce qui marche chez toi et pas chez moi) et je m'aperçois que je n'ai toujours pas tout compris dans l'objectif de ton application !
Quand tu dis lister les actifs sans afficher toutes les images, est-ce bien que tu veux lister tous les bâtiments (les actifs) sans afficher aussi les images d'avion (donc n'afficher que les images de bâtiment) ? (en fait, mon intention était de poser une question sur https://www.developpez.net/forums/f2...-base-donnees/ et c'est là que je me suis aperçu que le besoin n'était toujours pas clair pour moi et je ne pourrai poser ma question que quand j'aurai ta réponse...)
Partager