Résolu J'ai un problème avec le modal sur mon site

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
Bonsoir,
J'ai mis un bouton signal sur mon site celui si est charge d'ouvrir un modal pour afficher un formulaire le problème étant qui m'affiche l'id d'un seul annonce alors que chaque annonce est distincte l'une de l'autre comme si il prenais qu'un seul id...

HTML:
<font size="3"><small class="text-muted"><a data-toggle="modal" data-target="#exampleModal">⚠️  Signaler un abus </a></small></font>
                                                
                                                
                                                <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                                                  <div class="modal-dialog" role="document">
                                                    <div class="modal-content">
                                                      <div class="modal-header">
                                                        <h5 class="modal-title" id="exampleModalLabel">⚠️  Signaler un abus</h5>
                                                        
                                                      </div>
                                                      <div class="modal-body">
                                                      <form method="post">
                                                      
                                                        <select name="raison" class="form-control">
                                                          <option>Motif</option>
                                                          <option>Fraude</option>
                                                          <option>Doublon</option>
                                                          <option>Discrimination </option>
                                                          <option>Animaux</option>
                                                          <option>Contrefaçon</option>
                                                          <option>Contenu choquant</option>
                                                        </select>
                                                        </div>
                                                        <div class="form-group">
                                                        <div class="col-md-6"><input type="text" name="numero" style="text-align:center;" value="N°<?php echo $annonce['id']; ?>" class="form-control" readonly/></div></div><div class="form-group">
                                                        <div class="col-md-6"><input type="text" name="description" style="text-align:center;" value="<?php echo $annonce['produit']; ?>" class="form-control" readonly/></div>
                                                      </div><hr></div>
                                                      <div class="modal-footer">
                                                      <div class="col-md-12">
                                                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Retour</button>
                                                        <button type="submit" name="rapport" class="btn btn-primary">Envoyer le rapport</button></div>
                                                        </center>
                                                        </form>
                                                      </div>
                                                    </div>
                                                  </div>

Voici mon modal + formulaire qui est censé retourner l'id + produit et l'envoyer a la bdd cependant il a toujours le même id ^^

Je précise que je suis dans ma boucle qui affiche les annonces ^^
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 547
Points
24 772
Il nous faudrait un peu plus de code je pense, car là on ne peut pas t'aider.
Ce code est présent dans une boucle ?

Car là tu récupères l'id grâce à $annonce['id'], mais si tu n'es pas dans une boucle qui change $annonce, forcément tu n'auras que la dernière annonce :mmh:
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
PHP:
<?php

require_once('includes/configuration.php');

if(isset($_POST['rapport']))
    {
        $raison = htmlspecialchars($_POST['raison']);
        $numero = htmlspecialchars($_POST['numero']);
        $description = htmlspecialchars($_POST['description']);
        

        if(!empty($_POST['raison'])) // Les champs qui seront obligatoire d'être remplis dans le formulaire
        {           
           $reqinsert = $bdd->prepare('INSERT INTO abus(numero, raison, description) VALUES(?, ?, ?)');
            $reqinsert->execute(array($numero, $raison, $description));

            // Si tout c'est bien passé, on affiche ce message
            $erreur = "<div class=\"alert alert-success\">
            L'équipe de <strong>Occaz.Tech</strong>vous remercie de votre signalement !
            </div>";
            header('Refresh: 3; https://occaz.tech/');
        }
        else
        {
            // Si tous les champs ne sont pas remplis
            $erreur = "<div class=\"alert alert-danger\"><strong>Erreur!</strong> Tous les champs ne sont pas remplis.
                        </div>";
        }

    }
    


$annonce = $_GET['annonce'] ?? '';
$adresse = $_GET['adresse'] ?? '';
$categorie = $_GET['categorie'] ?? '';
$min = $_GET['min'] ?? '';

if(isset($_GET['tri']) && $_GET['tri'] == "desc") {
    $orderby = 'ASC';
 }
 else {
    $orderby = 'DESC';
 }
 
$annonce_par_page = 10;

$req1 = $bdd->prepare('SELECT id, categorie, identifiant, produit, description, zip, date, image, ville, region, prix, contact, image2 FROM membres WHERE prix >= :min AND CONCAT(produit, description) LIKE :annonce AND CONCAT(ville, region) LIKE :adresse AND categorie LIKE :categorie ORDER BY date '.$orderby.'');
$req1->execute([
    'annonce' => "%{$annonce}%",
    'adresse' => "%{$adresse}%",
    'categorie' => "%{$categorie}%",
    'min' => "$min",
]);


$annonce_total = $req1->rowCount();
$pagesTotales = ceil($annonce_total/$annonce_par_page);

if(isset($_GET['page']) AND !empty($_GET['page']) AND $_GET['page'] > 0 AND $_GET['page'] <= $pagesTotales) {
   $_GET['page'] = intval($_GET['page']);
   $pageCourante = $_GET['page'];
} else {
   $pageCourante = 1;
}
$depart = ($pageCourante-1)*$annonce_par_page;

$req = $bdd->prepare('SELECT id, categorie, identifiant, produit, description, zip, date, image, ville, region, prix, contact, image2 FROM membres WHERE prix >= :min AND CONCAT(produit, description) LIKE :annonce AND CONCAT(ville, region) LIKE :adresse AND categorie LIKE :categorie ORDER BY date '.$orderby.' LIMIT '.$depart.','.$annonce_par_page);
$req->execute([
    'annonce' => "%{$annonce}%",
    'adresse' => "%{$adresse}%",
    'categorie' => "%{$categorie}%",
    'min' => "$min",
]);




?>

Ma requête ci dessus ^^
Ensuite je commence ma boucle ici
PHP:
<?php 
if ($req->rowcount() > 0) {
            while ($annonce = $req->fetch()) {
                ?>
Donc j'affiche mes annonce avec mes <?= $annonce['xxxx']; ?>
Ensuite je met mon modal

HTML:
<font size="3"><small class="text-muted"><a data-toggle="modal" data-target="#exampleModal">⚠️  Signaler un abus </a></small></font>
                                                
                                                
                                                <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                                                  <div class="modal-dialog" role="document">
                                                    <div class="modal-content">
                                                      <div class="modal-header">
                                                        <h5 class="modal-title" id="exampleModalLabel">⚠️  Signaler un abus</h5>
                                                        
                                                      </div>
                                                      <div class="modal-body">
                                                      <form method="post">
                                                      <div class="form-group">
                                                        <select name="raison" class="form-control">
                                                          <option>Motif</option>
                                                          <option>Fraude</option>
                                                          <option>Doublon</option>
                                                          <option>Discrimination </option>
                                                          <option>Animaux</option>
                                                          <option>Contrefaçon</option>
                                                          <option>Contenu choquant</option>
                                                        </select></div>
                                                        <div class="form-group">
                                                            <div class="col-md-6">
                                                                <input type="text" name="numero" style="text-align:center;" value="N°<?php echo $annonce['id']; ?>" class="form-control" readonly/>
                                                            </div>
                                                        </div>
                                                        <div class="form-group">
                                                            <div class="col-md-6">
                                                                <input type="text" name="description" style="text-align:center;" value="<?php echo $annonce['produit']; ?>" class="form-control" readonly/>
                                                            </div>
                                                        </div>
                                                        <hr>
                                                        </div>
                                                        <div class="modal-footer">
                                                      <div class="col-md-12">
                                                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Retour</button>
                                                        <button type="submit" name="rapport" class="btn btn-primary">Envoyer le rapport</button></div>
                                                        
                                                        </form>
                                                      </div>
                                                        </div>
                                                        
                                                      
                                                    </div>
                                                  </div>
                                                </div>

Ensuite je met mon sinon
PHP:
<?php } ?>
                  <?php } else { ?>
et enfin je met mon erreur si y'a pas d'annonce ^^ voila tout !
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 704
Réactions
8 499
Points
32 425
Là tu generes plein de fois le modal avec le même ID et les même data-target etc..

Si tu veux un modal unique pour chaque itération tu dois à chaque fois donner un ID unique

modal-$annonde->id par exemple
Tu as essayé de cliquer sur le tout dernier bouton signal? S'ouvre t'il?
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
Là tu generes plein de fois le modal avec le même ID et les même data-target etc..

Si tu veux un modal unique pour chaque itération tu dois à chaque fois donner un ID unique

modal-$annonde->id par exemple
Tu as essayé de cliquer sur le tout dernier bouton signal? S'ouvre t'il?
Oui
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 547
Points
24 772
WhiiTe' a raison, tu génères pleins de fois un modal avec le même id.
N'oublie pas ce que je t'avais dit ; en HTML un id est unique, donc enlève les id="blabla" ou customise les, comme l'a dit WhiiTe'.

Pour ça, dans ton while tu as
Code:
<div id="blabla"></div>
remplace le par quelque chose comme
Code:
<div id ="blabla-<?php echo $annonce['id']; ?>"></div>

Sinon remplace tes id par des class tout simplement :p
Et tu peux nous montrer le code PHP qui envoie l'info en bdd et/ou le le code js qui ouvre le modal ?
 
Cette réponse a aidé l'auteur de cette discussion !
Haut