Bonsoir,

Je rencontre un petit souci avec une boite modal et j'avoue que je pensais pas avoir un souci avec un truc pourtant simple en soit.

Pour poser les bases, je suis entrain de développer une petit ludothèque avec un modéle MVC.

Là, je suis sur la partie admin.

J'ai fait un affichage sous forme de tableau de tout les jeux que je possède. Jusqu'à tout va bien. J'ai ensuite créer le bouton supprimer avec ce qui va derrière la aussi pas de blem. J'ai ensuite continuer sur un bouton modifier qui afficherait une boite modal avec les des champs préremplis qu'on pourrait modifier avec un bouton valider et tout.

Le hic c'est que je bloque à la création de la boite modal. Quand je clique sur le bouton modifier, je vois la boite le temps du chargement et hop disparu. Je vois pas trop d'ou cela peut venir. Après je m'y prend peut etre mal c'est une posibilité.

Là on a le code de view.php

<div id="ModifierJeu">
      <?php
   ModifierJeuAdmin();
?>
</div>

là le bouton pour afficher la boite modal, qui se trouve dans une fonction de modelAdmin.php

echo "<td><button type='submit' name='modifier' value = '".htmlspecialchars($donnees['id'], ENT_QUOTES|ENT_HTML5)."' class='btn btn-info btn-lg' data-toggle='modal' data-target='#myModal'>Open Modal</button></td>";

le controler action_admin.php

if(!empty($_POST['modifier'])) {
  ModifierJeuAdmin($_POST['modifier']);

}

la fonction dans modelAdmin.php

function ModifierJeuAdmin() {

    echo'<div id="myModal" class="modal fade" role="dialog">';
      echo'<div class="modal-dialog">';
        echo'<div class="modal-content">';
          echo'<div class="modal-header">';
           echo' <button type="button" class="close" data-dismiss="modal">&times;</button>';
           echo' <h4 class="modal-title">Modal Header</h4>';
          echo'</div>';
          echo'<div class="modal-body">';
            echo'<p>Some text in the modal.</p>';
          echo'</div>';
          echo'<div class="modal-footer">';
            echo'<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>';
         echo'</div>';
        echo'</div>';

      echo'</div>';
    echo'</div>';

}

Quelqu'un pourrait m'éclaire sur la question ou meme me dire que je me plante complétement et que mon code est à mettre à la corbeille ce qui est tout à fait possible. Mais dans ce cas, je veux bien savoir comment intégrer une boite modal dans mon MVC..

Merci à vous

5 réponses


Bonjour.
Tu as déjà un problèmeavec la ligne suivante :

ModifierJeuAdmin($_POST['modifier']);

Tu passes un argument à la fonction, alors qu'elle n'en attend aucun.
Sinon un conseil, évites de faire une 30aine d'echo dans ta fonction, définis plutôt à la rigueur une variable dont tu incrémentes son contenu au fur et à mesure, pour au final la retourner, exemple :

function modifierJeuAdmin() {

  $html = '<div id="myModal" class="modal fade" role="dialog">';
  $html .= '<div class="modal-dialog">';
  $html .= '<div class="modal-content">';
  $html .= '<div class="modal-header">';
  $html .= '<button type="button" class="close" data-dismiss="modal">&times;</button>';
  $html .= '<h4 class="modal-title">Modal Header</h4>';
  $html .= '</div>';
  $html .= '<div class="modal-body">';
  $html .= '<p>Some text in the modal.</p>';
  $html .= '</div>';
  $html .= '<div class="modal-footer">';
  $html .= '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>';
  $html .= '</div>';
  $html .= '</div>';
  $html .= '</div>';
  $html .= '</div>';

  return $html;
}
gweared
Auteur

Normalement si l'id du jeu mais j'ai pas fait le traitement dans la boite modal pour le moment.
Je vais coriger pour les écho merci.

Normalement si l'id du jeu mais j'ai pas fait le traitement dans la boite modal pour le moment.

Sauf que si tu passes un argument à la fonction alors qu'elle n'en attend aucun, tu vas avoir une erreur provenant de PHP, ou alors il faut que tu indiques à la fonction que l'argument est facultatif.

gweared
Auteur

D'accord mais ce ne résoud pas le problème du fait que ma modal ne s'affiche que pendant le temps du refresh. Cela serait du à quoi?

Au contraire, ça peut être dû à ça, tu peux justement avoir une erreur car tu passes un argument à la fonction alors qu'elle n'en attend aucun, tu coup le code qui se situe à l'intérieur de celle-ci ne peut pas s'exécuter.
Mais il y a aussi le fait, que ton code HTML actuel concernant la boite modal, ne permet pas d'afficher celle-ci.
Si tu as si peu de connaissance en JavaScript, je te recommande fortement d'approfondir tes connaissances dans le language.
Pour que ta boite modal puisse s'afficher, il faut que le code HTML correspondant soit déja présent sur la page au moment du click.
Donc ton système de :

  • Je clique sur le bouton et ensuite j'affiche le code HTML via PHP pour que la boite modale s'affiche.

Ce procédé ne peut pas fonctionner, ou alors il faut que tu ajoutes du code JavaScript supplémentaire et par conséquent utiliser de l'ajax.