Formulaire en Php

sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
minalud Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -
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

Th0m45 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   3
 
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.
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

Php et html sont sur la même page.

Mais j'ai testé avec echo, le code ne fonctionne pas
0
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
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...
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
et c'est quoi "le résultat" que tu as ?
onClick="javascript:return confirmation();" 

file nous le code dans ton onclick
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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)"
0
Th0m45 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   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>


0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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');

?>
0
Th0m45 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   3
 
As tu essayer avec une Url absolue dans le Header ?
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Et la page index.php prepare la facture.
0
Th0m45 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   3
 
$_SESSION['devis'] = $_POST; 

je viens de faire attention à ça, mais tu n'aurais pas oublier une parti ?
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'ai déjà essayé avec un URL absolue, c'est la meme chose, il se redirige pas
:(
0
Th0m45 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   3
 
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.
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Ce code t'aide voir la situation?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai une autre question.

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

onClick="confirm(); retourner()" c'est correct?
0
le père
 
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.
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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>
0
le père
 
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();
0
sakhavat Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
Panshu Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
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).
0
le père
 
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 ?
0
minalud Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   8
 
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>
0