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 ?
    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
  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
    1. pouvez vous me proposer une solution pour arriver au resultat voulu ?
  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 
    } 
    1. rien n'a changee , il retourne au point de depart pourtant g rien precise sur method
      method=" "
  4. 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 :)
  5. 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> 
  6. 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
  7. Voici la ligne correcte; je viens de la tester
    a_object.send("delete=<?php echo ''.$utilisateur.''; ?>");
    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. 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. Essaye avec $_POST['yes'] au lieu de $_POST["yes"]
          1. ca revient au meme :)
          2. Très bizarre !
        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. 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

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