Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/08/2011, 22h33   #1
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mai 2011
Messages : 45
Points : 2
Points : 2
Par défaut <form action="">

Bonsoir à tous.

Voici mon petit problème.
J'ai un formulaire qui une fois renseigné doit insérer les renseignement dans la BDD et rediriger le visiteur automatiquement sur une nouvelle page.
Mais ça ne marche pas.
Voici le code:
Code :
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
<form method="post" name="formulaire" onSubmit="return verify(this.nom, this.prenom, this.adresse, this.codepostal, this.ville, this.email, this.email1)" action="mapage.php">
	   <tr><td>Civilit&eacute;</td><td>M.<input type="radio" name="civilite" value="mr"> Mme<input type="radio" name="civilite" value="mme"> Mlle<input type="radio" name="civilite" value="mlle"></td><td colspan="1" rowspan="8" align="center"><div style="width:60%;height:300px;overflow:auto;">
<br><br>
 
<?php
require("cgv_general.html");
?>
 
<br><br>
<br><br>
</p>
</div>
</td></tr>
        <tr><td>Nom : </td><td><input name="nom" /> </td></tr>
		<tr><td>Pr&eacute;nom: </td><td><input name="prenom" /> </td></tr>
		<tr><td>Adresse: </td><td><input name="adresse" size="50"/> </td></tr>
		<tr><td>Code postal: </td><td><input name="codepostal" size="6"/> </td></tr>
		<tr><td>Ville: </td><td><input name="ville" size="30"/> </td></tr>
		<tr><td>Email : </td><td><input name="email" size="30"/></td></tr>
		<tr><td>Confirmation de l'email : </td><td><input name="email1" size="30"/></td></tr>
		<tr><td colspan="2"><i>Tous les champs sont obligatoires. <br>Votre adresse email nous permettra de vous envoyer la confirmation et la facture de votre achat.</i><br><br></td></tr>
 
<tr>
<td></td>
<td colspan="2">
<p><br>
<input name="agree" id="agree" type="checkbox" />
<label for="agree">En cochant cette case, je confirme que mes coordonnées indiquées ci-dessus sont justes et que j'accepte les conditions générales de ventes.</label><br />
</p>
<center>
<input type="submit" id="submitA" title="CGV" value="Valider" />
</form>
 
<script type="text/javascript">
function toggleSubmit() {
document.getElementById('submitA').disabled = !document.getElementById('agree').checked;
}
document.getElementById('agree').onclick = toggleSubmit;
toggleSubmit(); 
</script>	
 
<?php
include('../connexion.php');
$db = mysql_connect($host, $login, $password) or die(showError('1', mysql_error()));
mysql_select_db($base,$db) or die(showError('2', mysql_error()));
 
if (isset($_POST['civilite']) AND isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['adresse']) AND isset($_POST['codepostal']) AND isset($_POST['ville']) AND isset($_POST['email']))
{
    $civilite = mysql_real_escape_string(htmlspecialchars($_POST['civilite'])); 
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom'])); 
	$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom'])); 
    $adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse'])); 
    $codepostal = mysql_real_escape_string(htmlspecialchars($_POST['codepostal'])); 
    $ville = mysql_real_escape_string(htmlspecialchars($_POST['ville'])); 
    $email = mysql_real_escape_string(htmlspecialchars($_POST['email'])); 
    $REMOTE_ADDR = mysql_real_escape_string(getenv('REMOTE_ADDR'));
    mysql_query("INSERT INTO formulaire VALUES('', '" . $civilite . "','" . $nom . "', '" . $prenom . "', '" . $adresse . "', '" . $codepostal . "', '" . $ville . "', '" . $email . "', '".date("Y-m-d H:i:s")."', '".$REMOTE_ADDR ."')");
}
mysql_close(); 
?>
Lorsque <form action="mapage.php"> alors, je suis dirigé vers la page en question mais les données ne sont pas enregistrées dans la BDD.
Si je met <form action=""> alors les données s'enregistrent mais je réactualise seulement la page.

Quelqu'un a une idée svp???
moimeme340 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 23h02   #2
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 340
Points : 2 340
Bonsoir,

C'est normal, tu récupères les données en $_POST une fois le formulaire envoyé.
Tu dois mettre tout ton code de traitement PHP dans la page qui est ciblée dans la propriété action de ton form ( mapage.php dans ton cas ).
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 23h24   #3
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mai 2011
Messages : 45
Points : 2
Points : 2
heuuuu
j'avoue ne pas tout comprendre la...

J'ai trouvé quelque chose par contre.
lorsque je rajoute
Code :
header("Location: mapage.phpp");
apres l'insertion des données dans la base, la redirection et l'enregistrement se font parfaitement a la condition que je supprime
Code :
1
2
3
<?php
include("cgv_general.html");
?>
Dans le cas contraire, la redirection se fait mais pas l'enregistrement dans la BDD
moimeme340 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 23h33   #4
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 340
Points : 2 340
C'est normal.
Include ça inclue la page appelée dans la page dans laquelle tu es.
Header ça change l'url, donc ça recharge une page.

Garde ta solution avec le header si elle fonctionne, mais je t'invite néanmoins à lire des cours sur PHP, et surtout a bien réfléchir avant de coder, car on ne comprend pas bien ce que tu veux, et du coup ton code...
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 23h39   #5
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mai 2011
Messages : 45
Points : 2
Points : 2
Ce que je désire, c'est qu'une fois le formulaire rempli, lorsque l'on clique sur "valider", que les renseignements s'enregistrent dans la BDD et qu'il y ai une redirection vers une autre page...

Ce que j'ai essayé avec le header() fonctionne une fois sur deux, et parfois il ca enregistre dans la BDD mais pas de redirection, des fois c'est l'inverse...
Je suis allé voir sur plusieurs site, et mon code ressemble à ceux que j'ai pu voir... il est quand même basique... Alors pourquoi ça ne fonctionne pas. et pourquoi lorsqu’il y a include("mapage.php'); il apparait cette erreur Warning: Cannot modify header information - headers already sent by (output started at E:\A\www\site\cgv\ccgv_general.html:139) in E:\A\www\site\cgv\cgv1.php on line 94
moimeme340 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 23h55   #6
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mai 2011
Messages : 45
Points : 2
Points : 2
Bon ça fonctionne
J'ai tout simplement mis mon code php dans un autre fichier comme ça, <form action="insertion.php""> et la je n'ai plus de pbm....
Voila... bonne soirée
moimeme340 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 09h00   #7
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
Salut, pour le header qui marche "une fois sur deux", c'est qu'il devait y avoir quelque chose avant. Tu l'a mis en tout premier, avant tout code html ou code PHP produisant de l'html ? même un echo " "; suffit à faire bugger.

Après, cela dépend du serveur. Wamp par exemple acceptait les redirections même avec plein d'HTML avant, mais j'ai eu une mauvaise surprise quand j'ai du héberger mon site sur OVH qui lui ne laissait pas passer

Sinon, pour le formulaire, je ne sait pas si tu as bien compris, mais les données sont envoyées (par POST ou GET) à la page que tu précise dans l'attribut action.
Donc il faut tout simplement mettre le code de traitement dans la page cible ...
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h50.


 
 
 
 
Partenaires

Hébergement Web