Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 05/08/2011, 19h40   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Par défaut Traitement des données sur une checkbox - Formulaire

Bonjour à tous,

J'ai créé un formulaire avec trois tables :
- une table formulaire (avec un id, un nom, ...),
- une table intermédiaire nommée siteformulaire (avec id_formulaire et id_site)
- une table site (qui contient un id et un nom), cette dernière étant reliée à une checkbox de mon formulaire.

Je souhaite effectuer une requête qui met à jour automatiquement les champs de la checkbox par rapport aux données dans la table site.
Exemple : si dans la table site, il y a deux noms affectés, il sera affiché dans le formulaire deux cases checkbox avec leur nom.

Je souhaite obtenir le résultat suivant dans la table site formulaire :

* Si un utilisateur rentre deux données, on aura le résultat suivant :
- id_formulaire = 1 id_site = 1 (=>"Internet")
- id_formulaire = 1 id_site = 2 (=>"Presse")

* Si un deuxième utilisateur rentre ses données, on aura le résultat suivant :
- id_formulaire = 2 id_site = 2 (=>"Presse")
- id_formulaire = 2 id_site = 3 (=>"Autres")

De plus je souhaiterais pouvoir afficher les noms affectés à la checkbox lorsque l'utilisateur coche telle ou telle case de la checkbox.

