Le code n'accede pas a ce bouton php

Bonjour,

je travaille sur un form ou je demande de remplir un champs affiche les infos relatifs , puis demande une confirmation pour enregistrer voila la stucture du code

//(l 'entete+ connex )

//les champs

<input type="submit" name="ok" value="ok" /> </br> // bouton d ordre d affichage

<?php

if(isset($_POST["ok"]))
{
?>
<input type="submit" name="yes" value="yes" /> </br>
<?php
if(isset($_POST["yes"]))
{
traitement apres le click sur yes
}
}
?>

mais meme kan je clicke le traitement de "yes" ne s'execute pas mais il passe a la page definie dans "action" du form

17 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Question initiale porte sur un formulaire où l’utilisateur remplit des champs puis déclenche une confirmation avant d’enregistrer les données via une requête serveur dans le même formulaire. Des échanges décrivent une logique en deux étapes avec un bouton ok et un bouton yes, et tentatives d’utiliser JavaScript (prompt/confirm) ou AJAX pour lancer le traitement. Plusieurs réponses pointent des difficultés à récupérer les valeurs côté serveur ou à faire communiquer la phase finale (clic sur yes) avec la requête d’update ou d’emprunt, avec des morceaux de code PHP et MySQL. En cas de contexte, les échanges évoquent des demandes de code complet ou d’explication sur l’envoi des variables via POST et l’usage d’AJAX pour afficher la réponse dans une zone dédiée.

