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

Enzo34!

★Web, Android, iOS ★
Contributeur
Inscription
31 Janvier 2014
Messages
1 396
Réactions
297
Points
10 331
    Réponse de Enzo34! Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #1
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 ^^
 

Enzo34!

★Web, Android, iOS ★
Contributeur
Inscription
31 Janvier 2014
Messages
1 396
Réactions
297
Points
10 331
    Réponse de Enzo34! Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #2
A savoir si le modal ne prend pas en compte la boucle ?
 

Paul GTP

Légende vivante
Ancien staff RG
Inscription
15 Août 2013
Messages
6 067
Réactions
2 987
Points
14 772
    Réponse de Paul GTP Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #3
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!

★Web, Android, iOS ★
Contributeur
Inscription
31 Janvier 2014
Messages
1 396
Réactions
297
Points
10 331
    Réponse de Enzo34! Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #4
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'

Ancien staff RG
Inscription
22 Octobre 2011
Messages
14 245
Réactions
7 976
Points
22 675
    Réponse de WhiiTe' Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #5
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!

★Web, Android, iOS ★
Contributeur
Inscription
31 Janvier 2014
Messages
1 396
Réactions
297
Points
10 331
    Réponse de Enzo34! Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #6
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
Ancien staff RG
Inscription
15 Août 2013
Messages
6 067
Réactions
2 987
Points
14 772
    Réponse de Paul GTP Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #7
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 ?
 

Ray’

Ancien Staff
Inscription
23 Juillet 2017
Messages
7 433
Réactions
2 573
Points
7 071
    Réponse de Ray’ Informatique Programmation Programmation web Questions, aides et recherches Résolu : J'ai un problème avec le modal sur mon site
  • #8
Salut,
J'ai déplacé ta discussion en section Résolu.
 

Haut Bas