J'ai essayé de convenir à cet objectif sans pouvoir y parvenir. Voici mon 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
//Partie formulaire
 
		<tr>
			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
			<td>
 
			<?php foreach($aSitesForm as $iSite => $sSite){ ?>
				<input type="checkbox" name="site[]" value="<?php echo $iSite; ?>" /> <label><?php echo $sSite; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
//_______________________________________________________
 
 
//Partie requête
 
		    $sql = "INSERT INTO formulaire(id, nom, prenom, adresse, code_postal, ville, telephone, fax, email, client, devis, contact) 
		    VALUES('','$nom','$prenom','$adresse','$code_postal','$ville','$telephone','$fax','$email', '$client', '$devis', '$contact')";
 
   			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
    		$id_formulaire = mysql_insert_id();// on récupère l'id_formulaire qui vient d'être généré
 
		if(is_array($aSite)){ // table site
		foreach($aSite as $iSite){
 
	        $sql = "INSERT INTO siteformulaire(id_formulaire, id_site) VALUES ('$id_formulaire','$iSite')";
	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
 
 
		}
 
		$sSQL = "SELECT * FROM site ORDER BY n_site";  
		$qSite = mysql_query($sSQL);
 
		$aSitesForm = array(); // table siteformulaire
	while($aSite = mysql_fetch_assoc($qSite)){  // recherche id et nom trouvé dans la table site
 
		//$aSite=array($iSite=>$sSite);
		$aSitesForm[$aSite['id']] = $aSite['n_site']; // lie id avec nom de la table site
 
		}
 
 
//____________________________________
 
 
//Partie affichage
 
    	echo '<b>Vous connaissez le site :</b><ul>';
 
    foreach($aSitesForm as $iSite){ //on insère pour chaque id_site
 
    	echo '<li>'.$aSitesForm[$iSite].'</li>';
    }
    	echo '</ul><br />';
N'hésitez pas à me faire part de vos remarques.

Merci
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 21h17   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
il faut dire que tu nous compliques la vie :
- appeler tes tables (de la BdD) "site" et "formulaire", avec des identifiants id_site et id_formulaire,
- avoir plusieurs formulaires (<form> donc) ... identifiés ... id="id-formulaire" (?)
- ($aSitesForm as $iSite => $sSite) - <... name="site[]" .....
- ($aFormsForm as $iForm => $sForm) - <... name="form[]" .....

Bref, ca sent les quiproquo (quiproqui ?) à gogo !
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/08/2011, 12h37   #3
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Bonjour,
il faut dire que tu nous compliques la vie :
- appeler tes tables (de la BdD) "site" et "formulaire", avec des identifiants id_site et id_formulaire,
- avoir plusieurs formulaires (<form> donc) ... identifiés ... id="id-formulaire" (?)
- ($aSitesForm as $iSite => $sSite) - <... name="site[]" .....
- ($aFormsForm as $iForm => $sForm) - <... name="form[]" .....

Bref, ca sent les quiproquo (quiproqui ?) à gogo !
Bonjour,

Un seul formulaire est géré. Il y a bien un formulaire complet mais je n'ai repris que la partie checkbox.
La table formulaire de ma bdd fait référence à tous les champs du formulaire qui sont de type texte (ou similaire).
La table site fait également partie du formulaire (en référence aux données de la checkbox "Comment avez vous connu ce site ?") mais comme il s'agit de données de type tableau je l'ai lié à la table formulaire avec une table intermédiaire nommée site formulaire. Cette dernière a un id_formulaire qui renseigne l'id de la table formulaire et un id_site qui renseigne l'id de la table site.
Lorsqu'il y a un "a", un "s" ou un "i" devant le "$" d'une clé, d'une valeur, ... cela fait référence eu type de ces données ("a" pour array, "i" pour integer et "s" pour string).

S'il y a d'autres points qui vous paraissent peu clairs, dites le moi merci.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 14h36   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Un quiproquo est un malentendu survenu au cours d'un échange de paroles.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 00h07   #5
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Bonjour à tous,

Pour en revenir au code que j'ai effectué (et qui marchait) juste avant celui présenté au dessus, le voici...


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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
 
 
<?php 
include ("configuration.php");// connexion à la base de données
 
 
	//déclaration des variables à poster dans le formulaire
	$id=$_POST['id'];
	$nom=$_POST['nom'];
	$prenom=$_POST['prenom'];
	$adresse=$_POST['adresse'];
	$code_postal=$_POST['code_postal'];
	$ville=$_POST['ville'];
	$telephone=$_POST['telephone'];
	$fax=$_POST['fax'];
	$email=$_POST['email'];
	$client=$_POST['client'];
	$aSite=$_POST['site'];
	$aDemande=$_POST['demande'];
	$devis=$_POST['devis'];
	$contact=$_POST['contact'];
 
 
	//************* AFFICHAGE DES DONNEES SUITE A LA SAISIE DU FORMULAIRE ******************
 
    echo "Bonjour !"."</br>"."</br>";
 
    if (isset($nom) && isset($prenom) && isset($adresse) && isset($code_postal) && isset($ville) && isset($telephone) && isset($fax) 
    && isset($email) && isset($client) && isset($aSite) && isset($aDemande) && isset($devis) && isset($contact)){
 
    // VOS COORDONNEES
 
    echo "Vous vous appelez " .$nom. " ".$prenom. " !"."</br>";
	echo "Votre adresse est " .$adresse. " ".$code_postal. " ".$ville. " !"."</br>";
	echo "Votre téléphone est ".$telephone. " !"."</br>";
	echo "Votre fax est ".$fax. " !"."</br>";
	echo "Votre email est ".$email. " !"."</br>";
 
	// VOS INFORMATIONS
 
 
	if ($client!="Oui")
	echo "Vous n'êtes pas un client de l'entreprise"."</br>";
	else echo "Vous êtes un client de l'entreprise"."</br>";
 
			$sSQL = "SELECT n_site FROM site ORDER BY n_site" ;
			$qSite = mysql_query($sSQL);
 
    echo '<b>Vous connaissez le site :</b><ul>';
 
    foreach($aSite as $n_site){
    	$aData = mysql_fetch_assoc($qSite);
        echo '<li>'.$aData['n_site'].'</li>';
    }
    echo '</ul><br />';
 
    		$sSQL = "SELECT n_demande FROM demande ORDER BY n_demande" ;
			$qDemande = mysql_query($sSQL);
 
    echo '<b>Votre demande de site :</b><ul>';
 
    foreach($aDemande as $n_demande){
    	$aData = mysql_fetch_assoc($qDemande);
        echo '<li>'.$aData['n_demande'].'</li>';
    }
    echo '</ul><br />';
 
    //VOS OPTIONS
 
    if ($devis!="Oui")
	echo "Vous ne souhaitez pas effectuer de demande de devis"."</br>";
	else echo "Vous avez effectué une demande de devis"."</br>";
 
	if ($contact!="Oui")
	echo "Vous ne souhaitez pas effectuer de demande de contact"."</br>";
	else echo "Vous avez effectué une demande de contact"."</br>";
 
    echo "</br></br>"."Vos données ont été envoyées au webmaster !"; 
    }
    else{
    echo "Vous n'avez pas rempli tous les champs !"."</br>";
    echo "Vos données n'ont pu être envoyées au webmaster !"; 
    }
 
		//**************************** ENVOI DES DONNEES DANS LA BASE **************************
 
    $sql = "INSERT INTO formulaire(id, nom, prenom, adresse, code_postal, ville, telephone, fax, email, devis, contact) 
    VALUES('','$nom','$prenom','$adresse','$code_postal','$ville','$telephone','$fax','$email', '$devis', '$contact')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
  	$id_formulaire = mysql_insert_id();// on récupère l'id_formulaire qui vient d'être généré
 
	if(isset($aSite)){
		foreach($aSite as $n_site){
 
       $sql = "INSERT INTO siteformulaire(id_formulaire, id_site) VALUES ('$id_formulaire','$n_site')";
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
			echo "<pre>";
    	print_r($aSite);
    	echo "</pre>";
    	die();
 
		}
 
		if(isset($aDemande)){
			foreach($aDemande as $n_demande){
 
		$sql = "INSERT INTO demandeformulaire(id_formulaire, id_demande) VALUES ('$id_formulaire','$n_demande')";
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
		}
 
?>
 
 
<form method="post" action="essai.php">
 
 
	<fieldset style="margin:50px">
	<legend><b>Vos coordonnées</b></legend>
	<table>
		<tr>
			<td width="220"><label for="nom">Nom :</label></td>
			<td><input type="text" name="nom" value="<?php if(isset($nom)){htmlentities($nom, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="prenom">Prénom :</label></td>
			<td><input type="text" name="prenom" value ="<?php if(isset($prenom)){htmlentities($prenom, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="adresse">Adresse :</label></td>
			<td><input type="text" name="adresse" value ="<?php if(isset($adresse)){htmlentities($adresse, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="code_postal">Code postal :</label></td>
			<td><input type="text" name="code_postal" value="<?php if(isset($code_postal)){htmlentities($code_postal, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="ville">Ville :</label></td>
			<td><input type="text" name="ville" value="<?php if(isset($ville)){htmlentities($ville, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="telephone">Téléphone :</label></td>
			<td><input type="text" name="telephone" value="<?php if(isset($telephone)){htmlentities($telephone, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="fax">Fax :</label></td>
			<td><input type="text" name="fax" value="<?php if(isset($fax)){htmlentities($fax, ENT_QUOTES);}?>"/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="email">Email :</label></td>
			<td><input type="text" name="email" value="<?php if(isset($email)){htmlentities($email, ENT_QUOTES);}?>"/></td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Vos informations</b></legend>
	<table>
 
		<tr>
			<td width="270"><label for="client[]">Souhaitez vous une demande de contact ?</label></td>
			<td>
			<input type="radio" name="client[]" value="Oui"/> <label for="oui">Oui</label>
			<input type="radio" name="client[]" value="Non"/> <label for="non">Non</label>
			</td>
		</tr>
 
		<tr>
			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
			<td>
 
			<?php 
			$sSQL = "SELECT * FROM site ORDER BY n_site";
			$qSite = mysql_query($sSQL);
			?>
 
			<?php while($aData = mysql_fetch_assoc($qSite)){ ?>
				<input type="checkbox" name="site[]" value="<?php echo $aData['id']; ?>" /> <label><?php echo $aData['n_site']; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
		<tr>
			<td width="270"><label for="demande[]">Quelles sont vos demandes de site ?</label></td>
			<td>
 
			<?php
			$sSQL = "SELECT * FROM demande ORDER BY n_demande";
			$qDemande = mysql_query($sSQL);
			?>
 
			<?php while($aData = mysql_fetch_assoc($qDemande)){ ?>
				<input type="checkbox" name="demande[]" value="<?php echo $aData['id']; ?>" /> <label><?php echo $aData['n_demande']; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Vos options</b></legend>
	<table>
 
		<tr>
			<td width="220"><label for="devis[]">Demande de devis :</label></td>
			<td>
			<input type="radio" name="devis[]" value="Oui"/> <label for="oui">Oui</label>
			<input type="radio" name="devis[]" value="Non"/> <label for="non">Non</label>
			</td>
		</tr>
 
		<tr>
			<td width="220"><label for="contact[]">Demande de contact :</label></td>
			<td>
			<input type="radio" name="contact[]" value="Oui"/> <label for="oui">Oui</label>
			<input type="radio" name="contact[]" value="Non"/> <label for="non">Non</label>
			</td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Opérations</b></legend>
	<table>
		<tr>
			<td width="250"><label for="valider"></label></td>
			<td><input type="submit" value="Valider" name="valider"/></td>
			<td><input type="reset" value="Effacer" name="valider"></td>
		</tr>
	</table>
	</fieldset>
 
</form>
Remarque : Dans le code, vous pourrez voir non pas une checkbox mais bien deux à savoir une pour la table "demande" et l'autre pour la table "site", cependant l'exemple reste le même. A donc été créé une table intermédiaire nommée "demandeformulaire" (avec id_formulaire et id_demande) et une table "demande" (avec id et n_demande).

En fait, si je rassemble tout le code du formulaire sur un seule page (comme présenté ci dessus) je n'ai pas de problème au niveau des requêtes pour les deux tables intermédiaires ("demandeformulaire" et "site") mais si je sépare mon code sur deux fichiers pour pouvoir séparer la partie formulaire de la partie traitement (comme vu en premier message de cette discussion) seule la requête pour la table "siteformulaire" est prise en compte et je voudrais bien évidemment que la requête concernant la table "demandeformulaire" soit également fonctionnelle. Je ne vois vraiment pas comment faire et je ne maîtrise vraiment pas l'association de requêtes avec boucle while, mysql_fetch_assoc et foreach. On m'a dit d'utiliser ce moyen pour pouvoir dissocier les requêtes de chaque checkbox mais je ne vois vraiment pas comment faire. Merci de bien vouloir m'éclairer.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 08h17   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
D'abord, bravo et merci pour ton codage clair, propre, commenté et bien indenté.
Quelques remarques :
-> sort le code html du code php
-> mauvaise utilisation des "label for=" (for -> id, pas name)
-> aucune "gestion d'erreur" (ne serait-ce que la validité de l'email)
-> tes requêtes ne sont PAS DU TOUT protégées contre les injections SQL ! -> mysql_real_escape_string()

Sinon ... si ton code ci-dessus fonctionne, quel est le problème ?
Le fait de "séparer" traitement et formulaire ne change pas grand'chose ...
Ou je ne comprends pas ce que tu entends par "séparer" (sur 2 pages différentes ?)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 09h08   #7
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Bonjour,
D'abord, bravo et merci pour ton codage clair, propre, commenté et bien indenté.
Quelques remarques :
-> sort le code html du code php
-> mauvaise utilisation des "label for=" (for -> id, pas name)
-> aucune "gestion d'erreur" (ne serait-ce que la validité de l'email)
-> tes requêtes ne sont PAS DU TOUT protégées contre les injections SQL ! -> mysql_real_escape_string()

Sinon ... si ton code ci-dessus fonctionne, quel est le problème ?
Le fait de "séparer" traitement et formulaire ne change pas grand'chose ...
Ou je ne comprends pas ce que tu entends par "séparer" (sur 2 pages différentes ?)
Merci pour les conseils. Oui effectivement séparer la partie formulaire (html) et la partie traitement (php) dans deux fichiers différents. Apparemment mon code sur une seule page (mis en dernier) fonctionnerait mais c'est par hasard car s'il est dissocier en deux fichiers certains liens ne se font plus donc j'en déduis que mon code est très mal construit partie requête et au niveau des checkbox dans la partie formulaire.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h14   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Peux-tu mettre les codes "après séparation" des différentes pages (+nom des pages) ?
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 09h22   #9
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
J'ai remis le code en deux parties. Dans la partie traitement les parties commentées fonctionnent mais celles ou il n'y a rien me pose problème mais normalement c'est la bonne méthode (c'est un pro qui m'a donné ce code sans m'expliquer davantage comment il l'a construit)

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 
//FICHIER FORMULAIRE
formulaire.php
 
<?php include 'traitement.php'; ?>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Formulaire</title>
</head>
<body>
 
<form method="post" action="traitement.php">
 
	<fieldset style="margin:50px">
	<legend><b>Vos coordonn&eacute;es</b></legend>
	<table>
		<tr>
			<td width="220"><label for="nom">Nom :</label></td>
			<td><input type="text" name="nom" value=""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="prenom">Pr&eacute;nom :</label></td>
			<td><input type="text" name="prenom" value =""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="adresse">Adresse :</label></td>
			<td><input type="text" name="adresse" value =""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="code_postal">Code postal :</label></td>
			<td><input type="text" name="code_postal" value=""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="ville">Ville :</label></td>
			<td><input type="text" name="ville" value=""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="telephone">T&eacute;l&eacute;phone :</label></td>
			<td><input type="text" name="telephone" value=""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="fax">Fax :</label></td>
			<td><input type="text" name="fax" value=""/></td>
		</tr>
 
		<tr>
			<td width="220"><label for="email">Email :</label></td>
			<td><input type="text" name="email" value=""/></td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Vos informations</b></legend>
	<table>
 
		<tr>
			<td width="270"><label for="client">Souhaitez vous une demande de contact ?</label></td>
			<td>
			<input type="radio" name="client" id="client_oui" value="1"/> <label for="client_oui">Oui</label>
			<input type="radio" name="client" id="client_non" value="0"/> <label for="client_non">Non</label>
			</td>
		</tr>
 
		<tr>
			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
			<td>
 
			<?php foreach($aSitesForm as $iSite => $sSite){ ?>
				<input type="checkbox" name="site[]" value="<?php echo $iSite; ?>" /> <label><?php echo $sSite; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
		<tr>
			<td width="270"><label for="demande[]">Quelles sont vos demandes de site ?</label></td>
			<td>
 
			<?php foreach($aDemandesForm as $iDemande => $sDemande){ ?>
				<input type="checkbox" name="demande[]" value="<?php echo $iDemande; ?>" /> <label><?php echo $sDemande; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Vos options</b></legend>
	<table>
 
		<tr>
			<td width="220"><label for="devis">Demande de devis :</label></td>
			<td>
			<input type="radio" name="devis" id="devis_oui" value="1"/> <label for="devis_oui">Oui</label>
			<input type="radio" name="devis" id="devis_non" value="0"/> <label for="devis_non">Non</label>
			</td>
		</tr>
 
		<tr>
			<td width="220"><label for="contact">Demande de contact :</label></td>
			<td>
			<input type="radio" name="contact" id="contact_oui" value="1"/> <label for="contact_oui">Oui</label>
			<input type="radio" name="contact" id="contact_non" value="0"/> <label for="contact_non">Non</label>
			</td>
		</tr>
 
	</table>
	</fieldset>
 
	<fieldset style="margin:50px">
	<legend><b>Op&eacute;rations</b></legend>
	<table>
		<tr>
			<td width="250"><label for="valider"></label></td>
			<td><input type="submit" value="Valider" name="valider"/></td>
			<td><input type="reset" value="Effacer"></td>
		</tr>
	</table>
	</fieldset>
 
</form>
 
 
</body>
</html>
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
 
traitement.php
//FICHIER TRAITEMENT
 
<?php 
 
include ("configuration.php");// connexion à la base de données
 
	//Déclaration des variables à poster dans le formulaire
 
$id=$_POST['id'];
 
	$nom=$_POST['nom'];
	if(isset($nom)){htmlentities($nom, ENT_QUOTES);}
 
	$prenom=$_POST['prenom'];
	if(isset($prenom)){htmlentities($prenom, ENT_QUOTES);}
 
	$adresse=$_POST['adresse'];
	if(isset($adresse)){htmlentities($adresse, ENT_QUOTES);}
 
	$code_postal=$_POST['code_postal'];
	if(isset($code_postal)){htmlentities($code_postal, ENT_QUOTES);}
 
	$ville=$_POST['ville'];
	if(isset($ville)){htmlentities($ville, ENT_QUOTES);}
 
	$telephone=$_POST['telephone'];
	if(isset($telephone)){htmlentities($telephone, ENT_QUOTES);}
 
	$fax=$_POST['fax'];
	if(isset($fax)){htmlentities($fax, ENT_QUOTES);}
 
	$email=$_POST['email'];
	if(isset($email)){htmlentities($email, ENT_QUOTES);}
 
	$client=$_POST['client'];
 
	$aSite=$_POST['site'];
	$aDemande=$_POST['demande'];
	$devis=$_POST['devis'];
	$contact=$_POST['contact'];
 
	/**
     * 
     * // TRAITEMENT DES DONNEES DU FORMULAIRE
     * 
     * Si formulaire posté Alors
     * 		Si données valide Alors
     * 			enregistrer en base de donnée et dire que ça martche uniquement le message, le formulaire doit disparaitre ! 
     * 		Sinon
     * 			Afficher le formulaire avec les valeurs que l'utilisateurs a inscrites + message que tous les champs ne sont pas valides
     * 		Fin Si
     * Fin Si
     * 
     */
 
	if(isset($_POST['valider'])){
 
	if (isset($nom) && isset($prenom) && isset($adresse) && isset($code_postal) && isset($ville) && isset($telephone) && isset($fax) 
    && isset($email) && isset($client) && isset($devis) && isset($contact)){
 
		$etat='envoi'; // envoi des données à la bdd avec message de validation
	}
	else{ // toutes les champs n'ont pas été remplis donc on affiche le récapitulatif du formulaire
 
      // VOS COORDONNEES
 
		echo "Vous vous appelez " .$nom. " ".$prenom. " !"."</br>";
		echo "Votre adresse est " .$adresse. " ".$code_postal. " ".$ville. " !"."</br>";
		echo "Votre téléphone est ".$telephone. " !"."</br>";
		echo "Votre fax est ".$fax. " !"."</br>";
		echo "Votre email est ".$email. " !"."</br>";
 
      // VOS INFORMATIONS
 
		//client
	if ($client!="Oui"){
		echo "Vous n'êtes pas un client de l'entreprise"."</br>";
	}
	else{ 
		echo "Vous êtes un client de l'entreprise"."</br>";
	}
 
	 	//site
    	echo '<b>Vous connaissez le site :</b><ul>';
 
    	// $aTableau['4'] = "par internet";
 
    foreach($aSitesForm as $iSite){ //on insère pour chaque id_site
 
    	echo '<li>'.$aSitesForm[$iSite].'</li>';
    }
    	echo '</ul><br />';
 
    	//demande
    	echo '<b>Votre demande de site :</b><ul>';
 
    foreach($aDemandesForm as $iDemande){
 
        echo '<li>'.$aDemandesForm[$iDemande].'</li>';
    }
    	echo '</ul><br />';
 
    //VOS OPTIONS
 
    	//devis
    if ($devis!="Oui"){
		echo "Vous ne souhaitez pas effectuer de demande de devis"."</br>";
    }
	else{
	 	echo "Vous avez effectué une demande de devis"."</br>";
	}   
		//contact
	if ($contact!="Oui"){
		echo "Vous ne souhaitez pas effectuer de demande de contact"."</br></br>";
	}
	else{
		echo "Vous avez effectué une demande de contact"."</br></br>";
		}
 
        echo 'Veuillez remplir tous les champs !';
 
		}
	}
 
	if($etat=='envoi'){ // si toutes les données sont remplies, envoi des données dans la bdd 
 
 
 
		    $sql = "INSERT INTO formulaire(id, nom, prenom, adresse, code_postal, ville, telephone, fax, email, client, devis, contact) 
		    VALUES('','$nom','$prenom','$adresse','$code_postal','$ville','$telephone','$fax','$email', '$client', '$devis', '$contact')";
 
   			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
    		$id_formulaire = mysql_insert_id();// on récupère l'id_formulaire qui vient d'être généré
 
 
    	//___________________________________________________________________	
 
	 /**
 * Champs multiples du formulaire
 */
 
 
		if(is_array($aSite)){ // table site
		foreach($aSite as $iSite){
 
	        $sql = "INSERT INTO siteformulaire(id_formulaire, id_site) VALUES ('$id_formulaire','$iSite')";
	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
 
 
		}
 
		//---------------------------------------------------------------
 
		$sSQL = "SELECT * FROM site ORDER BY n_site";  
		$qSite = mysql_query($sSQL);
 
		$aSitesForm = array(); // table siteformulaire
	while($aSite = mysql_fetch_assoc($qSite)){  // recherche id et nom trouvé dans la table site
 
		//$aSite=array($iSite=>$sSite);
		$aSitesForm[$aSite['id']] = $aSite['n_site']; // lie id avec nom de la table site
 
		}
 
 
		//__________________________________________________________________
 
 
	if(is_array($aDemande)){ // table demande
		foreach($aDemande as $iDemande){
 
			$sql = "INSERT INTO demandeformulaire(id_formulaire, id_demande) VALUES ('$id_formulaire','n_demande')";
	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
 
		}
 
		//---------------------------------------------------------------
 
 
		$sSQL = "SELECT * FROM demande ORDER BY n_demande";
		$qDemande = mysql_query($sSQL);
 
		$aDemandesForm = array(); // table demandeformulaire
	while($aDemande = mysql_fetch_assoc($qDemande)){  // recherche id et nom trouvé dans la table demande
 
		//$aDemandes=array($iDemande=>$sDemande);
		$aDemandesForm[$aDemande['id']] = $aDemande['n_demande']; // lie id avec nom de la table demande
 
		}
 
 
    		echo "les données sont enregistrées dans la base de données";
		}
 
 
?>
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h42   #10
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Code :
	<?php include 'traitement.php'; ?>
"traitement.php" est en "include" dans "formulaire.php" !
-> "traitement" et "formulaire" ne sont donc pas séparés !
Seuls les scripts sont sur 2 pages différentes.
Avec l'"include", c'est exactement comme si les scripts étaient sur une seule et même page.

Code :
1
2
3
4
5
6
7
8
Il ne faut donc pas écrire :
	<form method="post" action="traitement.php">
mais :
	<form method="post" action="formulaire.php">
ou juste :
	<form method="post" action=""><!-- meme page -->
ou encore :
	<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><!-- meme page -->
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 09h50   #11
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
"traitement.php" est en "include" dans "formulaire.php" !
-> "traitement" et "formulaire" ne sont donc pas séparés !
Seuls les scripts sont sur 2 pages différentes.
Avec l'"include", c'est exactement comme si les scripts étaient sur une seule et même page.
Oui séparé dans le sens ou ils sont dans deux fichiers ce que j'ai certifié plus haut. Mais du coup le code ne marche plus, c'est une chance si j'ai pu le faire fonctionner dans un seul fichier. Je sais que cela ne change rien si les deux fichiers sont joint mais pour la partie requête cela pose problème. Je pense que l'on m'a dit de faire comme cela car sinon il y a des interférences entre les requêtes pour la table "site" et la table "demande" car elles sont construites sur le même modèle (certains noms comme $id_formulaire à la ligne 150 et 178 sont identiques donc du coup la requête va rechercher l'info demandée pour la table "site" mais ne la répète pas pour la table "demande", etc...).
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h54   #12
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Relis mon précédent message
Citation:
Avec l'"include", c'est exactement comme si les scripts étaient sur une seule et même page.
+ modifier l'"action" du form
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 10h09   #13
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Oui je sais bien que l'include permet cela mais c'est le fait de répéter certaines informations je pense qui engendre un problème mais je ne sais pas comment rectifier ce défaut.

Dans mon 5ème message tu verras dans la partie requête à la ligne 46 à 47 quasiment le même code qu'à la ligne 185 à 186 concernant les tables "siteformulaire" et "site".
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 11h06   #14
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Il ne faut donc pas écrire :
Citation:
<form method="post" action="traitement.php">
mais :
Citation:
<form method="post" action="formulaire.php">
!!!
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 11h35   #15
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Il ne faut donc pas écrire :

mais :

!!!
oui désolé, c'est en renommant mes fichiers que j'ai fait l'erreur. Sinon j'ai pu résoudre mon problème bien que le code reste complexe. C'était un problème de nommage de variables, lesquelles n'étaient pas bien distinguées lors du traitement.

Encore merci
kenjiendo 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 12h43.


 
 
 
 
Partenaires

Hébergement Web