serait-il possible de voir ton formulaire ?
Voilà mon formulaire :
et voilà où je veux récupérer les valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 <table width="439" height="154" border="0"> <tr> <td><FORM method=post action="questionnaire.php"> <div align="center"> <TABLE BORDER=0> <TR> <TD bgcolor="#CC9966">Nom</TD> <TD bgcolor="#CC9966"> <INPUT type=text name="question1"> </TD> </TR> <TR> <TD bgcolor="#CC9966">Prenom</TD> <TD bgcolor="#CC9966"> <INPUT type=text name="question2"> </TD> </TR> <TR> <TD bgcolor="#CC9966">Test</TD> <TD bgcolor="#CC9966"><SELECT name="fonction2"> <option value="5" selected>5</option> <option value="10">10</option> <option value="20">20</option> </SELECT></TD> </TR> <TR> <TD bgcolor="#CC9966">Code n°1</TD> <TD bgcolor="#CC9966"><INPUT type=text name="question4"></TD> </TR> <TR> <TD bgcolor="#CC9966">Code n°2</TD> <TD bgcolor="#CC9966"><INPUT type=text name="question3"></TD> </TR> <TR> <TD bgcolor="#CC9966">Code n°3</TD> <TD bgcolor="#CC9966"><INPUT type=text name="question5"></TD> </TR> <TR> <TD bgcolor="#CC9966">Code n°4</TD> <TD bgcolor="#CC9966"><INPUT type=text name="question6"></TD> </TR> <TR> <TD bgcolor="#CC9966">Code n°5</TD> <TD bgcolor="#CC9966"><INPUT type=text name="question7"></TD> </TR> <TR> <TD bgcolor="#CC9966">Test</TD> <TD bgcolor="#CC9966"> <SELECT name="fonction"> <option value="test">TEST</option> <option value="test1">TEST1</option> </SELECT> </TD> </TR> <TR> <TD height="92" bgcolor="#CC9966">Commentaires</TD> <TD bgcolor="#CC9966"> <TEXTAREA rows="3" name="commentaires">Si vous avez une question, n'hesitez pas à l'écrire</TEXTAREA> </TD> </TR> <TR> <TD COLSPAN=2 bgcolor="#3399FF"> <INPUT type="submit" value="Envoyer"> </TD> </TR> </TABLE> </div> </FORM> </td> </tr> </table>
C'est ces valeurs là que je veux récupérer pour pouvoir, selon le choix, les soustraire à la valeur initial que je mets dans l'index. Pour tos ce qui est des noms c'est que des tests donc c'est n'importe quoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <TD bgcolor="#CC9966"><SELECT name="fonction2"> <option value="5" selected>5</option> <option value="10">10</option> <option value="20">20</option> </SELECT></TD>
Je te conseil de voir la faq AJAX et ce tutoriel. Mais pour te simplifier AJAX : c'est le fait d'appeler une page (php, asp, ...) via javascript, cette page va retourner un résultat qui va être exploiter aussi par javascript.
donc si je reprends tes codes :
questionnaire.php
index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 <?php session_start(); //On verifie les variables if (!empty($_POST['question1']) AND !empty($_POST['question2'])) { $_SESSION['fonction2'] = intval($_POST['fonction2']); //Securisation des variables on ne sait jamais $question1 = htmlentities ($_POST['question1']); $question2 = htmlentities ($_POST['question2']); //Définition des variables pour le mail $MailTo = "xxx@xxx.fr" ; $MailSubject = "Réponse au questionnaire" ; //Le contenu $MailBody = '1 : '.$question1."\n"; $MailBody .= '2 : '.$question2."\n"; $MailBody .= '3 : '.$fonction2."\n"; $MailBody .= '4 : '.$fonction."\n"; $MailBody .= '5 : '.$question3."\n"; $MailBody .= '6 : '.$question4."\n"; $MailBody .= '7 : '.$question5."\n"; $MailBody .= '8 : '.$question6."\n"; $MailBody .= '9 : '.$question7."\n"; $MailBody .= 'commentaire: '.$commentaires."\n"; //On envoit mail($MailTo, $MailSubject, $MailBody); //on remercie print ("<script language = \"JavaScript\">"); print ("location.href = 'fin.html';"); print ("</script>"); } else //Sinon on lui envois un message d'erreur { print ("<script language = \"JavaScript\">"); print ("location.href = 'confirmation.html';"); print ("</script>"); } ?> <title>Fin de votre commande</title>
ça marche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?php session_start(); $_SESSION['valeur'] = 1000000; if(isset($_SESSION['fonction2'])){ $_SESSION['valeur'] -= $_SESSION['fonction2']; // ne pas oublier de la détruire (ou pas) unset($_SESSION['fonction2']); } ?> ... <td bgcolor="#996633"> <?php echo $_SESSION['valeur']; ?> Pains</td>
Je viens de tester tout ça. A première vu ça marchait mais quand j'ai refait une deuxième fois la valeur ne s'est pas rafraichie.
Je suis passer de 1000000 à 999850 mais plusieurs problèmes surviennent :
-Je ne reçois plus le mail du formulaire
-Ca ne marche qu'une fois
-J'ai une erreur qui s'affiche super rapidement et qui part quand je valide le formulaire. Apparament ça viendrait de la ligne de 2 de questionnaire.php donc de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part session_start();
essaye avec ça :
et dans index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //On envoit if( mail($MailTo, $MailSubject, $MailBody) ){ //on remercie print ("<script language = \"JavaScript\">"); print ("location.href = 'fin.html';"); print ("</script>"); } else{ echo 'pas d\'envoi d\'e-mail'; }
remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $_SESSION['valeur'] = 1000000;
tiens moi au jus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $_SESSION['valeur'] = isset($_SESSION['valeur']) ? $_SESSION['valeur'] : 1000000;
Là j'ai carrement une erreur quand j'appuie sur envoyer
ligne 47 = rien c'est la fin sur code
Code : Sélectionner tout - Visualiser dans une fenêtre à part Parse error: syntax error, unexpected $end in /**/**/**/*/*/****/questionnaire.php on line 47
problème de parenthèse ? un point-virgule qui manque ?
je voterai bien pour une accolade fermante qui manque...
je ne sais pas trop, indente ton code...
Voilà il manquait une accolade en effet ^^
Ça commence à mieux marcher, la valeur se rafraichit bien quand je refait une fois le processus.
Sur ce point c'est parfait merci mais le problème est que je ne reçois plus le mail et que quand je ne remplis pas le formulaire et que j'envoie je devrai tomber sur l'erreur que le lien ne s'envoie pas mais j etombe sur ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /**/**/*/*/*/****/questionnaire.php:2) in /***/**/**/*/*/***/questionnaire.php on line 3
mprff -> http://php.net/session_start
session_start() se place tout en haut de la page
résolu ?
J'ai résolu le problème de l'email maintenat j'ai toujours l'erreur quand quand j'envoie et que les conditions du début sont pas verifiés. Normalement je devrais tomber sur page blanche mais ca me fait l'erreur :
Pourtant ma fonction est au debut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /**/**/*/*/*/****/questionnaire.php:2) in /***/**/**/*/*/***/questionnaire.php on line 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?php session_start(); //On verifie les variables if (!empty($_POST['question1']) AND !empty($_POST['question2'])) { $_SESSION['fonction2'] = intval($_POST['fonction2']); //Securisation des variables on ne sait jamais $question1 = htmlentities ($_POST['question1']); $question2 = htmlentities ($_POST['question2']); //Définition des variables pour le mail $MailTo = "xxx@xxx.fr" ; $MailSubject = "Réponse au questionnaire" ; //Le contenu $MailBody = '1 : '.$question1."\n"; $MailBody .= '2 : '.$question2."\n"; $MailBody .= '3 : '.$fonction2."\n"; $MailBody .= '4 : '.$fonction."\n"; $MailBody .= '5 : '.$question3."\n"; $MailBody .= '6 : '.$question4."\n"; $MailBody .= '7 : '.$question5."\n"; $MailBody .= '8 : '.$question6."\n"; $MailBody .= '9 : '.$question7."\n"; $MailBody .= 'commentaire: '.$commentaires."\n"; //On envoit if( mail($MailTo, $MailSubject, $MailBody) ){ //on remercie print ("<script language = \"JavaScript\">"); print ("location.href = 'fin.html';"); print ("</script>"); } else{ } } ?> <title>Fin de votre commande</title>
encore avant !
d'accord, tu dois avoir une ligne au début de ton fichier qu'il te faut supprimer
il ne faut pas qu'il y ait le moindre affichage avant l'envoi des en-têtes (headers), du genre echo ou retour chariot
je sais pas si je suis très clair mais en cherchant un peu quelqu'un expliquera ça mieux que moi
Huhuhu ! C'est gagné !
En faite j'avais une ligne vide avant le <?php ce qui faisait planter !
J'ai juste une dernière question après je te laisse =P. Si j'ai envie de remettre une valeur initiale à $valeur comment je fais ? Je suis obligé de créé un nouveau $valeur1 ?
une valeur initiale ?
si tu veux changer la valeur de 1000000 à 50 par exemple, tu fais ça
ou plus propre
Code : Sélectionner tout - Visualiser dans une fenêtre à part $_SESSION['valeur'] = isset($_SESSION['valeur']) ? $_SESSION['valeur'] : 50;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $valeur = 50; $_SESSION['valeur'] = isset($_SESSION['valeur']) ? $_SESSION['valeur'] : $valeur;
ha oui pardon
pour supprimer une session :
reste à savoir quand la supprimer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 session_destroy(); setcookie(session_name(), null);
Merci merci parce qu'avec la 1ere technique ça se rafraichissait pas donc je comprenais pas. J'ai pris la 2eme technique et ça marche impec' !
J'ai encore un dernier soucis (chiant ce mec), donc dans mon questionnaire.php
Quand c'est bon ça envoie sur la page fin.html mais quand c'est pas bon je veux quand ca envoit sur une autre page html
J'ai donc remis le même code pour le fin.html mais rien ne s'affiche c'est blanc.
J'ai même voulu print quelque chose mais ça marchait pas, tout blanc. Peut être que je sais pas print ? lol
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <?php session_start(); //On verifie les variables if (!empty($_POST['question1']) AND !empty($_POST['question2'])) { $_SESSION['fonction2'] = intval($_POST['fonction2']); //Securisation des variables on ne sait jamais $question1 = htmlentities ($_POST['question1']); $question2 = htmlentities ($_POST['question2']); //Définition des variables pour le mail $MailTo = "xxx@xxx.fr" ; $MailSubject = "Réponse au questionnaire" ; //Le contenu $MailBody = '1 : '.$question1."\n"; $MailBody .= '2 : '.$question2."\n"; $MailBody .= '3 : '.$fonction2."\n"; $MailBody .= '4 : '.$fonction."\n"; $MailBody .= '5 : '.$question3."\n"; $MailBody .= '6 : '.$question4."\n"; $MailBody .= '7 : '.$question5."\n"; $MailBody .= '8 : '.$question6."\n"; $MailBody .= '9 : '.$question7."\n"; $MailBody .= 'commentaire: '.$commentaires."\n"; //On envoit if( mail($MailTo, $MailSubject, $MailBody) ){ //on remercie print ("<script language = \"JavaScript\">"); print ("location.href = 'fin.html';"); print ("</script>"); } else{ print ("<script language = \"JavaScript\">"); print ("location.href = 'error.html';"); print ("</script>"); } } ?> <title>Fin de votre commande</title>
il y a un problème avec les accolades, fais attention à ce que ton else soit bien placé, visiblement la redirection à lieu si le mail n'est pas envoyé
sinon tu enleve la condition autour du mail et tu mets un @ devant la fonction pour eviter l'affichage d'erreur en cas d'echec de l'envoi :
@mail()
Mouarffff j'avais pas remarqué que quelque chose n'allait pas !
Au niveau des erreurs y a plus rien.
Mais en faite $valeur ne garde pas sa valeur d'avant. Elle se réinitialise à chaque fois que j'envoie le formulaire. Ca ne se cumule pas :'(
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager