Bonsoir,

J'ai un formulaire et un formulaire d'upload facultatif que j'affiche avec une boucle en même temps que les données de ma table campings, donc j'ai plusieurs campings et leurs infos avec à chaque fois un lien qui ouvre le formulaire.

Je dois donc relié chaque formulaire à chaque camping, mais je ne sais pas comment faire pour récupérer l'id de la table campings dans mon form puisque je ne sais pas à l'avance lequel est concerné.

Je ne sais plus si je dois faire une jointure et comment, ou si c'est carrément un problème de structure de ma base de données ( départements <== campings <== formulaire <== upload ).

Bref je suis complètement paumée et j'aurai bien besoin d'un coup de pouce :)

J'espère avoir été claire

Merci pour votre aide

11 réponses


Tu as un début de comencement de code a nous montrer ?

Bonjour Clenake,
En général on insert un champ caché qui contient l'ID'

<input type='hidden' name='id' value='1234' >
clenake
Auteur

Bonsoir,

Voilà la page qui récupère les infos des campings et affiche le lien de mon formulaire:

        <div id="campings">
            <?php include("../connect_bdd.php"); 

            $reponse = $bdd->query('SELECT * FROM campings WHERE dep_id = 18');

            while ($donnees = $reponse->fetch())
            {
            ?>
                <section>
                    <article class="gauche">
                        <h3><?php echo htmlspecialchars($donnees['nom']);?></h3>
                        <p><?php echo htmlspecialchars($donnees['genre']);?> </p>
                        <p><?php echo htmlspecialchars($donnees['adresse']);?> </p>
                        <p><?php echo htmlspecialchars($donnees['lieu']);?> </p>
                        <a href="<?php echo htmlspecialchars($donnees['web']);?>" target="_blank"><img src="world.png" alt="Site web" title="Site web du camping"/></a>
                    </article><!--
                 --><article class="droite">
                        <p class="etoile" title="Note Moyenne: 13/20"> ★★★☆☆<span> <?php echo htmlspecialchars($donnees['note']);?>/10</span></p>
                    <p><a class="lien" href="#">LIRE LES AVIS</a>
                        <a class="lien" href="#masque">AJOUTER UN AVIS</a></p>   
                    </article>  
                </section>  
            <?php
            }
            $reponse->closeCursor(); // Termine le traitement de la requête
            ?>
            <?php include("Modale/Modale.php");?>
        </div>

Le bouton Ajouter un avis ouvre mon formulaire sous forme de modale et j'ai ensuite une page traitement qui enregistre les infos du formulaire dans une table modale.

Donc la tu parcours la liste de tes campings. Ensuite tu souhaite ajouter un avis à un camping dans ce cas il faut que tu es une table avis avec en clef étrangère l'id du camping. Sur le lien ajouter un avis tu peux passer dans l'url l'id du camping cela peut être une solution. Dans le lien à la fin du met ?id=<?=$donnees['id'];?>

clenake
Auteur

Ok je vais tester ça et je vous dirai si ça fait ce que je veux :)

Edit : Ca avait l'air simple comme ça, mais soit je le fait mal, soit ça ne fonctionne pas.

Qu'est ce qui ne fonctionne pas ?

clenake
Auteur

J'arrivai pas à récupérer l'id dans l'url. Depuis, j'ai réussi et j'ai bien l'id qui correspond au bon camping qui passe dans l'url mais ma modale ne s'affiche plus !

J'ai essayé le input caché de Huggy, mais avec le masque, je ne sais pas comment récupérer le $donnees['id'] en value.

Tu pourrais appeler directement une fonction javascript qui appelle la modale
et tu passes l'id en dur à la fonction

<a onclic="call_modal(1234)">AJOUTER UN AVIS</a>

en php ça donnerait

<a onclic="call_modal( <?php echo $donnees['id']; ?> )">AJOUTER UN AVIS</a>
clenake
Auteur

Et ce serait quelle genre de fonction ?
Tu saurai ou je pourrai trouver un tuto pour apprendre à faire ça ?
Parce que j'y connais rien en js !

Comment déclenches-tu l'affichage de ta modale ?
qu'utilises-tu bootstrap, jquery-ui ...?

clenake
Auteur

J'utilise rien et ma modale, c'est juste le lien Ajouter un avis qui ouvre le masque.