Formulaire en Php

Bonjour,

J'ai un formulaire que j'arrive pas traiter comme e veux.

<input type="submit" name="controle" value="Contrôler et Sauvegarder">
<input type="submit" name="envoi" onClick="javascript:return confirmation();" value="Envoi" />

code php

if(isset($_POST['envoi'])
{
header('Location:index.php');
}

A mon avis ca doit marcher , mais ca marche pas, je me demande pq?

9 réponses

  1. Salut,

    Ton code php et html sont sur la même page ?
    Si oui c'est normal que ce que tu veux faire n'ai pas le rendu souhaité.

    Php travaillant coté serveur ( on ne le dit jamais assez) , tu ne peux plus modifier les Headers une fois envoyés au clients.

    Tu peux voir ici comment cela fonctionne.

    Une erreur ne devient pas vérité parce que tout le monde y croit.
    1. Salut,

      Php et html sont sur la même page.

      Mais j'ai testé avec echo, le code ne fonctionne pas
  2. Salut,
    tu veux que sa fasse quoi ?
    explique mieux ton problème et ce que tu veux faire parce que sinon on ne pourras pas t'aider...
    1. Salut,
      Je veux qu'une fois la facture est envoyé , il retourne dans la page d'accueil.
      J'ai tout essayé, onclick="history.go(-1)", location.replace, href.
      Mais j'ai pas le résultat que je veux.
    2. et c'est quoi "le résultat" que tu as ?
      onClick="javascript:return confirmation();" 
      

      file nous le code dans ton onclick
    3. Voila le code pour return confirmation.

      function confirmation()
      {
      return confirm('Etes-vous sûr de vouloir envoyer ce devis ?');
      }
      Il se passe rien, la facture est envoyé, mais il se redirige pas dans la page d'cceuil. Meme si je mets onClick="javascript:return confirmation(); history.go(-1)"
  3. ton formulaire a bien une structure qui ressemble a ça ?
    <form methode="post" action="tapage.php">
    <input type="submit" name="controle" value="Contrôler et Sauvegarder">
    <input type="submit" name="envoi" onClick="javascript:return confirmation();" value="Envoi" />
    </form>
    


    1. Oui c'est la meme structure. Dans ce code je veux supprimer le bouton de retour, a sa place, je veux qu'il fasse un retour automatique, une fois qu'on clique sur le bouton d'envoi.

      Voila le code:
      form action="pages/to_devis8.php" method="POST">
      <tr>
      <td><input type="text" name="designation5" maxlength="80" size="50" value="<?php if(isset($_SESSION['devis']['designation5'])) echo $_SESSION['devis']['designation5']; else echo $session_devis['designation5']; ?>"></td>
      <td><input type="text" name="prix5" maxlength="8" size="8" value="<?php if(isset($_SESSION['devis']['prix5'])) echo $_SESSION['devis']['prix5']; else echo $session_devis['prix5']; ?>"></td>
      <td><input type="text" name="quantite5" maxlength="3" size="3" value="<?php if(isset($_SESSION['devis']['quantite5'])) echo $_SESSION['devis']['quantite5']; else echo $session_devis['quantite5']; ?>"></td>
      </tr>

      <input type="button" value="Retour" onClick="history.go(-1)" />
      <input type="submit" name="controle" value="Contrôler et Sauvegarder"><input type="submit" name="envoi" onClick="javascript:return confirmation();" value="Envoi" />
      </form>

      Le code de to_devis8

      <?php
      session_start();

      $_SESSION['devis'] = $_POST;

      header('Location: ../document/devis8/index.php');

      ?>
    2. As tu essayer avec une Url absolue dans le Header ?
    3. Et la page index.php prepare la facture.
    4. $_SESSION['devis'] = $_POST; 

      je viens de faire attention à ça, mais tu n'aurais pas oublier une parti ?
    5. Oui j'ai déjà essayé avec un URL absolue, c'est la meme chose, il se redirige pas
      :(
  4. Détail un peu le processus, j'ai du mal à suivre.

    l'utilisateur arrive sur le formulaire, il le remplie. Quand il clique sur le bouton envoyer, cela fait appelle à ta fonction JS de contrôle.
    Si validation, les données sont traitées par qui ? ou ?
    Par une autre page php ?

    réponds pour savoir si je fais fausse route.
    1. Ce code t'aide voir la situation?
  5. J'ai une autre question.

    Dans un onclick on peut avoir deux parametre?
    par ex:

    onClick="confirm(); retourner()" c'est correct?
    1. Bonjour

      onclick n'a pas de "paramètres" mais une valeur qui est une chaîne.
      javascript essaye d'interpreter ce qu'il y a dans cette chaine. S'il y a plusieurs instructions, il en exécute plusieurs.
      1. Salut,

        Je me suis mal exprimé je voulais dire des valeurs.

        S'il exécute plusieurs valeurs, dans ce cas pq mon code ne fonctionne pas?

        <code type="javascript">
        <script type="text/javascript">

        function confirmation()
        {
        return confirm('Etes-vous sûr de vouloir envoyer ce devis ?');
        }

        function retour() {
        window.open('https://www.site.fr/crm/index.php?id=modifier');
        }

        <input type="submit" name="envoi" onClick=" return confirmation(); retour()" value="Envoi" />
        </script>
        </code>
      2. onClick=" return confirmation(); retour()"
        La première partie de ton code est return confirmation();. le Return lui fait quitter l'exécution pour revenir au niveau supérieur. Comme dans n'importe quelle fonction Et comme ici il n'y a pas de niveau supérieur, il arrête. Sans avoir fait retour();
      3. alors comment faire?
        Si je demande une confirmation et je veux qu'il fasse retour automatique?

        Confirmation en javascript et redirection en php, mais comment, ca je sais pas.
    2. Premièrement je te déconseille l'emploi des variables super globales dans tes formulaires, ça manque de clarté dans ton code.

      Ensuite:
      " $_SESSION['devis'] = $_POST; "
      Réessaie ce code en y ajoutant un argument, et sans la super gloable.

      Enfin, essaie de mettre le chemin complet dans le header (depuis le www ou depuis l'alias, je ne sais plus).
      1. Tu pourrais modifier la propriété "action" de ton form en javascript avant d'appeler le "confirm", mais la redirection en PHP semble beaucoup plus naturelle.
        Si tu as testé et que ça ne marchait pas, c'est certainement comme ThOm45 a essayé de te le dire, que tu l'as fait trop tard dans ton script. L'appel à la fonction header doit avoir lieu avant tout envoi de données au client, donc avant toute balise HTML et tout 'echo'
        [EDIT] : je n'avais pas vu tous les commentaires. Il n'y aurait pas une ligne vide avant <?php dans to_devis8 ?
        Si tu travailles en UTF8, travailles-tu sans BOM ?
        1. Bonjour,

          hmmm... si j'ai bien compris... tu ne devrais pas capturer l'évenement sur click de submit... mais plutôt sur l'évenement onSubmit du formulaire...

          quelque chose comme:

          <form method="..." action="..." onSubmit="javascript:return confirmation();">

          ....

          </form>