Récupérer des données en BDD à l'ouverture d'un modal

Résolu
MrAkiroKun Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, chers ami(e)s développeurs,

Je bute sur un problème, j'ai une fonction, qui affiche sur une page toutes les annonces se trouvant dans la BDD, et j'ai un bouton pour ouvrir un modal, je voudrais donc, qu'en ouvrant ce modal, on récupère l'id du membre qui a posté l'annonce (qui est dans la bdd aussi), je vais mettre les scripts qui pourrais vous interresser:

ma fonction pour afficher les annonces:
function showPosts(){
    include('bddConnect.php');
    $reponse = $PDO->prepare('SELECT * FROM posts ORDER BY date DESC');
    $reponse->execute();
    $donnees = $reponse->fetchAll();
    
 //On affiche les lignes du tableau une à une à l'aide d'une boucle
             foreach($donnees as $R){
             $id_member = $R['id_member'];
             $date_non_traitee = explode("-",$R['date']);
             $date_traitee = $date_non_traitee['2']."/".$date_non_traitee['1']."/".$date_non_traitee['0'];
                        echo  "<div class='panel panel-primary'>
                                <div class='panel-heading'>
                                    <h3 class='panel-title' style='color: white;'>".$R['name_author']." ".$date_traitee."</h3>
                                </div>
                            <div class='panel-body'>
                            <p style='color: black;'>".htmlspecialchars_decode($R['content'])."</p>
                            <a href='#myModal' data-target='#myModal' data-toggle='modal' style='float: right;' class='btn btn-info'>CONTACTER</a><br />
  </div>
</div>";
             }
}


Merci à ceux qui prendrons la peine d'éclairer mon chemin ;)
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Tu ne le précise pas mais il semble que tu utilises Bootstrap pour réaliser ta fenêtre modale.

Si c'est le cas, tu as dans la doc un exemple correspondant à ce que tu souhaites : https://getbootstrap.com/javascript/#modals-related-target

Le principe est d'ajouter un attribut data-cequetuveux avec une valeur unique (ici l'id du membre) pour chaque lien permettant d'ouvrir la modale, puis de détecter l'ouverture de la modale en javascript via l'événement show.bs.modal pour modifier le contenu de la modale en fonction de la valeur de l'attribut du lien cliqué.

Pour modifier le contenu en fonction de l'attribut, au moins deux solutions.
Solution 1 : afficher tous les contenus possibles dans des div cachés dès le chargement de la page et afficher le contenu correspondant au lien cliqué lors de l'ouverture de la modale.
Cette solution est facile à mettre en place mais alourdir rapidement le chargement de ta page si il y a beaucoup de contenu à charger.
Solution 2 : utiliser une requête ajax pour récupérer et afficher les infos correspondant au lien cliqué.

Bonne journée
0
Charlie_87 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Pitet,
J'ai le même problème que MrAkiroKun, je souhaite integrer un contenu d'une bdd dans un modal. Je ne suis pas encore experte avec AJAX et j'aimerais savoir quel serait la methode à mettre en place avec AJAX.

j'ai appris la methode MVC (modele, Vues et controleur). Pour utiliser du AJAX, j'utilise un controleur fonctions.js où est écrit la methode getXmlBase qui a pour parametre le xml, nomtable, nomcolonne, valeurcolonne et colonne recherché.

Mais comment bootstrap lors du chargement du modal, il récupére la valeur de l'objet.
Merci d'avance
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,
Il serait mieux que tu crées ton propre sujet sur le forum, ton message aura ainsi une meilleure visibilité et nous pourrons plus facilement te proposer de l'aide.

Si tu peux également mettre ton code et/ou exemple afin de mieux comprendre où est ton blocage ?

Bonne journée,
0