Bobot (l’IA à votre service)
  1. sinn ya une indication : stocker le OK dans un champs hidden ou encore l utiliser dans une session

    si j'opte pour le hidden ou doit je mettre ce champs , c a dire aprs quelle condition ??
    1. variable2 correspond à $ext
      donc dans emprunt.php tu la récupères
      $ext= trim(str_replace("+"," plus ",$_POST['variable2']));
      1. Ca envoit bien les variables à emprunt.php ?
        1. voila dans le code source

          a_object.send("emprunter=<br />
          <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>

          donc je presume que c nn ?
        2. Bah ca envoit quelque chose c est bon signe xD, c est les variables qui sont mals renseignées
        3. g deja verifier les variable avec des echo mais la je sens que j ai mis une betise quelque part

          a_object.send("emprunter=<?php echo ''.$advt.''; ?>&variable2=<?php echo ''.$ext.''; ?>");
          //je suis sur emprunt.php

          et quand je passe a emprunter.php
          c

          <?php
          $advt= trim(str_replace("+"," plus ",$_POST['emprunter'])); (ou emprunt ???)
          $extt= trim(str_replace("+"," plus ",$_POST['emprunter']));

          //requete

          ?>
      2. Tu avances un peu ou tu bloques toujours ?
        1. a vrai dire j ai pas trop le choix puiske deja je sais pas d'ou viens lerreur

          j ai essaye de la faire avec du javascript a travers un prompt de confirmation( oui/non ) (donc sans le yes )
          mais je sais pas comment recuperer le oui du prompt pour executer la requete en cas de "oui"

          c est a dire executer la requete ou pas en fonction du confirm
      3. Essaye avec $_POST['yes'] au lieu de $_POST["yes"]
        1. ca revient au meme :)
        2. Très bizarre !
      4. Pour envoyer plusieurs variables dans
        a_object.send("emprunter=<?php echo ''.$advt.''; ?>");
        faut faire

        a_object.send("emprunter=<?php echo ''.$advt.''; ?>&variable2=<?php echo ''.$var2.''; ?>");
        1. voila un peu la vrai application , bon j ai parler de suppression mais c est just un exemple pour faire des test mais la vrai application se trouve ici

          fichier emprunt

          <?php //connection base donnee

          $db = mysql_connect('localhost', 'root' );
          mysql_select_db('mediatheque',$db);
          ?>

          <HEAD>
          <script type="text/javascript">
          function Deluser(){
          var a_object = null;
          if(window.XMLHttpRequest){
          a_object = new XMLHttpRequest();
          }else if(window.ActiveXObject){
          a_object = new ActiveXObject("Microsoft.XMLHTTP");
          }else{
          alert('Votre navigateur de supporte pas la technologie AJAX(XMLHttpRequest)...');
          return;
          }
          a_object.open("POST","emprunter.php",true);
          a_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
          a_object.send("emprunter=<?php echo ''.$advt.''; ?>");
          a_object.send("emprunter=<?php echo ''.$ext.''; ?>");
          a_object.onreadystatechange = function(){
          if(a_object.readyState==4){
          if(a_object.status==200){
          document.getElementById("reponse").innerHTML = a_object.responseText;

          }
          }
          }
          }
          </script>
          </HEAD>

          <form method="post" > <!-- Form AJout -->

          <fieldset>
          <legend>Nouvel emprunt</legend> <!-- Titre du cadre -->

          <label >Adherent</label><br />
          <input type="text" name="adhe" /><br />

          <label >Exemplaire</label><br />
          <input type="text" name="exemp" /><br />

          <input type="submit" name="ok" value="Emprunter"/> </br> <!-- Ordre affichage ! -->

          <?php

          if(isset($_POST["ok"]))
          {

          if(isset($_POST["adhe"]))
          {
          $advt = $_POST['adhe'];
          $ext = $_POST['exemp'];

          $rq1="SELECT ID_DOC FROM EXEMPLAIRE WHERE ID_EXEMPLAIRE='$ext'";
          $rqv = mysql_query($rq1)or die("<script>alert('Operation impossible !')</script>");
          $rqe= mysql_fetch_array($rqv);
          $doc=$rqe['ID_DOC'];
          echo $doc;echo "</br>";

          ?>

          <label >Document</label><br />
          <input type="text" name="doc" value="<?php echo $doc; ?>" /><br />

          <?php

          echo '<input type="button" name="yes" value="yes" onclick="Deluser();" /></br><div id="reponse"></div>';

          }

          ?>

          </fieldset>
          </form>

          //le fichier emprunter

          <?php
          //$advt= trim(str_replace("+"," plus ",$_POST['emprunter']));
          //$extt= trim(str_replace("+"," plus ",$_POST['emprunter']));
          $rq4 = "UPDATE EXEMPLAIRE SET ID_ADHERENT = '$advt' WHERE ID_EXEMPLAIRE = '$ext';";
          $rqv4 = mysql_query($rq4)or die("<script>alert('Emprunt Impossible !')</script>");
          if($rqv4)
          {
          echo "<script>alert('Emprunt enregistre ! ')</script>";
          echo "</br>";
          }

          ?>

          ici tous marche a 100% mais le probleme c faire la liaison entre la requete d'update et le bouton yes

          parceke kan je clike sur yes rien ne se passe
          1. Voici la ligne correcte; je viens de la tester
            a_object.send("delete=<?php echo ''.$utilisateur.''; ?>");
            1. Clique sur ton premier bouton "OK" ensuite tu regardes le code source de la page pour voir si la variable $utilisateur est bien renseignée
              tu deverais voir
              a_object.send("delete=user_48");

              Ps; je viens de voir que j' ai pas fermé la parenthèse
              a_object.send("delete=<? echo '.'$utilisateur.''; ?>";
              a_object.send("delete=<? echo '.'$utilisateur.''; ?>");
              1. non ca n'affiche tjrs rien :)
                j'ai tjrs a_object.send("delete=<? echo '.'$utilisateur.''; ?>";
                dans le code source
            2. Donc tu vas devoir apporter quelques modifications à ton code
              -transformer ton bouton YES
              -ajouter une DIV

              echo '<input type="button" name="yes" value="yes" onclick="Deluser();" /></br>
              <div id="reponse"></div>';


              Entre les balises <head> et </head>
              tu mets:
              <script type="text/javascript">
              function Deluser(){
              var a_object = null;
              if(window.XMLHttpRequest){
              a_object = new XMLHttpRequest();
              }else if(window.ActiveXObject){
              a_object = new ActiveXObject("Microsoft.XMLHTTP");
              }else{
              alert('Votre navigateur de supporte pas la technologie AJAX(XMLHttpRequest)...');
              return;
              }
              a_object.open("POST","delete.php",true);
              a_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');

              a_object.onreadystatechange = function(){
              if(a_object.readyState==4){
              if(a_object.status==200){
              document.getElementById("reponse").innerHTML = a_object.responseText;

              }
              }
              }
              }
              </script>


              Ensuite tu crées une page delete.php
              tu récupères la variable utilisateur
              <?php
              $utilisateur= trim(str_replace("+"," plus ",$_POST['delete']));
              là avec la variable, tu fais ta requète pour supprimer l' utilisateur
              et tu affiches un message
              echo "$utilisateur a bien été supprimé";
              (Ca affichera le message dans le div réponse que l' on a mis sous le bouton YES

              Important
              Dans la fonction Deluser() on envoit une variable $utilisateur
              a_object.send("delete=<? echo '.'$utilisateur.''; ?>";
              Il faut bien entendu que quand on clique sur YES la variable soit transmise
              1. merciiiiiiiiiiiiiiiii je le test tt de suite !!
              2. juste une chose $_POST['delete'] & $utilisateur renvoie a quoi ?

                parcke ma requete de suppression va utiliser le id deja defini dans le form
              3. a_object.send("delete=<? echo '.'$utilisateur.''; ?>";
                Va envoyer a delete.php l' UserID
                A mon avis c est quand on clique sur OK la page se réactualise et c est là que tu dois récupérer l' UserID j' ai appeler la variable $utlisateur mais tu peux changer, le tout c est quelle contienne la valeur de l' UserID

                Ensuite sur la page delete.php
                $_POST['delete'] c est justement la valeur de l' UserID que l' on a envoyé avec la requete
              4. je dois donc inclure a_object.send("delete=<? echo '.'$utilisateur.''; ?>"; dans deluser() ?
              5. Mince tout à l' heure j' ai coupé la ligne au lieu de la copier xD
                Je te redonne la fonction complete
                <script type="text/javascript"> 
                function Deluser(){ 
                var a_object = null; 
                if(window.XMLHttpRequest){ 
                a_object = new XMLHttpRequest(); 
                }else if(window.ActiveXObject){ 
                a_object = new ActiveXObject("Microsoft.XMLHTTP"); 
                }else{ 
                alert('Votre navigateur de supporte pas la technologie AJAX(XMLHttpRequest)...');
                 return; 
                } 
                a_object.open("POST","delete.php",true); 
                a_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
                a_object.send("delete=<? echo '.'$utilisateur.''; ?>";  
                a_object.onreadystatechange = function(){ 
                if(a_object.readyState==4){ 
                if(a_object.status==200){ 
                document.getElementById("reponse").innerHTML = a_object.responseText; 
                
                } 
                } 
                } 
                } 
                </script> 
            3. tu peux nous mettre ton code en entier ?
              1. c trop long le code
                en somme je vous explique l algo

                je rentre un id_user je clike sur ok
                si le user est trouve il m affiche son prenom et le bouton yes (yes va supprimer )
                si je clicke sur yes il est supprimee
                s'il trouve pas le user il maffiche un prompt

                c tres simple sauf que le bouton yes refuse de s'executer avec du php (genre onsubmit = //j'execute )
                mais avec javascript ca va
                sauf que j'arrive pas a inclure le traitement d'une requete en php dans la focntion javascript
              2. Je vais t' écrire un petit code en XMLHttpRequest ca deverait fonctionner
              3. merci :)
            4. Quelque chose comme ca
              if(isset($_POST["ok"])) 
              { 
              echo '<input type="submit" name="yes" value="yes" /> </br>';
              }
              if(isset($_POST["yes"])) 
              { 
              traitement apres le click sur yes 
              } 
              1. rien n'a changee , il retourne au point de depart pourtant g rien precise sur method
                method=" "
            5. Je pense que le problème vient du fait que l' action du YES est imbriquée dans le OK. Quand tu cliques sur YES, tout ce qui est après
              if(isset($_POST["ok"])) { 

              ne sera pas interprété puisque tu cliques sur YES et non sur OK
              1. pouvez vous me proposer une solution pour arriver au resultat voulu ?
            6. Je comprend pas tout, lorsque l' utilisateur clique sur OK, tu veux que ca affiche un récapitulatif des informations qu' il a renseigné et qu' il les corfirme en cliquant sur YES ?
              1. en fait en cliquant sur ok il affiche des information supplementaires ( des champs text que j ai pas inclu dans ce code ) puis il demande une autre confirmation avec un autre submit
                le premier OK c pour afficher , le YES pour confirmer , mais le yes ne marche pas