IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Affichage image depuis BDD


Sujet :

Langage PHP

  1. #21
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    il ne faut pas mettre de quotes autour d'un placeholder.
    Merci ; bien vu.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #22
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    Qu'est ce que je peux mettre à la place alors ? Lorsque je mets un ? pour récupérer mon id cela me retourne que ma syntaxe SQL n'est pas bonne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT actifsaero.id, actifsaero.titre, actifsaero.description, images.lien FROM actifsaero RIGHT JOIN images  images.idimages = actifsaero.idaero AND actifsaero.id = ?'
    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.idimages = actifsaero.idaero AND actifsaero.id = '4'' at line 1 in C:\xampp\monsite\ficheBatimentAeroTest.php:11 Stack trace: #0 C:\xampp\monsite\ficheBatimentAeroTest.php(11): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\monsite\ficheBatimentAeroTest.php on line 11

  3. #23
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Louisrimb,

    pourrais-tu mettre dans un fichier zip ton projet complet afin que je puisse l'exécuter en local, STP ? J'ai déjà ta bdd ; si je peux exécuter ton projet, je serai bien plus efficace...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #24
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par louisrimb Voir le message
    Qu'est ce que je peux mettre à la place alors ? sans ces quotes. Cela me retourne que ma syntaxe SQL n'est pas bonnes.
    Voici un exemple de l'utilité que tu m'envoies ce zip : quand, je l'aurai, je pense que je pourrai trouver la réponse. Comme la requête s'exécute bien (avec le SGBD), ça vient d'ailleurs...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #25
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    monsite.zip
    Maintenant c'est bon désolé

  6. #26
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai bien récupéré ton appli et elle s'exécute chez moi. J'ai vu que le code du post #12 correspond au fichier ficheBatimentAeroTest.php. Je vais investiguer mais ça risque de prendre quelques heures...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #27
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    C'est bien ça, merci pour ton temps, de mon coté je vais continuer de chercher

  8. #28
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai déjà corrigé la requête SQL de ficheBatimentAeroTest.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $recupActifsAero = $bdd->prepare('SELECT AC.id, AC.titre, AC.`description`, IM.lien FROM actifsaero as AC 
    RIGHT JOIN images as IM ON IM.idimages = AC.idaero AND AC.id = ?');
    mais y a plein d'autres erreurs. Déjà, m'avoir donné le .zip me rend comme prévu plus efficace . Je continue...

    En corrigeant la requête, tu avais viré le ON de la jointure et l'une des colonnes (description) a le nom d'un mot-clé SQL, donc il faut l'entourer de quotes inversées (ALT+7+ENTER)(truc purement MySQL) dans la requête...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #29
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai fait une autre correction dans ficheBatimentAeroTest.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h2><?= $titre ?? null ?></h2>
    <p><?= $description ?? null ?></p>
    C'est du PHP 7 ; les ?? font que si la variable n'existe pas, on la remplace par null.
    Avant, on aurait écrit :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h2><?= (isset($titre)) ? $titre : null ?></h2>
    <p><?= (isset($description)) ? $description : null ?></p>

    Avec cette correction, il n'y a plus d'erreur (à part plein de not found, vu qu'il y a plein de liens qui pointent vers des fichiers inexistants). Notamment, ma correction de la requête SQL du post #28 fait que les images sont affichées.

    Cela dit, j'ignore le but de l'application, mais le comportement me paraît anormal ; quelque soit le lien sélectionné, on va sur la même page (la page qui affiche avion1.jpg)(c'est le même avion qui est affiché quelque soit la valeur de id). Pour que je puisse aller plus loin, il faudra me préciser le but de ton application...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #30
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    Je ne comprends pas d'où viens la redirection vers avion 1. Mais l'objectif de l'appli est de pointer vers les différents actifs comme un site d'agence immobilière en gros

  11. #31
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par louisrimb Voir le message
    Qu'est ce que je peux mettre à la place alors ? Lorsque je mets un ? pour récupérer mon id cela me retourne que ma syntaxe SQL n'est pas bonne.
    Ça ne veut pas dire que le placeholder en est la cause!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT actifsaero.id, actifsaero.titre, actifsaero.description, images.lien FROM actifsaero RIGHT JOIN images  images.idimages = actifsaero.idaero AND actifsaero.id = ?'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.idimages = actifsaero.idaero AND actifsaero.id = '4'' at line 1 in C:\xampp\monsite\ficheBatimentAeroTest.php:11 Stack trace: #0 C:\xampp\monsite\ficheBatimentAeroTest.php(11): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\monsite\ficheBatimentAeroTest.php on line 11
    Lorsque tu as une erreur de syntaxe, MySQL/MariaDB renvoie la partie de la requête à partir de laquelle la syntaxe a été violée, autrement dit, tout ce qui est avant est syntactiquement correcte, ou encore qu'à partir de ce point l'interpréteur ne comprend pas ce que tu as écris, ni plus, ni moins.
    Ça ne veut donc pas dire que l'ânerie que tu as commise se trouve forcément à ce point précis, elle peut aussi être en amont.

    Ici par exemple, tu as oublié le mot-clef ON qui définie les colonnes utilisées pour la jointure. D'ailleurs à ce propos, je ne suis pas persuadé que actifsaero.id = ? doit y figurer, sa place est plutôt dans une clause WHERE.

    Mon petit doigt me dit que ce que tu cherches à obtenir c'est plutôt ça:
    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) AS liens
    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;

    La colonne liens ainsi obtenue contiendra les liens vers les éventuelles images, séparés par des virgules.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  12. #32
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    une fois de plus, cosmo, tu dépasses de loin mes connaissances. Ici, par exemple, je connaissais pas GROUP_CONCAT. Cela dit, ton petit doigt n'évite pas une erreur...

    Avec ton petit doigt, le code de louisrimb devient :
    Code php : 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
      $recupActifsAero = $bdd->prepare(' SELECT
        aca.titre,
        aca.description,
        GROUP_CONCAT(img.lien) AS liens
    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; ');
     
     
      $recupActifsAero->execute(array($getid));
     
        if($recupActifsAero->rowCount()>0){
            $actifsAeroInfos = $recupActifsAero->fetch();
            $titre = $actifsAeroInfos['titre'];
            $description = $actifsAeroInfos['description'];
            $images = $actifsAeroInfos['lien'];
     
        }

    Cela dit, ton petit doigt ne suffit pas à éviter une erreur car la variable $recupActifsAero après le fetch ligne 16 est un tableau avec un seul élément :
    queryString=
    "SELECT
    aca.titre,
    aca.description,
    GROUP_CONCAT(img.lien) AS liens
    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; "
    Ca a l'air de nécessiter plutôt de trouver la bonne requête SQL plutôt que de revoir la structure de la table, donc on va shunter cette étape mais personnellement, j'y verrais plus clair si j'avais sous les yeux le MCD de la bdd...https://www.developpez.net/forums/d2...r-ddl-looping/
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #33
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Ici, par exemple, je connaissais pas GROUP_CONCAT.
    Ça fait partie du lot des fonctions d'aggrégations, comme SUM ou COUNT, rien de sorcier si ce n'est qu'il faut adjoindre la clause GROUP BY qui va avec.

    Cela dit, ton petit doigt n'évite pas une erreur ... car la variable $recupActifsAero après le fetch ligne 16 est un tableau avec un seul élément
    C'est normal et c'est ce qui est attendu. La requête contient une clause WHERE pour obtenir une seule ligne de la table actifsaero, mais cette ligne est ici agrémentée d'une colonne avec tous ses liens vers les images.
    Pour obtenir tous les articles et boucler dessus avec un while comme dans le code original, il suffit d'enlever la clause WHERE et c'est tout.

    (J'ai retiré la colonne id du SELECT; il suffit de la remettre puisque le code PHP l'utilise).

    La seule modification à faire au niveau PHP; c'est un explode et un foreach pour afficher les images:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php while($actifsAero = $recupactifsAero->fetch()): ?>
              <div class="actifsAero">
                <h2><?= $actifsAero['titre'] ?></h2>
                <p><?= $actifsAero['description'] ?></p>
        <?php foreach(explode(',', $actifsAero['liens']) as $src): ?>    
                <img src="<?= $src ?>">
                <br>
        <?php endforeach; ?>
                <a href="ficheBatimentAeroTest.php?id=<?= $actifsAero['id'] ?>"><button style="background-color:blue; color:white">Accéder au batiment</button></a>
                <hr>
              </div>
    <?php endwhile; ?>

    Ca a l'air de nécessiter plutôt de trouver la bonne requête SQL plutôt que de revoir la structure de la table, donc on va shunter cette étape mais personnellement, j'y verrais plus clair si j'avais sous les yeux le MCD de la bdd...https://www.developpez.net/forums/d2...r-ddl-looping/
    Il y a surement des choses à faire de ce coté là, mais ce n'est pas tout, avant de foncer sur looping, il faut déjà être familier des jointures, des clefs étrangères, des formes normales, donc la case tutoriel me semble plus pertinente pour le moment.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  14. #34
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    même si je n'ai rien dit depuis un moment, j'ai pas lâché l'affaire !

    J'ai essayé d'insérer le code de Cosmo dans le code de louisrimb. C'est pas au point, mais comme le soir, je suis nettement moins bon que le matin, pas la peine de vous parler de mes problèmes ; au mieux, je les résoudrai demain matin (avant 9h45 car je m'en vais à cette heure-là) et au pire, je reviens vers vous dans l'après-midi...

    Citation Envoyé par CosmoKnacki Voir le message
    Il y a surement des choses à faire de ce coté là, mais ce n'est pas tout, avant de foncer sur looping, il faut déjà être familier des jointures, des clefs étrangères, des formes normales, donc la case tutoriel me semble plus pertinente pour le moment.
    Je voulais juste dire que si pour moi, l'expérience en modélisation a à peu près un an, celle du SQL a 10 ou 15 ans, donc les notions dont tu parles, Cosmo, je les connais. Par contre, c'est vrai que je suis pas très à l'aise avec certaines clauses : GROUP_CONCAT, GROUP BY...


    A demain
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  15. #35
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    Du coup merci beaucoup,
    J'arrive maintenant à afficher mes différentes images en fonction de leurs id dans mes pages fiche bâtiment.
    Je vais maintenant essayé d'améliorer mon code et surtout de revoir l'affichage de ces dernières dans ma page actifsaero

  16. #36
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    les notions dont tu parles, Cosmo, je les connais
    Toi oui, mais pas notre ami louisrimb.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  17. #37
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 29
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Toi oui, mais pas notre ami louisrimb.
    Eh tu as entièrement raison je suis encore entrain d'apprendre et même juste de découvrir ce monde fabuleux qui va me faire perdre mes cheveux.

  18. #38
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    tous comptes faits, ce matin, j'ai rien eu le temps de faire. Cela dit, louisrimb, je lis que tu as avancé. As-tu encore besoin d'aide ? Si oui, merci de donner ton code actuel de ficheBatimentAeroTest.php.
    Bon week-end
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  19. #39
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Au fait, pour mieux gérer la connexion à la bdd, on peut remplacer (en s'inspirant de https://www.developpez.net/forums/bl...pdo-soupe-lit/) la ligne $bdd = new PDO('mysql:host=localhost;dbname=air', 'root', ''); par la ligne $bdd = include 'db_mysql.php'; et en créant le fichier db_mysql.php :
    Code php : 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
    <?php
    // @author : rawsrc - 2018 - Pour DVP
    // on vérifie si la fonction de connexion a déjà été définie afin d'éviter de la redéfinir
    if (!function_exists('db_connexion')) {
        function db_connexion()
        {
            // une fois ouverte, on renvoie toujours la même connexion
            static $pdo;
            // on vérifie si la connexion n'a pas déjà été initialisée
            if (!($pdo instanceof PDO)) {
                // tentative d'ouverture de la connexion MySQL
                try {
                    $pdo = new PDO('mysql:host=localhost;port=3306;dbname=air;charset=utf8', 'root', '', [
                        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                        PDO::ATTR_EMULATE_PREPARES => false
                    ]);
                } catch (PDOException $e) {
                    throw new InvalidArgumentException('Erreur connexion à la base de données : ' . $e->getMessage());
                    exit;
                }
            }
            // renvoi de la ressource : connexion à la base de données
            return $pdo;
        }
    }
    return db_connexion();
    un des avantages est que si la bdd change, y a un seul fichier à modifier, ce qui minimise le risque d'erreur (alors que là, on retrouve ta ligne 3 ou 4 fois)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  20. #40
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    j'ai essayé d'intégrer le code de Cosmo ce qui donne ça :
    Code php : 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
    54
    55
    56
    57
    58
    59
    <?php
    $db = include 'db_mysql.php';
    $getid = $_GET['id'] ?? 1;//une valeur de id qui existe pour passer ds le if ci-dessous
     
    if(isset($getid) AND !empty($getid)){
     
        $recupActifsAero = $db->prepare('SELECT
           aca.id,
        aca.titre,
        aca.description,
        GROUP_CONCAT(img.lien) AS liens
    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`;');
        $recupActifsAero->execute(array($getid));
        while($actifsAero = $recupActifsAero->fetch()):
            $titre = $actifsAero['titre'];
            $description = $actifsAero['description'];
            $images = $actifsAero['liens']; ?>
              <div class="actifsAero">
                <h2><?= $actifsAero['titre'] ?></h2>
                <p><?= $actifsAero['description'] ?></p>
        <?php foreach(explode(',', $actifsAero['liens']) as $src): ?>
                <img src="<?= $src ?>">
                <br>
        <?php endforeach; ?>
                <a href="ficheBatimentAeroTest.php?id=<?= $actifsAero['id'] ?>"><button style="background-color:blue; color:white">Accéder au batiment</button></a>
                <hr>
              </div>
    <?php endwhile;
    }
      include('head.php');
    ?>
      <title><?= $actifsAero['titre']; ?></title>
    </head>
    <body>
      <section id="implantationAeroport">
          <a id="implantationAeroport">
            <?php include("navbarHaute.php"); ?>
            <?php include("navbar.php"); ?>
            <container>
              <div class="actifsAero">
                <h2><?= $titre ?></h2>
                <p><?= $description ?></p>
                <img src='<?= $images ?>'>
                <br>
                <a href="ficheBatimentAeroTest.php?id<?= $actifsAero['id']; ?>"><button style="background-color:blue; color:white">Accéder au batiment</button></a>
                <hr>
              </div>
            </container>
          </a>
        </section>
        <?php include("footer.php"); ?>
    </body>
    </body>
    <script src="assets/js/nav.js"></script>
    </html>
    Mais ça n'affiche que les images avion1.jpg et de l'une des 2 bases, à cause de ma ligne 3. A la première exécution, il faudrait, je pense, donner le choix entre les différents avions. On est d'accord ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [MySQL] ré-affichage checkboxs depuis bdd pour update
    Par Evelyne31 dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 22/03/2019, 19h06
  2. Affichage Image depuis BD Access
    Par AbouZaid dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 07/10/2013, 17h30
  3. ré-affichage checkbox depuis bdd
    Par nicomax34 dans le forum Langage
    Réponses: 6
    Dernier message: 12/07/2011, 17h47
  4. Réponses: 3
    Dernier message: 03/01/2008, 17h24
  5. Problème d'affichage d'image depuis une pseudo-frames
    Par kriss_87 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2006, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo