IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Traitement des données sur une checkbox - Formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    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 : 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
    //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

  2. #2
    Invité
    Invité(e)
    Par défaut
    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 !
    Dernière modification par Invité ; 06/08/2011 à 11h04.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Un quiproquo est un malentendu survenu au cours d'un échange de paroles.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    Bonjour à tous,

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


    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
    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.

  6. #6
    Invité
    Invité(e)
    Par défaut
    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 ?)
    Dernière modification par Domi2 ; 09/08/2011 à 07h09.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Peux-tu mettre les codes "après séparation" des différentes pages (+nom des pages) ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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 : 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
    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 : 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
    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";
    		}
     
     
    ?>

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 -->

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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...).

  12. #12
    Invité
    Invité(e)
    Par défaut
    Relis mon précédent message
    Avec l'"include", c'est exactement comme si les scripts étaient sur une seule et même page.
    + modifier l'"action" du form

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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".

  14. #14
    Invité
    Invité(e)
    Par défaut
    Il ne faut donc pas écrire :
    <form method="post" action="traitement.php">
    mais :
    <form method="post" action="formulaire.php">
    !!!

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Points : 34
    Points
    34
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Traitement des valeurs d'une CheckBox
    Par Alex70 dans le forum Langage
    Réponses: 12
    Dernier message: 18/04/2007, 16h38
  2. récupérer des données sur une clef USB
    Par mullger dans le forum Périphériques
    Réponses: 6
    Dernier message: 25/09/2006, 18h38
  3. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 09h08
  4. [PHP-JS] Traitement des données dans une autre page...
    Par sekiryou dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2006, 09h06
  5. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo