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

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. 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 ?
    0
    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
      0
  2. 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
    0
    1. pouvez vous me proposer une solution pour arriver au resultat voulu ?
      0
  3. 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 
    } 
    0
    1. rien n'a changee , il retourne au point de depart pourtant g rien precise sur method
      method=" "
      0
  4. Qu' est ce que tu veux qu' il se passe quand tu cliques YES ?
    0
    1. tu peux nous mettre ton code en entier ?
      0
      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
        0
      2. Je vais t' écrire un petit code en XMLHttpRequest ca deverait fonctionner
        0
      3. merci :)
        0
    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
      0
      1. merciiiiiiiiiiiiiiiii je le test tt de suite !!
        0
      2. juste une chose $_POST['delete'] & $utilisateur renvoie a quoi ?

        parcke ma requete de suppression va utiliser le id deja defini dans le form
        0
      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
        0
      4. je dois donc inclure a_object.send("delete=<? echo '.'$utilisateur.''; ?>"; dans deluser() ?
        0
      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> 
        0
    3. 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.''; ?>");
      0
      1. non ca n'affiche tjrs rien :)
        j'ai tjrs a_object.send("delete=<? echo '.'$utilisateur.''; ?>";
        dans le code source
        0
    4. Voici la ligne correcte; je viens de la tester
      a_object.send("delete=<?php echo ''.$utilisateur.''; ?>");
      0
      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
        0
        1. 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.''; ?>");
          0
          1. Essaye avec $_POST['yes'] au lieu de $_POST["yes"]
            0
            1. ca revient au meme :)
              0
            2. Très bizarre !
              0
          2. Tu avances un peu ou tu bloques toujours ?
            0
            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
              0
          3. Ca envoit bien les variables à emprunt.php ?
            0
            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 ?
              0
            2. Bah ca envoit quelque chose c est bon signe xD, c est les variables qui sont mals renseignées
              0
            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

              ?>
              0
          4. variable2 correspond à $ext
            donc dans emprunt.php tu la récupères
            $ext= trim(str_replace("+"," plus ",$_POST['variable2']));
            0
            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 ??
              0