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

Langage PHP Discussion :

empêcher l'enregistrement dans ma bdd de données non valides


Sujet :

Langage PHP

  1. #41
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    Bien sûr sans variable de session..... heureusement les erreurs peuvent être bénéfiques mais sans votre collaboration, je resterai planté comme un légume.
    Tout semble rentré dans l'ordre si ce n'est un petit problème lorsque dans mon formulaire de base, je clic sur envoyer pour aller dans la page confirmation.php pour confirmer ou corriger, il faut toujours insister lourdement (5à 6 clics) pour enfin parvenir sur confirmation.php. Il semblerait qu'il ne trouve pas directement le chemin.
    Est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name = "envoyer" value = "Envoyer" type = "submit"/>
    convient dans ce cas?

    Ci-joint le formulaire de base final où j'ai apporter certaines modifications:
    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
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
     
    if (isset($_POST['envoyer'])) 
    {
     
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
     
     
        $message = array();// Pour enregistrer les messages d'information
        $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
     
     
     	$_SESSION['post_form']['cat'] = $cat = isset($_POST['cat']) && trim($_POST['cat']) != '' ? Verif_magicquotes(trim($_POST['cat'])) : null;  
     
     	$_SESSION['post_form']['selection'] = $selection = isset($_POST['selection']) && trim($_POST['selection']) != '' ? Verif_magicquotes(trim($_POST['selection'])) : null;   
     
        $_SESSION['post_form']['nom'] = $nom = isset($_POST['nom']) && trim($_POST['nom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['nom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['prenom'] = $prenom = isset($_POST['prenom']) && trim($_POST['prenom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['prenom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['numtel'] = $numtel = isset($_POST['numtel']) && trim($_POST['numtel']) != '' ? Verif_magicquotes(trim($_POST['numtel'])) : null;
     
        $_SESSION['post_form']['codepostal'] = $codepostal = isset($_POST['codepostal']) && trim($_POST['codepostal']) != '' ? Verif_magicquotes(trim($_POST['codepostal'])) : null;
     
    	$_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['ville']))) : null; 
     
     
     
    	if (!isset($cat))
    	    {
    		     $message[] = 'Veuillez choisir une catégorie';
    		}  
     
     
     
    	if (!isset($selection))
    	    {
    		     $message[] = 'Veuillez choisir une option dans la seconde liste déroulante';
    		}  
     
     
     
        if (isset($nom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$nom))     
                    {
                        $message[] = 'Le nom "'.$nom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }
            }
        else    
            {
                 $message[] = 'Veuillez indiquer votre nom'; 
            }
     
     
     
        if (isset($prenom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$prenom)) 
                    {
                        $message[] = 'Le prénom "'.$prenom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }  
            }
        else    
            { 
                $message[] = 'Veuillez indiquer votre prénom';
            }
     
     
     
        if (isset($numtel))     
            {
                if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $numtel)))
                    {
                        $message[] = 'Le numéro de télélphone "'.$numtel.'" n\'est pas valide. Recommencez !';   
                    }
            }
        else
            {
                $message[] = 'Veuillez indiquer un numéro de téléphone';        
            }
     
     
     
    	if (isset($codepostal))
    	    {
    			if (! preg_match('#^[0-9]{4}$#',$codepostal)) 
                    {		     
    					$message[] = 'Le code postal doit être un nombre de 4 chiffres';
    				}
    		}
    	else
    		{
    			$message[] = 'Veuillez indiquer le code postal';
    		}  
     
     
     
    	if (!isset($ville))
    	    {
    		     $message[] = 'Veuillez indiquer la ville';
    		}  
     
     
     
        if (isset($message) && count($message) == 0)
            {
                //Effacement éventuel des variables de session (ou ne pas effacer si l'on veut garder les champs de formulaires remplis suite à une redirection sur cette même page)
                //unset($_SESSION['post_form']);
     
     
               // Connexion à la base de données: voir la page confirmation.php
           if (isset($_POST["envoyer"]))
    {
    	header('Location: confirmation.php');// envoi à la page confirmation
    	exit;
    }   
    					//redirection vers la page d'index
    					//header('Location: confirmation.php');
    				//	exit;
    }
    }               
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
    <title>Listes li&eacute;es HTML JAVASCRIPT</title>
     
    <script type="text/javascript">
    <!--
    function Affiche_liste(id_ensemble_select,id_select)
    {
            // Sélection du bloc contenant les sélections liées (id = "categorie" dans notre exemple)
            var id_ensemble_select = document.getElementById(id_ensemble_select);
     
            // Sélection de la sélection liée
            var id_select = document.getElementById(id_select);
     
            if(id_ensemble_select)
    			{
    				//Initialisation d'une variable pour contenir un tableau.
    				var tab = new Array();
     
    				// Cherche les balises select inlues dans le bloc (id = "categorie" dans notre exemple) contenant les sélections liées  et les retourne dans un tableau
    				tab = id_ensemble_select.getElementsByTagName('select');
     
    				var tablength = tab.length;
     
    				// Liste les éléments du tableau
    				for (i=0; i < tablength; i++)        
    					{
    						// Met les selects en disable = true et les cache avec style.display = 'none'
    						tab[i].disabled = true;
    						if(id_select) tab[i].style.display = 'none';// si select est vide on ne fait rien
    					}
     
    				// Met la sélection liée sélectionné en disable = false et l'affiche avec style.display = 'inline'
    				if(id_select)
    					{
    						id_select.disabled = false;
    						id_select.style.display = 'inline'; 
    					}     
    			}
    }
     
     
     
    // Affiche la liste sélectionnée et l'élément sélectionné au rechargement de la page
    function Affiche_liste_selected(id_ensemble_select, value_select_1, value_select_2)
    {
    	//sélection de l'élément, avec getElementById, de la catégorie sélectionnée
    	var id_selection = document.getElementById(value_select_1);
     
    	if(id_selection)
    		{ 
    			// Appel à la fonction Affiche_liste pour afficher la sous catégorie correspondante et mettre les autres en disabled = true; 
    			Affiche_liste(id_ensemble_select,value_select_1);
     
    			var id_selectionlength = id_selection.length;
     
    			//liste les éléments du tableau
    			for (i=0; i < id_selectionlength; i++)        
    				{
    					// on regarde si l'option du select est égal à la valeur de l'option 2 sélectionnée
    					if (id_selection.options[i].value == value_select_2)
    						{	
    							// Si oui on le sélectionne
    							id_selection.options[i].selected = true;		
    						}
    				}	
    		}
    }
     
     
    // fonction générique permettant un appel aux fonctions javascript dès le chargement de la page.
    function AddLoad_AFS(func) {
     
    		if (window.addEventListener)
    			{
    				window.addEventListener("load", func, false);
    			}
    		else if (document.addEventListener)
    			{
    				document.addEventListener("load", func, false);
    			}
    		else if (window.attachEvent)
    			{
    				window.attachEvent("onload", func);
    			}
    }
     
     
    <?php  if (isset($_SESSION['post_form']['cat']))
    {
    $value_select_1 = $_SESSION['post_form']['cat'];
    $value_select_2 = isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : null;
     ?>
    // Appel à la fonction générique de cbargement onload qui appelle la fonction Affiche_liste_selected avec comme arguments l'id du bloc contenant les sélections liées, la valeur de la catégorie sélectionnée (= à l'id du bloc du select lié) et la valeur de l'option sélectionnée dans la deuxième liste.
    AddLoad_AFS(function(){Affiche_liste_selected('categorie','<?php echo $value_select_1?>','<?php echo $value_select_2?>')});
     
    <?php } ?>
    -->
    </script>
    <style type="text/css">
    body
    {
    	font-family:Arial, Helvetica, sans-serif;
    	font-size:1em;
    }
     
    p, input, select, form, option 
    {
    	padding:0;
    	margin:0;
    }
     
    #form_identification p
    {
    	padding:0.5em;
    }
     
    /*.categorie {
    	width:1.2em;
    	padding:0;
    	margin-right: 1em;
    }
    */
    #categorie, #liste1
    {
        height:1.5em;
    	display:inline;
    }
     
    #categorie select
    {
        display:none;
    }
     
    </style>
     
    </head>
     
    <body>
     
    <div style="width:48em;margin:auto; border:1px solid black;padding:1em">
    	<form action="#" method="post" id = "form_identification">
     
    		<p style="font-size:0.9em; font-style:italic;margin-bottom:1em">Cochez une des cat&eacute;gories ci-dessous, puis une option dans la liste qui s'affichera en fonction de votre choix : </p>
     
    		<div>
    			<p id="liste1"><!--
    				<label for="metier">Metiers</label>
    				<input type="radio" id = "metier" name = "cat" value = "Metiers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'checked = "checked"'; ?> />
     
    				<label for="particulier">Particuliers</label>
    				<input type="radio" id = "particulier" name = "cat" value = "Particuliers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'checked = "checked"'; ?> />
     
    				<label for="jardin">Jardins</label>
    				<input type="radio" id = "jardin" name = "cat" value = "Jardins" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'checked = "checked"'; ?> />
     
    				<label for="commerce">Commerces</label>
    				<input type="radio" id = "commerce" name = "cat" value = "Commerces" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'checked = "checked"'; ?> /> 
     
    				<label for="maison">Maisons</label>
    				<input type="radio" id = "maison" name = "cat" value = "Maisons" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'checked = "checked"'; ?> />
     
                   -->                                                    
     
    				<select name = "cat" class = "categorie" onchange = "Affiche_liste(this.className,this.value)" />
     
    				<option value = "" >«Choisissez»</option>
    				<option value = "Metiers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'selected = "selected"'; ?> >Metiers</option>
    				<option value = "Particuliers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'selected = "selected"'; ?> >Particuliers</option>
    				<option value = "Jardins" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'selected = "selected"'; ?> >Jardins</option>
    				<option value = "Commerces" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'selected = "selected"'; ?> >Commerces</option>  
    				<option value = "Maisons" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'selected = "selected"'; ?> >Maisons</option>
     
    				</select>
     
    			</p>
     
     
     
    			<p id = "categorie">     
    				<select name = "selection" id = "Metiers" style= "display:inline" disabled="disabled"> 
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Horticulteur">Horticulteur</option>
    					<option value = "Plombier">Plombier</option>
    					<option value = "Electricien">Electricien</option>
    					<option value = "Boulanger">Boulanger</option>        
     
    				</select>
     
     
    				<select name = "selection" id = "Particuliers">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente maison">Vente maison</option>
    					<option value = "Location maison">Location maison</option>
    					<option value = "Vente objet divers">Vente objet divers</option>
    					<option value = "Proposition de services">Proposition de services</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Jardins">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "EntrepriseJardin">EntrepriseJardin</option>
    					<option value = "Taille des haies">Tailles des haies</option>
    					<option value = "Pavage carrelage terrasse">Pavage carrelage terrasse</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Commerces">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente cadeaux">Vente cadeaux</option>
    					<option value = "Fleurs artificielles">Fleurs artificielles</option>
    					<option value = "Plantes vivaces">Plantes vivaces</option>
    					<option value = "Couronnes mortuaires">Couronnes mortuaires</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Maisons">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Décoration">D&eacute;coration</option>
    					<option value = "Peintre">Peintre</option>
    					<option value = "Tapissier">Tapissier</option>
    					<option value = "Renovation">Renovation</option>
     
    				</select>	
     
    			</p>   
    		</div> 
     
     
     
    		<div  style="margin-top:2em">  
    			<p>
    				<label for="nom"> Nom :</label>
    				<input type="text" id="nom" name="nom" value="<?php echo (isset($_SESSION['post_form']['nom'])) ? $_SESSION['post_form']['nom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="prenom"> Pr&eacute;nom :</label>
    				<input type="text" id="prenom" name="prenom" value="<?php echo (isset($_SESSION['post_form']['prenom'])) ? $_SESSION['post_form']['prenom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="numtel"> N&deg;de t&eacute;l&eacute;phone :</label>
    				<input type="text" id="numtel" name="numtel" value="<?php echo (isset($_SESSION['post_form']['numtel'])) ? $_SESSION['post_form']['numtel'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="codepostal"> Votre code postal :</label>
    				<input name="codepostal" id="codepostal" type="text" size="4" minlength= "4" maxlength="4" value="<?php echo (isset($_SESSION['post_form']['codepostal'])) ? $_SESSION['post_form']['codepostal'] : '' ?>" />
    			</p>       
     
    			<p>
    				<label for="ville"> Ville :</label>
    				<input type="text" id="ville" name="ville" value="<?php echo (isset($_SESSION['post_form']['ville'])) ? $_SESSION['post_form']['ville'] : '' ?>" />
    			</p>
     
    			<p style="margin-top:1.5em">
    			<input name = "envoyer" value = "Envoyer" type = "submit"/>
    			</p>
     
    		</div>
    	</form>
     
    	<div style="font-size:0.8em; font-weight:bold">
    	<?php
    	if(isset($_SESSION['post_form']['message']) && count($_SESSION['post_form']['message']) > 0)
    	{
    		foreach($_SESSION['post_form']['message'] as $value) echo '<p>- '.$value.'</p>';
    	}
    	?>
    	</div>
    </div>
     
    </body>
    </html>
    Bon dimanche, sincères remerciements
    Amicalement
    Claudine

  2. #42
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Bonjour,

    J'ai essayé ton code par un simple copié-collé et en testant je ne vois aucun problème. A chaque fois que le formulaire est correctement rempli on se dirige automatiquement (dès la première fois où il est correctement rempli) vers la page "confirmation.php".

    Juste une chose, mais cela ne cause pas de souci, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        if (isset($message) && count($message) == 0)
            {
     
               if (isset($_POST["envoyer"]))
                 {
    	         header('Location: confirmation.php');// envoi à la page confirmation
    	         exit;
                 }   
           }
    ...mais la première condition (juste après la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!session_id()) session_start();
    ) par laquelle on accède à ces sous-conditions est déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (isset($_POST['envoyer']))
    :
    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
     
    if (!session_id()) session_start();
     
    if (isset($_POST['envoyer'])) 
    {
     
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
     
     
        $message = array();
     
        //...
     
     
            if (isset($message) && count($message) == 0)
            {
     
               if (isset($_POST["envoyer"])) //on est encore dans cette condition donc inutile de le revérifier => cette condition est ici inutile
                 { 
                 }
             }
     
    }
    donc pas la peine de le remettre par la suite


    Un dernière chose, puisque le téléphone doit être unique tu devrais vérifier qu'il n'est pas déjà dans ta base de donnée avant d'aller vers la page de confirmation.

    Donc juste avant la ligne "if (isset($message) && count($message) == 0)"
    il faudrait faire une requête pour vérifier si le téléphone est déjà pris :

    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
     	if (isset($numtel))
    		{
    		 try
    			 {
    			  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			  $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
     
    			  $req = $bdd->prepare('SELECT count(*) as nb FROM coordonnees WHERE numtel = ?'); 
     
    			  $req->execute(array($numtel));
     
    			  $result = $req->fetch(PDO::FETCH_OBJ);
     
    			  if($result->nb !== 0)
    				  {
    				  	$message[] = 'Ce numéro de téléphone est déjà utilisé';
    				  }			
    			 }
    		catch(Exception $e)
    		   	 {
    				die('Erreur : '.$e->getMessage());
    		   	 }
    		}

  3. #43
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir ABCIWEB,
    J'ai tenu bonne note de vos remarques et apporter ces modifications.
    Désolé d'insister mais j'ai toujours le même problème à savoir que si
    formulaire est correctement rempli on se dirige automatiquement (dès la première fois où il est correctement rempli) vers la page "confirmation.php".
    Cependant si je clic sur modifier pour retourner sur le formulaire pour apporter une modification(erreur de syntaxe par exemple) et que je clic sur envoyer(après correction) pour le resoumettre pour confirmation : il faut lourdement insister par de nombreux clic avant de pouvoir retourner sur la page de confirmation.
    Mieux encore, j'ai procédé par copier/coller comme vous l'avez fait dans de nouvelles pages et maintenant même si le formulaire est correctement rempli dès la première fois il faut insister sur le clic envoyer pour se diriger vers la page confirmation.
    Bizarre mais très ennuyeux car je crains fort qu'un éventuel client n'abdique vite...
    Si par hasard vous pouviez déceler la faille, je vous en serais très reconnaissant
    Mille fois merci pour votre patience et vos conseils
    Claudine

  4. #44
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Faits voir exactement (par copié-collé) tout le code de ta page de formulaire et tout le code de ta page de confirmation. Comment s'appellent ces fichiers ? y'a pas de caractères spéciaux ou espaces dans le nom de ces fichiers ?

    Comme cela fonctionne chez moi (et que rien ne laisse à penser qu'il y a un problème dans le code) je vois pas trop. As tu essayé sur le serveur distant ? Tu teste en local actuellement ? Avec quel navigateur ?

  5. #45
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    Désolé pour ce contre-temps, j'ai eu un problème de santé.
    Comme demandé voici le code du formulaire:'Formul.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
    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
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
     
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
     
    if (isset($_POST['envoyer'])) 
    {
     
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
     
     
        $message = array();// Pour enregistrer les messages d'information
        $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
     
     
     	$_SESSION['post_form']['cat'] = $cat = isset($_POST['cat']) && trim($_POST['cat']) != '' ? Verif_magicquotes(trim($_POST['cat'])) : null;  
     
     	$_SESSION['post_form']['selection'] = $selection = isset($_POST['selection']) && trim($_POST['selection']) != '' ? Verif_magicquotes(trim($_POST['selection'])) : null;   
     
        $_SESSION['post_form']['nom'] = $nom = isset($_POST['nom']) && trim($_POST['nom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['nom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['prenom'] = $prenom = isset($_POST['prenom']) && trim($_POST['prenom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['prenom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['numtel'] = $numtel = isset($_POST['numtel']) && trim($_POST['numtel']) != '' ? Verif_magicquotes(trim($_POST['numtel'])) : null;
     
        $_SESSION['post_form']['codepostal'] = $codepostal = isset($_POST['codepostal']) && trim($_POST['codepostal']) != '' ? Verif_magicquotes(trim($_POST['codepostal'])) : null;
     
    	$_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['ville']))) : null; 
     
     
     
    	if (!isset($cat))
    	    {
    		     $message[] = 'Veuillez choisir une catégorie';
    		}  
     
     
     
    	if (!isset($selection))
    	    {
    		     $message[] = 'Veuillez choisir une option dans la seconde liste déroulante';
    		}  
     
     
     
        if (isset($nom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$nom))     
                    {
                        $message[] = 'Le nom "'.$nom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }
            }
        else    
            {
                 $message[] = 'Veuillez indiquer votre nom'; 
            }
     
     
     
        if (isset($prenom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$prenom)) 
                    {
                        $message[] = 'Le prénom "'.$prenom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }  
            }
        else    
            { 
                $message[] = 'Veuillez indiquer votre prénom';
            }
     
     
     
        if (isset($numtel))     
            {
                if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $numtel)))
                    {
                        $message[] = 'Le numéro de télélphone "'.$numtel.'" n\'est pas valide. Recommencez !';   
                    }
            }
        else
            {
                $message[] = 'Veuillez indiquer un numéro de téléphone';        
            }
     
     
     
    	if (isset($codepostal))
    	    {
    			if (! preg_match('#^[0-9]{4}$#',$codepostal)) 
                    {		     
    					$message[] = 'Le code postal doit être un nombre de 4 chiffres';
    				}
    		}
    	else
    		{
    			$message[] = 'Veuillez indiquer le code postal';
    		}  
     
     
     
    	if (!isset($ville))
    	    {
    		     $message[] = 'Veuillez indiquer la ville';
    		}  
     
     
     
        if (isset($message) && count($message) == 0)
            {
     
    {
    	header('Location: confirm.php');// envoi à la page confirmation
    	exit;
    }   
     
    }
    }               
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
    <title>Listes li&eacute;es HTML JAVASCRIPT</title>
     
    <script type="text/javascript">
    <!--
    function Affiche_liste(id_ensemble_select,id_select)
    {
            // Sélection du bloc contenant les sélections liées (id = "categorie" dans notre exemple)
            var id_ensemble_select = document.getElementById(id_ensemble_select);
     
            // Sélection de la sélection liée
            var id_select = document.getElementById(id_select);
     
            if(id_ensemble_select)
    			{
    				//Initialisation d'une variable pour contenir un tableau.
    				var tab = new Array();
     
    				// Cherche les balises select inlues dans le bloc (id = "categorie" dans notre exemple) contenant les sélections liées  et les retourne dans un tableau
    				tab = id_ensemble_select.getElementsByTagName('select');
     
    				var tablength = tab.length;
     
    				// Liste les éléments du tableau
    				for (i=0; i < tablength; i++)        
    					{
    						// Met les selects en disable = true et les cache avec style.display = 'none'
    						tab[i].disabled = true;
    						if(id_select) tab[i].style.display = 'none';// si select est vide on ne fait rien
    					}
     
    				// Met la sélection liée sélectionné en disable = false et l'affiche avec style.display = 'inline'
    				if(id_select)
    					{
    						id_select.disabled = false;
    						id_select.style.display = 'inline'; 
    					}     
    			}
    }
     
     
     
    // Affiche la liste sélectionnée et l'élément sélectionné au rechargement de la page
    function Affiche_liste_selected(id_ensemble_select, value_select_1, value_select_2)
    {
    	//sélection de l'élément, avec getElementById, de la catégorie sélectionnée
    	var id_selection = document.getElementById(value_select_1);
     
    	if(id_selection)
    		{ 
    			// Appel à la fonction Affiche_liste pour afficher la sous catégorie correspondante et mettre les autres en disabled = true; 
    			Affiche_liste(id_ensemble_select,value_select_1);
     
    			var id_selectionlength = id_selection.length;
     
    			//liste les éléments du tableau
    			for (i=0; i < id_selectionlength; i++)        
    				{
    					// on regarde si l'option du select est égal à la valeur de l'option 2 sélectionnée
    					if (id_selection.options[i].value == value_select_2)
    						{	
    							// Si oui on le sélectionne
    							id_selection.options[i].selected = true;		
    						}
    				}	
    		}
    }
     
     
    // fonction générique permettant un appel aux fonctions javascript dès le chargement de la page.
    function AddLoad_AFS(func) {
     
    		if (window.addEventListener)
    			{
    				window.addEventListener("load", func, false);
    			}
    		else if (document.addEventListener)
    			{
    				document.addEventListener("load", func, false);
    			}
    		else if (window.attachEvent)
    			{
    				window.attachEvent("onload", func);
    			}
    }
     
     
    <?php  if (isset($_SESSION['post_form']['cat']))
    {
    $value_select_1 = $_SESSION['post_form']['cat'];
    $value_select_2 = isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : null;
     ?>
    // Appel à la fonction générique de cbargement onload qui appelle la fonction Affiche_liste_selected avec comme arguments l'id du bloc contenant les sélections liées, la valeur de la catégorie sélectionnée (= à l'id du bloc du select lié) et la valeur de l'option sélectionnée dans la deuxième liste.
    AddLoad_AFS(function(){Affiche_liste_selected('categorie','<?php echo $value_select_1?>','<?php echo $value_select_2?>')});
     
    <?php } ?>
    -->
    </script>
    <style type="text/css">
    body
    {
    	font-family:Arial, Helvetica, sans-serif;
    	font-size:1em;
    }
     
    p, input, select, form, option 
    {
    	padding:0;
    	margin:0;
    }
     
    #form_identification p
    {
    	padding:0.5em;
    }
     
    /*.categorie {
    	width:1.2em;
    	padding:0;
    	margin-right: 1em;
    }
    */
    #categorie, #liste1
    {
        height:1.5em;
    	display:inline;
    }
     
    #categorie select
    {
        display:none;
    }
     
    </style>
     
    </head>
     
    <body>
     
    <div style="width:48em;margin:auto; border:1px solid black;padding:1em">
    	<form action="#" method="post" id = "form_identification">
     
    		<p style="font-size:0.9em; font-style:italic;margin-bottom:1em">Cochez une des cat&eacute;gories ci-dessous, puis une option dans la liste qui s'affichera en fonction de votre choix : </p>
     
    		<div>
    			<p id="liste1"><!--
    				<label for="metier">Metiers</label>
    				<input type="radio" id = "metier" name = "cat" value = "Metiers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'checked = "checked"'; ?> />
     
    				<label for="particulier">Particuliers</label>
    				<input type="radio" id = "particulier" name = "cat" value = "Particuliers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'checked = "checked"'; ?> />
     
    				<label for="jardin">Jardins</label>
    				<input type="radio" id = "jardin" name = "cat" value = "Jardins" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'checked = "checked"'; ?> />
     
    				<label for="commerce">Commerces</label>
    				<input type="radio" id = "commerce" name = "cat" value = "Commerces" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'checked = "checked"'; ?> /> 
     
    				<label for="maison">Maisons</label>
    				<input type="radio" id = "maison" name = "cat" value = "Maisons" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'checked = "checked"'; ?> />
     
                   -->                                                    
     
    				<select name = "cat" class = "categorie" onchange = "Affiche_liste(this.className,this.value)" />
     
    				<option value = "" >«Choisissez»</option>
    				<option value = "Metiers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'selected = "selected"'; ?> >Metiers</option>
    				<option value = "Particuliers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'selected = "selected"'; ?> >Particuliers</option>
    				<option value = "Jardins" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'selected = "selected"'; ?> >Jardins</option>
    				<option value = "Commerces" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'selected = "selected"'; ?> >Commerces</option>  
    				<option value = "Maisons" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'selected = "selected"'; ?> >Maisons</option>
     
    				</select>
     
    			</p>
     
     
     
    			<p id = "categorie">     
    				<select name = "selection" id = "Metiers" style= "display:inline" disabled="disabled"> 
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Horticulteur">Horticulteur</option>
    					<option value = "Plombier">Plombier</option>
    					<option value = "Electricien">Electricien</option>
    					<option value = "Boulanger">Boulanger</option>        
     
    				</select>
     
     
    				<select name = "selection" id = "Particuliers">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente maison">Vente maison</option>
    					<option value = "Location maison">Location maison</option>
    					<option value = "Vente objet divers">Vente objet divers</option>
    					<option value = "Proposition de services">Proposition de services</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Jardins">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "EntrepriseJardin">EntrepriseJardin</option>
    					<option value = "Taille des haies">Tailles des haies</option>
    					<option value = "Pavage carrelage terrasse">Pavage carrelage terrasse</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Commerces">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente cadeaux">Vente cadeaux</option>
    					<option value = "Fleurs artificielles">Fleurs artificielles</option>
    					<option value = "Plantes vivaces">Plantes vivaces</option>
    					<option value = "Couronnes mortuaires">Couronnes mortuaires</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Maisons">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Décoration">D&eacute;coration</option>
    					<option value = "Peintre">Peintre</option>
    					<option value = "Tapissier">Tapissier</option>
    					<option value = "Renovation">Renovation</option>
     
    				</select>	
     
    			</p>   
    		</div> 
     
     
     
    		<div  style="margin-top:2em">  
    			<p>
    				<label for="nom"> Nom :</label>
    				<input type="text" id="nom" name="nom" value="<?php echo (isset($_SESSION['post_form']['nom'])) ? $_SESSION['post_form']['nom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="prenom"> Pr&eacute;nom :</label>
    				<input type="text" id="prenom" name="prenom" value="<?php echo (isset($_SESSION['post_form']['prenom'])) ? $_SESSION['post_form']['prenom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="numtel"> N&deg;de t&eacute;l&eacute;phone :</label>
    				<input type="text" id="numtel" name="numtel" value="<?php echo (isset($_SESSION['post_form']['numtel'])) ? $_SESSION['post_form']['numtel'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="codepostal"> Votre code postal :</label>
    				<input name="codepostal" id="codepostal" type="text" size="4" minlength= "4" maxlength="4" value="<?php echo (isset($_SESSION['post_form']['codepostal'])) ? $_SESSION['post_form']['codepostal'] : '' ?>" />
    			</p>       
     
    			<p>
    				<label for="ville"> Ville :</label>
    				<input type="text" id="ville" name="ville" value="<?php echo (isset($_SESSION['post_form']['ville'])) ? $_SESSION['post_form']['ville'] : '' ?>" />
    			</p>
     
    			<p style="margin-top:1.5em">
    			<input name = "envoyer" value = "Envoyer" type = "submit"/>
    			</p>
     
    		</div>
    </form>
     
    	<div style="font-size:0.8em; font-weight:bold">
     
    	<?php
    	if(isset($_SESSION['post_form']['message']) && count($_SESSION['post_form']['message']) > 0)
    	{
    		foreach($_SESSION['post_form']['message'] as $value) echo '<p>- '.$value.'</p>';
    	}
    	?>
    	</div>
     
    </body>
    </html>
    Et volà le code de la page de confirmation :'Confirm.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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <?php
    session_start();
     
    if (isset($_POST["modif"]))
    {
    	header('Location: Formul.php');// mettre le nom du fichier de ton formulaire à la place de "formulaire.php"
    	exit;
    }
     
    if (isset($_POST["conf"]))
    {
     
    	// enregistrement des données de session en bdd
    	if (isset($_POST["conf"],$_SESSION['post_form']))
     
    {
    try
           {
    		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    		$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
     
    		// Insertion du message à l'aide d'une requête préparée
    		$req = $bdd->prepare('INSERT INTO coordonnees (cat, selection, nom, prenom, numtel, codepostal, ville) VALUES(?, ?, ?, ?, ?, ?, ?)');                  
                    $req->execute(array($_SESSION['post_form']['cat'], $_SESSION['post_form']['selection'], $_SESSION['post_form']['nom'], $_SESSION['post_form']['prenom'], $_SESSION['post_form']['numtel'], $_SESSION['post_form']['codepostal'], $_SESSION['post_form']['ville']));
     unset($_SESSION['post_form']);
    		//redirection vers la page d'index
    		header('Location: index.html');
    		exit;
           }
     catch(Exception $e)
           {
                    die('Erreur : '.$e->getMessage());
           }
    }
    }
    //... (Ne pas oublier le "exit;" après un header Location) 
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <strong>Veuillez contrôler vos coordonnées et cliquer sur <em>confirmer</em> si celles-ci sont correctes, dans le cas contraire cliquer sur <em>modifier</em></strong>
    <p>Votre catégorie : <?php echo isset($_SESSION['post_form']['cat'])? $_SESSION['post_form']['cat'] : '' ?></p>
    <p>Votre sélection: <?php echo isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : '' ?></p>
    <p>Votre nom : <?php echo isset($_SESSION['post_form']['nom'])? $_SESSION['post_form']['nom'] : '' ?></p>
    <p>Votre prenom : <?php echo isset($_SESSION['post_form']['prenom'])? $_SESSION['post_form']['prenom'] : '' ?></p>
    <p>Votre téléphone : <?php echo isset($_SESSION['post_form']['numtel'])? $_SESSION['post_form']['numtel'] : '' ?></p>
    <p>Votre code postal : <?php echo isset($_SESSION['post_form']['codepostal'])? $_SESSION['post_form']['codepostal'] : '' ?></p>
     
    <p>Ville : <?php echo isset($_SESSION['post_form']['ville'])? $_SESSION['post_form']['ville'] : '' ?></p>
     
    <form action = '#' method = "post" >
    <p>
    <input type = "submit" value = "modifier" name= "modif" />
    <input type = "submit" value = "confirmer" name= "conf" />
     
    </p>
    </form>
     
    </body>
    </html>
    Je teste en local avec IE, je n'ai pas actuellement de serveur distant.
    Bizarre car par bref moment cela fonctionne correctement puis de nouveau les mêmes problèmes. Après vérification, si tu estimes qu'il n'y pas de problèmes dans le code, laisses tomber.
    Sincères remerciements
    Claudine

  6. #46
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    (re)Bonjour ABCIWEB,
    Je dois rattraper le temps perdu: j'essaie de créer une page avec formulaire html qui permettrait à un client de modifier son numéro de téléphone s'il est identifié par son nom et prénom.
    Ainsi , si le client tape son nom et son prénom et le nouveau numtel dans le formulaire, je voudrais qu'il adapte avec requête (UPDATE )mais j'ai toujours l'erreur:
    Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\EasyPHP-5.3.3.1\www\etre\ChampVVM.php on line 96
    Je suppose que cela veut dire: erreur de syntaxe, variable inattendue?
    Voudrais-tu vérifier le problème?
    Voici le page:
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Le client modifie son N° de téléphone</title>
    </head>
     
    <body>
    <?php
     
    $message = array();
     
     
    if (isset($_POST['envoyer']))
     
    {
     
        /* Récupération des valeurs des champs du formulaire */
        if (get_magic_quotes_gpc())
        {
     
          $nom	     	= stripslashes(trim($_POST['nom']));
     
          $prenom		= stripslashes(trim($_POST['prenom']));
          $numtel	= stripslashes(trim($_POST['numtel']));
        }
           else
           {
     
               $nom	        = trim($_POST['nom']);
        // $nom=ucfirst($nom);
               $prenom	    = trim($_POST['prenom']);
    	 //$prenom=ucfirst($prenom);	   
               $numtel      = trim($_POST['numtel']);
            }
    //....
    	    if (!(isset($_POST['nom']) && trim($_POST['nom']) != ''))
    	    {
    		     $message[] = 'Veuillez indiquer votre nom';
    	    }
             else    
            { 
    	      //   if (!preg_match("^[A-Za-zçèéë]^",$_POST['nom']))
    //if (!preg_match("^([a-zA-Z](([-.']{1})?[a-zA-Z])+){1,8}^" ,$_POST['nom']))
           // if (!preg_match('/^[\p{L} ]+$/u',$_POST['nom'])) 
    	      if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$nom))	 
    	         {
    	              $message[] = 'Le ' . $_POST['nom'] . ' n\'est pas                   valide, recommencez !';   
     
                 }
             }
    //......
     
     
     
    ?>
    <?php
    //...
    	      if (!(isset($_POST['numtel']) && trim($_POST['numtel']) != ''))	 
    	      {
    		      $message[] = 'Veuillez indiquer un numéro de téléphone';
    	      }
    	      else
    	      {
    		        if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $_POST              ['numtel']) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#",              $_POST['numtel'])))
    		      {
    			       $message[] = 'Le ' . $_POST['numtel'] . ' n\'est pas                    valide, recommencez !';   
    		      }
    	      }
     
    //...	
    	      if (!(isset($_POST['prenom']) && trim($_POST['prenom']) != ''            ))
    	      {
    		            $message[] = 'Veuillez indiquer votre prénom';
    	      }
    	        else    
              { 
    		               if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$prenom))	 
    	         {
    	              $message[] = 'Le ' . $_POST['prenom'] . ' n\'autorise                  que des lettres, recommencez !'; 
    			  }  
    	       }
    	       if (isset($message) && count($message) == 0)
    	      {
    		       // Connexion à la base de données
     
     
    			  $user='admin";
    			  $host="localhost";
    			  $password= "";
    			  $database= "clients";
    	$cxn= mysqli_connect ( $host, $user, $password, $database)	  
    	
    //* Ligne96*//	$req= "UPDATE coordonnees  SET numtel='$numtel' WHERE nom='$_POST[nom]' AND prenom='$_POST[prenom]'";
    		$result= mysqli_query($connexion, $req)
    		or die ("exécution de la requête impossible.");
    			 
    			
    				header('Location:TableauAdresseHorticulteur.php');
    			 }
    		catch(Exception $e)
    		   	 {
    				die('Erreur : '.$e->getMessage());
    		   	 }
    }
    }	
    
    ?>
    <form method="post">
        <p>
            <label for="nom">Votre nom :</label>
     
             <input type="text" id="nom" name="nom" 
     
            value="<?php echo (isset($_POST['nom'])) ?$nom : '' ?>"  
     
            />
        </p>
        <p>
            <label for="prenom">Votre prenom :</label>
            <input type="text" id="prenom" name="prenom" 
            value="<?php echo (isset($_POST['prenom'])) ? $prenom : '' ?>" 
            />
        <p>
            <label for="numtel">Votre N°de téléphone :</label>
            <input type="text" id="numtel" name="numtel" 
            value="<?php echo (isset($_POST['numtel'])) ? $numtel : '' ?>" 
            />
        </p>
     
     
     <input type="submit" name = "envoyer" value="Envoyer" />
    </p>
    </form>
    <?php
    if(isset($message) && count($message) > 0)
    {
    foreach($message as $value) echo '<p>'.$value.'</p>';
    }
    ?> __________________
    </body>
    </html>
    Mes plus vifs remerciements
    Claudine

  7. #47
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Dans ta page "Formul.php" tu écris : header('Location: confirm.php'); pour rediriger vers la page Confirm.php.
    Tu vois pas une légère différence ?

  8. #48
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Concernant ton deuxième message, avant d'aller plus loin, si tu veux que les visiteurs puissent modifier leur enregistrement lors d'une prochaine session, il faut, lors de l'inscription, qu'ils puissent choisir un mot de passe. A ajouter donc dans Fomul.php.
    Ensuite, dans ta requête d'authentification il faudra faire porter la clause WHERE sur le téléphone (qui est un champ unique) et sur le mot de passe.

  9. #49
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    j'ai corrigé l'erreur Confirm.php, mais malheureusement c'est toujours le même problème. Bref nous verrons lorsqu'on passera plud tard sur le serveur distant.
    Quant au programme de mise à jour des coordonnéees existantes par le client, j'ai introduit le mot de passe comme demandé avec valeur unique.
    Je ne l'ai pas fait pour numtel car un même client peut avoir au moins 2 numéros de téléphone à savoir un fixe et un mobile.
    J'ai donc apporté les corrections à Formul.php et Confirm.php ainsi que le programme de mise à jour suivant:
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Mise à jour par le client de son N° de téléphone</title>
    </head>
     
    <body>
    <?php
     
    $message = array();
     
     
    if (isset($_POST['envoyer']))
     
    {
     
        /* Récupération des valeurs des champs du formulaire */
        if (get_magic_quotes_gpc())
        {
     
          $nom	     	= stripslashes(trim($_POST['nom']));
     
          $prenom		= stripslashes(trim($_POST['prenom']));
    	  $motdepasse= stripslashes(trim($_POST['motdepasse']));
          $numtel	= stripslashes(trim($_POST['numtel']));
        }
           else
           {
     
               $nom	        = trim($_POST['nom']);
        // $nom=ucfirst($nom);
               $prenom	    = trim($_POST['prenom']);
     
    	 //$prenom=ucfirst($prenom);
     
    	 $motdepasse	    = trim($_POST['motdepasse']);
     
     
               $numtel      = trim($_POST['numtel']);
            }
    //....
            if (!(isset($_POST['motdepasse']) && trim($_POST['motdepasse']) != ''))
    	    {
    		     $message[] = 'Veuillez indiquer votre motdepasse';
    	    }
     
     
     
    	    if (!(isset($_POST['nom']) && trim($_POST['nom']) != ''))
    	    {
    		     $message[] = 'Veuillez indiquer votre nom';
    	    }
             else    
            { 
    	      //   if (!preg_match("^[A-Za-zçèéë]^",$_POST['nom']))
    //if (!preg_match("^([a-zA-Z](([-.']{1})?[a-zA-Z])+){1,8}^" ,$_POST['nom']))
           // if (!preg_match('/^[\p{L} ]+$/u',$_POST['nom'])) 
    	      if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$nom))	 
    	         {
    	              $message[] = 'Le ' . $_POST['nom'] . ' n\'est pas                   valide, recommencez !';   
     
                 }
             }
    //......
     
     
     
    ?>
    <?php
    //...
    	      if (!(isset($_POST['numtel']) && trim($_POST['numtel']) != ''))	 
    	      {
    		      $message[] = 'Veuillez indiquer un numéro de téléphone';
    	      }
    	      else
    	      {
    		        if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $_POST              ['numtel']) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#",              $_POST['numtel'])))
    		      {
    			       $message[] = 'Le ' . $_POST['numtel'] . ' n\'est pas                    valide, recommencez !';   
    		      }
    	      }
     
    //...	
    	      if (!(isset($_POST['prenom']) && trim($_POST['prenom']) != ''            ))
    	      {
    		            $message[] = 'Veuillez indiquer votre prénom';
    	      }
    	        else    
              { 
    	//         if (!preg_match("^[A-Za-zçèéë]^",$_POST['prenom']))
    	  //         if (!preg_match('/^[\p{L} ]+$/u',$_POST['prenom'])) 
    	               if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$prenom))	 
    	         {
    	              $message[] = 'Le ' . $_POST['prenom'] . ' n\'autorise                  que des lettres, recommencez !'; 
    			  }  
    	       }
    	       if (isset($message) && count($message) == 0)
    	      {
    		       // Connexion à la base de données
      $user='admin";
    			  $host="localhost";
    			  $password= "";
    			  $database= "clients";
    	$cxn= mysqli_connect ( $host, $user, $password, $database)	  
    
    //*Ligne107*//	$req= "UPDATE coordonnees  SET numtel='$numtel' WHERE nom='$_POST[nom]' AND motdepasse='$_POST[motdepasse]'"; 
    		$result= mysqli_query($connexion, $req)
    		or die ("exécution de la requête impossible.");
    			 
    			
    				header('Location:TableauAdresseHorticulteur.php');
    			 }
    		catch(Exception $e)
    		   	 {
    				die('Erreur : '.$e->getMessage());
    		   	 }
    }
    }	
    		
    			  
    			
    ?>
    <form method="post">
        <p>
            <label for="nom">Votre nom :</label>
     
             <input type="text" id="nom" name="nom" 
     
            value="<?php echo (isset($_POST['nom'])) ?$nom : '' ?>"  
     
            />
        </p>
        <p>
            <label for="prenom">Votre prenom :</label>
            <input type="text" id="prenom" name="prenom" 
            value="<?php echo (isset($_POST['prenom'])) ? $prenom : '' ?>" 
            />
    		</p>
        <p>
     
            <label for="motdepasse">Votre mot de passe :</label>
            <input type="text" id="motdepasse" name="motdepasse" 
            value="<?php echo (isset($_POST['motdepasse'])) ? $motdepasse : '' ?>" 
            />
    		</p>
    		<p>
     
            <label for="numtel">Votre N°de téléphone :</label>
            <input type="text" id="numtel" name="numtel" 
            value="<?php echo (isset($_POST['numtel'])) ? $numtel : '' ?>" 
            />
        </p>
     
     
     <input type="submit" name = "envoyer" value="Envoyer" />
    </p>
    </form>
    <?php
    if(isset($message) && count($message) > 0)
    {
    foreach($message as $value) echo '<p>'.$value.'</p>';
    }
    ?> __________________
    </body>
    </html>
    J'ai toujours le même message
    Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\EasyPHP-5.3.3.1\www\etre\ChampVVM.php on line 107
    Veux-tu m'aider à corriger cette erreur et surtout me faire comprendre le pourquoi?

    Merci pour tous ces conseils judicieux et sincères remerciements.
    Claudine

  10. #50
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Bon pour le premier problème je recopie une dernière fois le code exact des page "Formul.php" et "Confirm.php" que je met en test sur un serveur distant, tu pourras donc tester.

    Formul.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
    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
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
     
    if (isset($_POST['envoyer'])) 
    {
     
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
     
     
        $message = array();// Pour enregistrer les messages d'information
        $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
     
     
     	$_SESSION['post_form']['cat'] = $cat = isset($_POST['cat']) && trim($_POST['cat']) != '' ? Verif_magicquotes(trim($_POST['cat'])) : null;  
     
     	$_SESSION['post_form']['selection'] = $selection = isset($_POST['selection']) && trim($_POST['selection']) != '' ? Verif_magicquotes(trim($_POST['selection'])) : null;   
     
        $_SESSION['post_form']['nom'] = $nom = isset($_POST['nom']) && trim($_POST['nom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['nom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['prenom'] = $prenom = isset($_POST['prenom']) && trim($_POST['prenom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['prenom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['numtel'] = $numtel = isset($_POST['numtel']) && trim($_POST['numtel']) != '' ? Verif_magicquotes(trim($_POST['numtel'])) : null;
     
        $_SESSION['post_form']['codepostal'] = $codepostal = isset($_POST['codepostal']) && trim($_POST['codepostal']) != '' ? Verif_magicquotes(trim($_POST['codepostal'])) : null;
     
    	$_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['ville']))) : null; 
     
     
     
     
     
    	if (!isset($cat))
    	    {
    		     $message[] = 'Veuillez choisir une catégorie';
    		}  
     
     
     
     
     
    	if (!isset($selection))
    	    {
    		     $message[] = 'Veuillez choisir une option dans la seconde liste déroulante';
    		}  
     
     
     
     
     
        if (isset($nom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$nom))     
                    {
                        $message[] = 'Le nom "'.$nom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }
            }
        else    
            {
                 $message[] = 'Veuillez indiquer votre nom'; 
            }
     
     
     
     
     
        if (isset($prenom))
            {
                if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$prenom)) 
                    {
                        $message[] = 'Le prénom "'.$prenom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                    }  
            }
        else    
            { 
                $message[] = 'Veuillez indiquer votre prénom';
            }
     
     
     
     
     
        if (isset($numtel))     
            {
                if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $numtel)))
                    {
                        $message[] = 'Le numéro de télélphone "'.$numtel.'" n\'est pas valide. Recommencez !';   
                    }
            }
        else
            {
                $message[] = 'Veuillez indiquer un numéro de téléphone';        
            }
     
     
     
     
     
    	if (isset($codepostal))
    	    {
    			if (! preg_match('#^[0-9]{4}$#',$codepostal)) 
                    {		     
    					$message[] = 'Le code postal doit être un nombre de 4 chiffres';
    				}
    		}
    	else
    		{
    			$message[] = 'Veuillez indiquer le code postal';
    		}  
     
     
     
     
     
    	if (!isset($ville))
    	    {
    		     $message[] = 'Veuillez indiquer la ville';
    		}  
     
     
     
     
     
        if (isset($message) && count($message) == 0)      
    		{
    			header('Location: Confirm.php');// envoi à la page confirmation "Confirm.php"
    			exit;
    		}   
     
    }              
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
    <title>Listes li&eacute;es HTML JAVASCRIPT</title>
     
    <script type="text/javascript">
    <!--
    function Affiche_liste(id_ensemble_select,id_select)
    {
            // Sélection du bloc contenant les sélections liées (id = "categorie" dans notre exemple)
            var id_ensemble_select = document.getElementById(id_ensemble_select);
     
            // Sélection de la sélection liée
            var id_select = document.getElementById(id_select);
     
            if(id_ensemble_select)
    			{
    				//Initialisation d'une variable pour contenir un tableau.
    				var tab = new Array();
     
    				// Cherche les balises select inlues dans le bloc (id = "categorie" dans notre exemple) contenant les sélections liées  et les retourne dans un tableau
    				tab = id_ensemble_select.getElementsByTagName('select');
     
    				var tablength = tab.length;
     
    				// Liste les éléments du tableau
    				for (i=0; i < tablength; i++)        
    					{
    						// Met les selects en disable = true et les cache avec style.display = 'none'
    						tab[i].disabled = true;
    						if(id_select) tab[i].style.display = 'none';// si select est vide on ne fait rien
    					}
     
    				// Met la sélection liée sélectionné en disable = false et l'affiche avec style.display = 'inline'
    				if(id_select)
    					{
    						id_select.disabled = false;
    						id_select.style.display = 'inline'; 
    					}     
    			}
    }
     
     
     
    // Affiche la liste sélectionnée et l'élément sélectionné au rechargement de la page
    function Affiche_liste_selected(id_ensemble_select, value_select_1, value_select_2)
    {
    	//sélection de l'élément, avec getElementById, de la catégorie sélectionnée
    	var id_selection = document.getElementById(value_select_1);
     
    	if(id_selection)
    		{ 
    			// Appel à la fonction Affiche_liste pour afficher la sous catégorie correspondante et mettre les autres en disabled = true; 
    			Affiche_liste(id_ensemble_select,value_select_1);
     
    			var id_selectionlength = id_selection.length;
     
    			//liste les éléments du tableau
    			for (i=0; i < id_selectionlength; i++)        
    				{
    					// on regarde si l'option du select est égal à la valeur de l'option 2 sélectionnée
    					if (id_selection.options[i].value == value_select_2)
    						{	
    							// Si oui on le sélectionne
    							id_selection.options[i].selected = true;		
    						}
    				}	
    		}
    }
     
     
    // fonction générique permettant un appel aux fonctions javascript dès le chargement de la page.
    function AddLoad_AFS(func) {
     
    		if (window.addEventListener)
    			{
    				window.addEventListener("load", func, false);
    			}
    		else if (document.addEventListener)
    			{
    				document.addEventListener("load", func, false);
    			}
    		else if (window.attachEvent)
    			{
    				window.attachEvent("onload", func);
    			}
    }
     
     
    <?php  if (isset($_SESSION['post_form']['cat']))
    {
    $value_select_1 = $_SESSION['post_form']['cat'];
    $value_select_2 = isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : null;
     ?>
    // Appel à la fonction générique de chargement onload qui appelle la fonction Affiche_liste_selected avec comme arguments l'id du bloc contenant les sélections liées, la valeur de la catégorie sélectionnée (= à l'id du bloc du select lié) et la valeur de l'option sélectionnée dans la deuxième liste.
    AddLoad_AFS(function(){Affiche_liste_selected('categorie','<?php echo $value_select_1?>','<?php echo $value_select_2?>')});
     
    <?php } ?>
    -->
    </script>
    <style type="text/css">
    body
    {
    	font-family:Arial, Helvetica, sans-serif;
    	font-size:1em;
    }
     
    p, input, select, form, option 
    {
    	padding:0;
    	margin:0;
    }
     
    #form_identification p
    {
    	padding:0.5em;
    }
     
    /*.categorie {
    	width:1.2em;
    	padding:0;
    	margin-right: 1em;
    }
    */
    #categorie, #liste1
    {
        height:1.5em;
    	display:inline;
    }
     
    #categorie select
    {
        display:none;
    }
     
    </style>
     
    </head>
     
    <body>
     
    <div style="width:48em;margin:auto; border:1px solid black;padding:1em">
    	<form action="#" method="post" id = "form_identification">
     
    		<p style="font-size:0.9em; font-style:italic;margin-bottom:1em">Cochez une des cat&eacute;gories ci-dessous, puis une option dans la liste qui s'affichera en fonction de votre choix : </p>
     
    		<div>
    			<p id="liste1"><!--
    				<label for="metier">Metiers</label>
    				<input type="radio" id = "metier" name = "cat" value = "Metiers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'checked = "checked"'; ?> />
     
    				<label for="particulier">Particuliers</label>
    				<input type="radio" id = "particulier" name = "cat" value = "Particuliers" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'checked = "checked"'; ?> />
     
    				<label for="jardin">Jardins</label>
    				<input type="radio" id = "jardin" name = "cat" value = "Jardins" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'checked = "checked"'; ?> />
     
    				<label for="commerce">Commerces</label>
    				<input type="radio" id = "commerce" name = "cat" value = "Commerces" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'checked = "checked"'; ?> /> 
     
    				<label for="maison">Maisons</label>
    				<input type="radio" id = "maison" name = "cat" value = "Maisons" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'checked = "checked"'; ?> />
     
                   -->                                                    
     
    				<select name = "cat" class = "categorie" onchange = "Affiche_liste(this.className,this.value)" />
     
    				<option value = "" >«Choisissez»</option>
    				<option value = "Metiers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Metiers") echo 'selected = "selected"'; ?> >Metiers</option>
    				<option value = "Particuliers" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Particuliers") echo 'selected = "selected"'; ?> >Particuliers</option>
    				<option value = "Jardins" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Jardins") echo 'selected = "selected"'; ?> >Jardins</option>
    				<option value = "Commerces" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Commerces") echo 'selected = "selected"'; ?> >Commerces</option>  
    				<option value = "Maisons" <?php if (isset($_SESSION['post_form']['cat']) && $_SESSION['post_form']['cat'] == "Maisons") echo 'selected = "selected"'; ?> >Maisons</option>
     
    				</select>
     
    			</p>
     
     
     
    			<p id = "categorie">     
    				<select name = "selection" id = "Metiers" style= "display:inline" disabled="disabled"> 
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Horticulteur">Horticulteur</option>
    					<option value = "Plombier">Plombier</option>
    					<option value = "Electricien">Electricien</option>
    					<option value = "Boulanger">Boulanger</option>        
     
    				</select>
     
     
    				<select name = "selection" id = "Particuliers">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente maison">Vente maison</option>
    					<option value = "Location maison">Location maison</option>
    					<option value = "Vente objet divers">Vente objet divers</option>
    					<option value = "Proposition de services">Proposition de services</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Jardins">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "EntrepriseJardin">EntrepriseJardin</option>
    					<option value = "Taille des haies">Tailles des haies</option>
    					<option value = "Pavage carrelage terrasse">Pavage carrelage terrasse</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Commerces">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Vente cadeaux">Vente cadeaux</option>
    					<option value = "Fleurs artificielles">Fleurs artificielles</option>
    					<option value = "Plantes vivaces">Plantes vivaces</option>
    					<option value = "Couronnes mortuaires">Couronnes mortuaires</option>
     
    				</select>
     
     
    				<select name = "selection" id = "Maisons">
     
    					<option value = "">«Choisissez»</option>
    					<option value = "Décoration">D&eacute;coration</option>
    					<option value = "Peintre">Peintre</option>
    					<option value = "Tapissier">Tapissier</option>
    					<option value = "Renovation">Renovation</option>
     
    				</select>	
     
    			</p>   
    		</div> 
     
     
     
    		<div  style="margin-top:2em">  
    			<p>
    				<label for="nom"> Nom :</label>
    				<input type="text" id="nom" name="nom" value="<?php echo (isset($_SESSION['post_form']['nom'])) ? $_SESSION['post_form']['nom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="prenom"> Pr&eacute;nom :</label>
    				<input type="text" id="prenom" name="prenom" value="<?php echo (isset($_SESSION['post_form']['prenom'])) ? $_SESSION['post_form']['prenom'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="numtel"> N&deg;de t&eacute;l&eacute;phone :</label>
    				<input type="text" id="numtel" name="numtel" value="<?php echo (isset($_SESSION['post_form']['numtel'])) ? $_SESSION['post_form']['numtel'] : '' ?>" />
    			</p>
     
    			<p>
    				<label for="codepostal"> Votre code postal :</label>
    				<input name="codepostal" id="codepostal" type="text" size="4" minlength= "4" maxlength="4" value="<?php echo (isset($_SESSION['post_form']['codepostal'])) ? $_SESSION['post_form']['codepostal'] : '' ?>" />
    			</p>       
     
    			<p>
    				<label for="ville"> Ville :</label>
    				<input type="text" id="ville" name="ville" value="<?php echo (isset($_SESSION['post_form']['ville'])) ? $_SESSION['post_form']['ville'] : '' ?>" />
    			</p>
     
    			<p style="margin-top:1.5em">
    			<input name = "envoyer" value = "Envoyer" type = "submit"/>
    			</p>
     
    		</div>
    </form>
     
    	<div style="font-size:0.8em; font-weight:bold">
     
    	<?php
    	if(isset($_SESSION['post_form']['message']) && count($_SESSION['post_form']['message']) > 0)
    	{
    		foreach($_SESSION['post_form']['message'] as $value) echo '<p>- '.$value.'</p>';
    	}
    	?>
    	</div>
     
    </div>
     
     
    </body>
    </html>



    Confirm.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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
    if (isset($_POST["modif"]))
    {
    	header('Location: Formul.php');// redirection vers la page "Formul.php"
    	exit;
    }
     
    if (isset($_POST["conf"]))
    {
     
    	// enregistrement des données de session en bdd
    	if (isset($_POST["conf"],$_SESSION['post_form']))
    		{
    			try
    			   {
    					$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    					$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
     
    					// Insertion du message à l'aide d'une requête préparée
    					$req = $bdd->prepare('INSERT INTO coordonnees (cat, selection, nom, prenom, numtel, codepostal, ville) VALUES(?, ?, ?, ?, ?, ?, ?)');     
     
    					$req->execute(array($_SESSION['post_form']['cat'], $_SESSION['post_form']['selection'], $_SESSION['post_form']['nom'], $_SESSION['post_form']['prenom'], $_SESSION['post_form']['numtel'], $_SESSION['post_form']['codepostal'], $_SESSION['post_form']['ville']));
     
    					unset($_SESSION['post_form']);
     
    					//redirection vers la page d'index
    					header('Location: index.html');
    					exit;
    			   }
    			 catch(Exception $e)
    			   {
    					die('Erreur : '.$e->getMessage());
    			   }
    		}
    }
    //... (Ne pas oublier le "exit;" après un header Location) 
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <strong>Veuillez contrôler vos coordonnées et cliquer sur <em>confirmer</em> si celles-ci sont correctes, dans le cas contraire cliquer sur <em>modifier</em></strong>
    <p>Votre catégorie : <?php echo isset($_SESSION['post_form']['cat'])? $_SESSION['post_form']['cat'] : '' ?></p>
    <p>Votre sélection : <?php echo isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : '' ?></p>
    <p>Votre nom : <?php echo isset($_SESSION['post_form']['nom'])? $_SESSION['post_form']['nom'] : '' ?></p>
    <p>Votre prenom : <?php echo isset($_SESSION['post_form']['prenom'])? $_SESSION['post_form']['prenom'] : '' ?></p>
    <p>Votre téléphone : <?php echo isset($_SESSION['post_form']['numtel'])? $_SESSION['post_form']['numtel'] : '' ?></p>
    <p>Votre code postal : <?php echo isset($_SESSION['post_form']['codepostal'])? $_SESSION['post_form']['codepostal'] : '' ?></p>
     
    <p>Ville : <?php echo isset($_SESSION['post_form']['ville'])? $_SESSION['post_form']['ville'] : '' ?></p>
     
    <form action = '#' method = "post" >
    <p>
    <input type = "submit" value = "modifier" name= "modif" />
    <input type = "submit" value = "confirmer" name= "conf" />
     
    </p>
    </form>
     
    </body>
    </html>
    Le lien de test ici. Ce lien de test ne sera pas valide indéfiniment mais suffisamment pour que tu puisse voir si tu peux reproduire ou non le même pb que chez toi.
    En copiant les codes que j'ai indiqué plus haut il n'y a aucune raison pour que le résultat soit différent chez toi, excepté si tu te trompe sur le nom des pages car il faut respecter les minuscule/majuscules (sensible à la casse).

  11. #51
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Pour ton autre problème tu écris :
    $user='admin";
    donc tout ce qui suit va foirer... d'ailleurs cela se voit sur la coloration syntaxique.

    Sinon je m'étonne "un peu" que tu ne reprenne pas modèle sur le premier code qui est presque identique. Notamment je t'ai montré comment écrire une fonction pour éliminer les antislah si get_magic_quotes_gpc() est activé.
    C'est quand même plus simple et lisible de faire cela :

    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
     
    function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        }
     
    $nom	= Verif_magicquotes(trim($_POST['nom']));
     
    $prenom = Verif_magicquotes(trim($_POST['prenom']));
     
    $motdepasse = Verif_magicquotes(trim($_POST['motdepasse']));
     
    $numtel = Verif_magicquotes(trim($_POST['numtel']));


    plutôt que ceci :

    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
        if (get_magic_quotes_gpc())
        {
     
          $nom	     	= stripslashes(trim($_POST['nom']));
     
          $prenom		= stripslashes(trim($_POST['prenom']));
    	  $motdepasse= stripslashes(trim($_POST['motdepasse']));
          $numtel	= stripslashes(trim($_POST['numtel']));
        }
           else
           {
     
               $nom	        = trim($_POST['nom']);
        // $nom=ucfirst($nom);
               $prenom	    = trim($_POST['prenom']);
     
    	 //$prenom=ucfirst($prenom);
     
    	 $motdepasse	    = trim($_POST['motdepasse']);
     
     
               $numtel      = trim($_POST['numtel']);
            }

    Ensuite si tu veux refaire une page de validation ou ne pas avoir de problème pour ré afficher le formulaire en cas de raffraichissement de la page, tu auras aussi besoin des variables de session. Donc pourquoi ne prends-tu pas exemple sur la page "Formul.php" pour faire cette page ?

    Et puis quand je dis que "téléphone" est unique je veux dire qu'il est unique dans la base et qu'il peut donc identifier une personne. Peut importe que les visiteurs en aient un ou plusieurs, aucun visiteur ne peut en avoir un identique à un autre visiteur. Alors qu'un visiteur n'a qu'un nom unique mais qui peut être identique pour un autre visiteur, ce qui ne permet donc pas de le différencier sur ce critère dans ta base de donnée.

  12. #52
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    Mille fois merci pour votre patience et tous vos conseils.
    J'ai essayé le lien du texte proposé et là tout est parfait! tandis que chez moi, c'est toujours le même problème. J'arrive toujours à "envoyer" mais en insistant parfois une fois mais souvent de nombreuses fois. Bref, je suppose qu'il y a un tout petit problème au niveau d'EasyPHP ou ....? Cela ne devrait pas porter à conséquence puisque sur votre serveur externe cela fonctionne normalement.
    Autre petit problème:
    Lorsque je fais la requête proposée(le 05/06) pour vérifier si le téléphone est déja pris, elle m'indique toujours que le numéro de téléphone est déjà utilisé ( même s'il n'existe pas dans la bdd)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $bdd->prepare('SELECT count(*) as nb FROM coordonnees WHERE numtel = ?');
    Veux-tu m'expliquer en détails cette requête?
    Sincères remerciements
    Claudine

  13. #53
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Claudine Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $bdd->prepare('SELECT count(*) as nb FROM coordonnees WHERE numtel = ?');
    Veux-tu m'expliquer en détails cette requête?
    Sincères remerciements
    Claudine
    Normalement la requête "naturelle" est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT count(numtel) as nb FROM coordonnees WHERE numtel = ?'
    On compte dans la colonne numtel - count(numtel) - le nombre de fois, que l'on associe à l'allias "nb" - as nb -, où numtel = ? dans la table "coordonnées".

    Pour obtenir le même résultat plus rapidement mysql recommande dans ces cas précis de remplacer le nom du champ par *. Et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT count(*) as nb FROM coordonnees WHERE numtel = ?'
    On utilise un alias pour donner un nom facilement exploitable. Plus loin on pourra ainsi l'utiliser pour récupérer cette valeur avec PDO::FETCH_OBJ et
    où nb, défini auparavant et égal à count(*), est une propriété de l'objet PDO::FETCH_OBJ
    Si l'on avait pas utilisé d'alias la valeur serait dans count(*) et l'on aurait eu des pb pour la récupérer comme propriété puisque l'on aurait dû faire $result->count(*) et que count(*) est aussi le nom d'une fonction php, donc incompatible pour être le nom d'une propriété d'un objet.
    Dans ce cas il aurait fallu utiliser PDO::FETCH_ASSOC qui retourne un tableau associatif ou PDO::FETCH_BOTH qui retourne à la fois un tableau associatif et numérique et donc on aurait pu faire $result['count(*)'] avec PDO::FETCH_ASSOC et $result['count(*)'] ou $result[0] avec PDO::FETCH_BOTH.
    Mais bon c'est un peu reloud, et donc juste avec notre allias on pourra faire plus simplement $result['nb'] avec PDO::FETCH_ASSOC ou PDO::FETCH_BOTH et $result->nb avec PDO::FETCH_OBJ

    Et en fait ça retourne toujours faux parce que le résultat est une chaine de caractères (string) représentant un nombre. Donc quand je fais if($result->nb !== 0) c'est toujours vrai puisque j'ai un peu trop vite utilisé une égalité stricte (!==,===) qui vérifie également le type de la variable puis comparé à 0 qui, tel qu'il est écrit, est un entier (int).
    Donc pour résoudre cette étourderie il suffit de faire un test qui ne vérifie pas le type de la variable : if($result->nb != 0) {
    Ou encore rester sur un test strict mais en déclarant 0 comme une chaine de caractère : if($result->nb !== '0') {

    et voilà

  14. #54
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir ABCIWEB,
    Merci pour toutes ces explications claires et précises.
    J'ai repris modèle sur le tout premier code pour essayer d'établir un formulaire de mise à jour par le client de ses coordonnées et en particuliers la ville et le numtel en fonction du "motdepasse" qui est unique.
    Mais la requête ne semble pas fonctionner.... bref je suis plantée et j'ose espérer qu'une fois de plus votre aide me sera précieuse.
    Voici le 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
    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
     
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
    if (isset($_POST['confirmer'])) 
    {
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
    $motdepasse = Verif_magicquotes(trim($_POST['motdepasse']));
     
    $numtel = Verif_magicquotes(trim($_POST['numtel']));
     
    $ville = Verif_magicquotes(trim($_POST['ville']));
     
        $message = array();// Pour enregistrer les messages d'information
        $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
     
    	$_SESSION['post_form']['motdepasse'] = $motdepasse = isset($_POST['motdepasse']) && trim($_POST['motdepasse']) != '' ? Verif_magicquotes(trim($_POST['motdepasse'])) : null;     $_SESSION['post_form']['numtel'] = $numtel = isset($_POST['numtel']) && trim($_POST['numtel']) != '' ? Verif_magicquotes(trim($_POST['numtel'])) : null;
     	$_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(trim($_POST['ville'])) : null; 
     
    	if (!isset($motdepasse))
    	    {
    		     $message[] = 'Veuillez indiquer votre mot de passe';
    		}  
     
        if (isset($numtel))     
            {
                if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $numtel)))
                    {
                        $message[] = 'Le numéro de télélphone "'.$numtel.'" n\'est pas valide. Recommencez !';   
                    }
            }
        else
            {
                $message[] = 'Veuillez indiquer un numéro de téléphone';        
            }
     
     
    	if (!isset($ville))
    	    {
    		     $message[] = 'Veuillez indiquer la ville';
    		}  
     
     
     
        if (isset($message) && count($message) == 0)
            {
     
    {
    	// enregistrement des données de session en bdd
    	if (isset($_POST["conf"],$_SESSION['post_form']))
    {
    try
           {
    		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    		$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
     
    		// Insertion du n° de téléphone à l'aide d'une requête préparée
    		$req = $bdd->prepare("UPDATE coordonnees  SET ville='$ville', numtel='$numtel' WHERE motdepasse= '$motdepasse' ");  
     
                    $req->execute(array($_SESSION['post_form']['motdepasse'],  $_SESSION['post_form']['numtel'],  $_SESSION['post_form']['ville']));
     unset($_SESSION['post_form']);
    		//redirection vers la page d'index
    		header('Location: index.html');
    		exit;
           }
     catch(Exception $e)
           {
                    die('Erreur : '.$e->getMessage());
     
    				       }
    }
    }
    }        
     }           
     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Mise à jour des coordonnées existantes</title>
    </head>
     
    <body>
    <div  style="margin-top:2em">
    		     <p>
    				<label for="motdepasse"> Votre mot de passe :</label>
    				<input type="text" id="motdepasse" name="motdepasse" value="<?php echo (isset($_SESSION['post_form']['motdepasse'])) ? $_SESSION['post_form']['motdepasse'] : '' ?>" />
    			</p>
    			<p>
    				<label for="numtel"> N&deg;de t&eacute;l&eacute;phone :</label>
    				<input type="text" id="numtel" name="numtel" value="<?php echo (isset($_SESSION['post_form']['numtel'])) ? $_SESSION['post_form']['numtel'] : '' ?>" />
    			</p>
    		<p>
    				<label for="ville"> Ville :</label>
    				<input type="text" id="ville" name="ville" value="<?php echo (isset($_SESSION['post_form']['ville'])) ? $_SESSION['post_form']['ville'] : '' ?>" />
    			</p>
    		</div>
    </form>
     
    	<div style="font-size:0.8em; font-weight:bold">
     
    	<?php
    	if(isset($_SESSION['post_form']['message']) && count($_SESSION['post_form']['message']) > 0)
    	{
    		foreach($_SESSION['post_form']['message'] as $value) echo '<p>- '.$value.'</p>';
    	}
    	?>
    	</div>
     
    </div>
    <p>
     
    <input type = "submit" value = "confirmer" name= "conf" />
     
    </p>
    </form>
     
    </body>
    </html>
    Sincères remerciements
    Claudine

  15. #55
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Claudine Voir le message
    Mais la requête ne semble pas fonctionner....
    Mais encore, précise un peu... tu as un message d'erreur? si oui lequel. C'est lui qu'il faut savoir interpréter pour débuguer.
    Tu dis que tu as pris modèle sur la précédente requête mais alors où sont passés les marqueurs '?'

    A part ça le mot de passe n'est pas nécessairement unique puisque deux utilisateurs peuvent avoir choisis le même. Il faut faire l'association entre un champ unique (peut-être le téléphone s'il est unique dans ta base) et le mot de passe associé. Si le téléphone n'est pas unique (plusieurs visiteurs peuvent avoir le même) tu peux demander de choisir un login (qui lui sera unique et il faudra le vérifier) lors de l'inscription.

  16. #56
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    La colonne "motdepasse" est reprise dans l'index Unique avecID donc impossible que 2 utilisateurs puissent avoir choisis le même.
    Il n'y avait aucun message d'erreur et lorsque je cliquais sur envoyer: rien ne se passait.
    Maintenant j'ai repris le modèle de la précédente requête avec les marqueurs"?" dont voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = $bdd->prepare('UPDATE coordonnees  SET (ville, numtel) VALUES(?,?) WHERE motdepasse= '?')'
    Est-ce que la syntaxe de cette requête est correcte?
    car cette fois il y a un code d'erreur:
    Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\EasyPHP-5.3.3.1\www\etre\essaideux.php on line 63
    Voici la ligne 63
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req->execute(array($_SESSION['post_form']['motdepasse'] , $_SESSION['post_form']['numtel'],  $_SESSION['post_form']['ville']));
    Je suppose qu'il s'agit des variables de session?
    J'attends vos conseils car sans vous je suis bloquée.
    Sincères remerciements
    Claudine

  17. #57
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Claudine Voir le message
    La colonne "motdepasse" est reprise dans l'index Unique avecID donc impossible que 2 utilisateurs puissent avoir choisis le même.
    et comment le visiteur va-t-il faire pour s'identifier ? il faudrait qu'il connaisse son ID si l'index unique est composé de l'ID et du mot de passe.

    Sinon dans ta requête il ne faut pas mettre de quote ' autour de ton marqueur ?
    Comme tu l'a écrit ce n'est pas un marqueur (et donc ne trouvant pas de 3 ème marqueur, la troisième variable que tu identique à la ligne suivante semble être de trop).

  18. #58
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    Désolé pour ce long contretemps. Dommage que je ne puisse programmer les problèmes de santé!
    Avant de poursuivre sur le programme de modification des coordonnées du client,
    Je reviens sur le problème:La colonne "motdepasse" est reprise dans l'index Unique avecID donc impossible que 2 utilisateurs puissent avoir choisis le même.
    Je crois que je me suis mal exprimé car voici les résultats de la structure de la table:
    Index:
    Action Nom de l'index Type Unique Null Commentaire
    PRIMARY BTREE Oui Non id 21 A
    motdepasse BTREE Oui Non motdepasse 21 A
    Dans ce cas, l'index unique est composé de l'ID tandis que le mot de passe est une colonne avec valeur unique.
    Corrige moi si je fais erreur!
    Est-il nécessaire d'ajouter une colonne 'login' dans cette table car j'avoue être complètement déroutée avec ces notions .
    Au plaisir de vous lire pour repartir sur le conception de départ de la table
    Merci et sincères remerciements
    Claudine

  19. #59
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Si le mot de passe est unique dans ta table, tu vas devoir renvoyer un message d'erreur pour tout nouveau visiteur qui veut utiliser un mot de passe déjà utilisé. Cela veut dire par la même occasion que tu le renseigne sur les mots de passe existants dans ta table. Pas bon pour la sécurité ça !

    Il faut donc qu'en plus du mot de passe (qui ne peut pas être unique dans ta table pour la raison que je viens de dire) l'utilisateur puisse avoir un identifiant unique. C'est la combinaison de cet identifiant + le mot de passe qui permettra donc de l'identifier. Cet identifiant unique peut être une adresse email ou un numéro de téléphone ou un login. A toi de choisir en fonction de la nature de l'identifiant unique que l'utilisateur devra renseigner lors de son inscription.

  20. #60
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB,
    Le travail fût très pénible mais j'y suis arrivé.
    Voici donc le formulaire de modification des certaines coordonnées du client qui fonctionne enfin très bien grâce à votre aide précieuse.
    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
     
    <?php
    if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
     
    if (isset($_POST['envoyer'])) 
    {
        function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
        {
    		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    		return $chaine;
        } 
     
        $message = array();// Pour enregistrer les messages d'information
        $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
     
    	$_SESSION['post_form']['motdepasse'] = $motdepasse = isset($_POST['motdepasse']) && trim($_POST['motdepasse']) != '' ? Verif_magicquotes(trim($_POST['motdepasse'])) : null;  
     
         $_SESSION['post_form']['prenom'] = $prenom = isset($_POST['prenom']) && trim($_POST['prenom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['prenom']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        $_SESSION['post_form']['nv_numtel'] = $nv_numtel = isset($_POST['nv_numtel']) && trim($_POST['nv_numtel']) != '' ? Verif_magicquotes(trim($_POST['nv_numtel'])) : null;
     
      $_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['ville']))) : null;//ucfirst pour convertir le première lettre en majuscule
     
        	if (! isset($motdepasse))
    		{
    			 $message[] = 'Veuillez indiquer votre mot de passe';
    		}
    	else    
    		{ 
    		if(!preg_match('`^[a-zA-Z0-9]{6,18}$`',$motdepasse))
     
    			//if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$motdepasse))	 
    			 {
    				  $message[] = 'Le '. $motdepasse .' n\'est pas valide, recommencez !';   
    			 }
    		 }
    	if (! isset($nv_numtel))	 
    		{
    			$message[] = 'Veuillez indiquer votre nouveau numéro de téléphone';
    		}
    	else
    		{
    			if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $nv_numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $nv_numtel)))
    				{
    					$message[] = 'Le '. $nv_numtel .' n\'est pas valide, recommencez !';   
    				}
    		}
     
    	if (! isset($prenom))
    		{
    			$message[] = 'Veuillez indiquer votre prénom';
    		}
    	else    
    		{ 
    			//if (!preg_match('/^[\p{L} ]+$/u',$prenom)) 
    			if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$prenom))	
    				{
    					$message[] = 'Le '.$prenom.' n\'autorise que des lettres, recommencez !'; 
    				}  
     
    	if (! isset($ville))
    		{
    			$message[] = 'Veuillez indiquer la ville';
    		}
    	else    
    		{ 
    			//if (!preg_match('/^[\p{L} ]+$/u',$prenom)) 
    			if (! preg_match('#^[a-zéèàçïêë]{3,12}$#i',$ville))	
    				{
    					$message[] = 'Le '.$ville.' n\'autorise que des lettres, recommencez !'; 
    				}  
    		}
    		}
     	if (isset($message) && count($message) == 0)
    		{
    			 // Connexion à la base de données
    			 try
    				 {
    				  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    				  $bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
     
    	  // Insertion du message à l'aide d'une requête préparée
    				    $req = $bdd-> prepare('UPDATE coordonnees SET numtel=:nv_numtel, ville=:ville WHERE prenom=:prenom AND motdepasse=:motdepasse'); 
     
    				  $req->execute(array('motdepasse' =>$motdepasse, 'prenom'=>$prenom, 'nv_numtel'=>$nv_numtel, ville=>$ville));		 
    	 // Redirection du visiteur vers la page Index du site//
     
    					header('Location:Index.html');
    				 }
    			catch(Exception $e)
    				{
    				die('Erreur : '.$e->getMessage());
    				 }
    		}
    }	
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Formulaire de modification du n° de téléphone</title>
    <style type="text/css">
    <!--
    .Style2 {
    	font-size: 24px;
    	font-weight: bold;
    	color: #9933CC;
    }
    .Style6 {color: #000066}
    -->
    </style>
    </head>
     
    <body>
    <span class="Style2"><u>Formulaire de modification du n° de téléphone </u></span>
    <form method="post" class="Style6">
      <p>
          <label for="motdepasse">Votre mot de passe :</label>
             <input type="text" id="motdepasse" name="motdepasse" 
             value="<?php echo (isset($_POST['motdepasse'])) ? $motdepasse : '' ?>"  
             />
          </p>
        <p>
            <label for="prenom">Votre prenom :</label>
            <input type="text" id="prenom" name="prenom" 
            value="<?php echo (isset($_POST['prenom'])) ? $prenom : '' ?>" 
            />
        <p>
            <label for="nv_numtel">Votre nouveau n°de téléphone :</label>
            <input type="text" id="nv_numtel" name="nv_numtel" 
            value="<?php echo (isset($_POST['nv_numtel'])) ? $nv_numtel : '' ?>" 
            />
        </p>
     
    		<p>
            <label for="ville">Votre nouvelle adresse(ville):</label>
            <input type="text" id="ville" name="ville" 
            value="<?php echo (isset($_POST['ville'])) ? $ville : '' ?>" 
            />
        </p>
      <input type="submit" name = "envoyer" value="Envoyer" />
      </p>
    </form>
    </body>
    </html>
    <?php
    // Afficher les messages d'erreurs : champs vides ou non conformes//
    if(isset($message) && count($message) > 0)
    {
    foreach($message as $value) echo '<p>'.$value.'</p>';
    }
    ?>
    Veux-tu vérifier s'il y a lieu de modifier certaines choses?
    Autres problèmes: j'ai placé un menu dans ma page index qui survolé affiche des listes déroulantes semblables à celles que vous aviez réalisé dans le formulaire d'inscription. Je voudrais que dès qu'un client clique dans une des listes déroulantes, apparaisse automatiquement le tableau des coordonnées correspondant à la sélection. Le problème c'est que c'est un menu déroulant où je dois 'cliquer' et non comme un formulaire avec un'Post'.
    Puis-je solliciter votre bienveillance?
    Sincères remerciements
    Claudine

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/07/2008, 15h02
  2. Réponses: 2
    Dernier message: 12/06/2007, 00h23
  3. [Conception] Pb d insertion dans une BDD des données d un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 02/06/2006, 19h18
  4. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 17h32
  5. inscription via le web et enregistrement dans une base de données
    Par titoenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 17/05/2006, 10h20

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