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

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

PHP & Base de données Discussion :

Pourquoi mes champs doivent être obligatoires pour s'insérer [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut Pourquoi mes champs doivent être obligatoires pour s'insérer
    Bonjour,
    J'ai un formulaire qui contient plusieurs champs, tous sont des clés étrangères. Le problèmes c'est que je ne peux pas faire d'insertion, à condition que tous les champs soient remplis, or je ne veux pas qu'ils soient obligatoires, je les ai mis en NULL dans phpMyAdmin, mais ça ne change rien.
    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
     
    if (isset($_POST['valider']))
    	{ 	
    $nom_contact=$_SESSION['nom_contact'];
    				echo $nom_contact;
     
        		$reponse = $bdd->query("SELECT * FROM structure WHERE nom_contact='$nom_contact'");
    			$donnees = $reponse->fetch(PDO::FETCH_ASSOC);	
    			$id_struct=$donnees['id_struct'];
    			while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
    				 if ($donnees["id_struct"]==$id_struct)	
    			$id_struct=$donnees['id_struct'];	
     
    				$nationalite=$_POST['nationalite'];
    				$statut_conflit=$_POST['statut_conflit'];
    				$etat=$_POST['etat'];
    				//$sepulture=$_POST['id_sepulture'];
    				$sexe=$_POST['sexe'];
    				$age=$_POST['age'];
    				$particularite=$_POST['particularite'];
    				$confession=$_POST['confession'];
    				$institution=$_POST['institution'];
    				$administrative=$_POST['administrative'];
    	                        $aide_sociale=$_POST['aide_sociale'];
    	                         $date_ajout = date('Y-m-d H:i:s'); 
     
    PRINT_r($_POST).'<br />';
    $bdd->exec("INSERT INTO categorisation VALUES (null,'$id_struct','$nationalite','$statut_conflit','$etat','4','$sexe','$age','$particularite','$confession','$institution','$administrative','$aide_sociale','$date_ajout',NULL)") or print_r($bdd->errorInfo());	
     
    }
    Si un seul champ n'est pas rempli, j'ai cette erreur (par exp pour le premier champ 'nationalité') :
    Incorrect integer value: '' for column 'id_nationalite' at row 1

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ......VALUES (null,'$id_struct','$nationalite','$statut_conflit','$etat','4','$sexe','$age','$particularite',...................
    en mettant des '...' (apostrophes), tu les déclares comme "chaine de caractère", pas comme "numérique" ).

    D'autre part, il ne faut pas confondre une chaine vide ('') avec NULL !
    Si les champs attendent un entier, tu ne peux pas leur fournir une chaine vide.

    2/ Tu n'as jamais entendu parler d'injection SQL ???

    Ni de requêtes préparées pour l'éviter ?? ...

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Merci pour votre réponse et pour l'explication. Je ne savais jamais quand est-ce qu'il fallait mettre d'apostrophes ou pas, maintenant j'ai enfin compris.
    D'autre part, il ne faut pas confondre une chaine vide ('') avec NULL !
    Si les champs attendent un entier, tu ne peux pas leur fournir une chaine vide.
    Ah, je pensais que NULL permet de ne rien mettre, peu importe le type du champ !

    J'ai déjà entendu parler des requêtes préparées et des injections SQL, je ne les ai jamais utilisées, je ne vois pas trop comment ça marche, vu que ça ne se voit pas

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Allez, suis de bonne humeur, te donne le code d'une requête préparée la plus maigre possible et qui gère tout, la sécurité, la propreté etc.
    En gros, c'est prepare + execute (et pas exec) et passage en paramètres d'un tableau, avec autant de réponses que de "?" dans la requête préparée.

    Un truc qui rien à voir mais qui est VITAL : on n'a pas le droit de stocker la confession des gens dans une base de données, et encore heureux ! Voir l'actualité sur Robert Ménard !

    http://www.rtl.fr/actu/societe-faits...bie-7778301584

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* Exécute une requête préparée en passant un tableau de valeurs */
    $sth = $bdd->prepare('SELECT * FROM structure WHERE nom_contact=?');
    $sth->execute(array($nom_contact));
    while($data=$sth->fetch(PDO::FETCH_ASSOC)){
    	$insert=$bdd->prepare('INSERT INTO categorisation VALUES (null,?,?,?,?,"4",?,?,?,?,?,?,?,?,NULL)'); 
    	$insert->execute(array($data['id_struct'],$data['nationalite'],$data['statut_conflit'],$data['etat'],$data['sexe'],$data['age'],$data['particularite'],$data['confession'],$data['institution'],$data['administrative'],$data['aide_sociale'],$data['date_ajout']));
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    on n'a pas le droit de stocker la confession des gens dans une base de données, et encore heureux !
    Pas totalement vrai, c'est possible mais avec autorisation préalable de la CNIL : tu dois faire ta déclaration à la CNIL et attendre son autorisation (elle à le droit de la refuser naturellement) avant de sauvegarder quoi que ce soit comme information dans ta bdd. (Source : http://vosdroits.service-public.fr/p...0.xhtml#N100E7)
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Merci bcp Dendrite

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    @Dendrite:
    J'ai essayé votre code, ça marche bien, dans le cas où tout est à NULL.
    Mais dans le cas où je remplis qq champs, j'ai remplacé les ? par les variables $nationalite, $statut_conflit... mais en faisant ça, l'insertion ne marche plus!

  8. #8
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tu as remplacé les ?
    Mais il ne faut pas remplacer les ?.
    Il faut tout laisser comme c'est !

    http://php.net/manual/fr/pdo.prepared-statements.php
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Ah bon , et ? peut prendre soit une valeur insérée soit NULL.
    Mais le truc c'est que ça ne s'insère pas quand je donne une valeur à un champ, c'est-à-dire que ça marche juste lorsque tout est à NULL (quand je valide sans remplir les champs).
    EDIT 1 : dans les VALUES il y a 15 champs, mais dans le array il n'y en a que 12, c'est normal ?
    EDIT 2 : En fait, je me suis trompée car j'ai donné une valeur à nom_contact, ça m'a donné ce résultat. Je reprends, en essayant votre code tel qu'il est, l'insertion marche mais mes champs sont toujours à NULL peu importe que j'insère ou pas

  10. #10
    Invité
    Invité(e)
    Par défaut
    Si tu ne montres pas ton code, on ne peut pas le corriger.

    A priori... au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nationalite=$_POST['nationalite'];
    $statut_conflit=$_POST['statut_conflit'];
    $etat=$_POST['etat'];
    ...
    Ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nationalite = (isset($_POST['nationalite']))? $_POST['nationalite'] : NULL;
    $statut_conflit = (isset($_POST['statut_conflit']))? $_POST['statut_conflit'] : NULL;
    $etat = (isset($_POST['etat']))? $_POST['etat'] : NULL;
    ...

  11. #11
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    JE reprends mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php  
    //date en France
    date_default_timezone_set('Europe/Paris');
    if (isset($_POST['valider']))
    	{ 	
    $nom_contact=$_SESSION['nom_contact'];
    				echo $nom_contact;
     
        		        $reponse = $bdd->query("SELECT * FROM structure WHERE nom_contact='$nom_contact'");
    			$donnees = $reponse->fetch(PDO::FETCH_ASSOC);	
    			$id_struct=$donnees['id_struct'];
    			while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
    				 if ($donnees["id_struct"]==$id_struct)	
    			                $id_struct=$donnees['id_struct'];	
     
    				$nationalite=$_POST['nationalite'];
    				$statut_conflit=$_POST['statut_conflit'];
    				$etat=$_POST['etat'];
    				$sexe=$_POST['sexe'];
    				$age=$_POST['age'];
    				$particularite=$_POST['particularite'];
    				$confession=$_POST['confession'];
    				$institution=$_POST['institution'];
    				$administrative=$_POST['administrative'];
    	                        $aide_sociale=$_POST['aide_sociale'];
    	                        $date_ajout = date('Y-m-d H:i:s'); 
     
    PRINT_r($_POST).'<br />';
    /* Exécute une requête préparée en passant un tableau de valeurs */
    $sth = $bdd->prepare('SELECT * FROM structure WHERE nom_contact=?');
    $sth->execute(array($nom_contact));
    while($data=$sth->fetch(PDO::FETCH_ASSOC)){
    	$insert=$bdd->prepare('INSERT INTO categorisation VALUES (null,?,?,?,?,"4",?,?,?,?,?,?,?,?,NULL)'); 
    	$insert->execute(array($data['id_struct'],$data['nationalite'],$data['statut_conflit'],$data['etat'],$data['sexe'],$data['age'],$data['particularite'],$data['confession'],$data['institution'],$data['administrative'],$data['aide_sociale'],$data['date_ajout']));
    }
    	}
     
    ?>
    @jreaux62
    J'ai essayé votre solution, mais ça ne change pas, tout est tjrs à NULL.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $insert->execute(array($data['id_struct'],$data['nationalite'],$data['statut_conflit'],$data['etat'],$data['sexe'],$data['age'],$data['particularite'],$data['confession'],$data['institution'],$data['administrative'],$data['aide_sociale'],$data['date_ajout']));
    C'est sûr que si tu n'inserts pas les valeurs récupérées plus haut.......

    Quant à "ma solution", ce n'en est pas une, mais la "bonne façon" de récupérer des champs : récupération du champ si renseigné, ou valeur par défaut.
    On peut éventuellement remplacer isset() par !empty(), mais comme tu ne montres pas non plus un extrait du formulaire, difficile à dire...

  13. #13
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Le formulaire est plutôt long, mais c'est le même principe pour tous les champs, ils sont dynamiques:
    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
    <?php
    $nom_contact=$_SESSION['nom_contact'];
    $sql = "SELECT count(*) FROM structure WHERE nom_contact='$nom_contact'";
    $result = $bdd->query($sql);
    $row = $result->fetch(PDO::FETCH_NUM);
     
    $reponse = $bdd->query("SELECT * FROM structure WHERE nom_contact='$nom_contact'");
    $donnees = $reponse->fetch(PDO::FETCH_ASSOC);	
    $id_struct=$donnees['id_struct'];
    			while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
    				 if ($donnees["id_struct"]==$id_struct)	
    	$id_struct=$donnees['id_struct'];	
     
    $reponse = $bdd->query("SELECT * FROM categorisation WHERE id_struct='$id_struct'");
    $donnees = $reponse->fetch(PDO::FETCH_ASSOC);					
     
    $id_categori= $donnees['id_categori'];
    $nationalite= $donnees['id_nationalite'];
    $statut_conflit= $donnees['id_statut_conflit'];
    $etat= $donnees['id_etat'];
    $sepulture= $donnees['id_sepulture'];
    $sexe= $donnees['id_sexe'];
    $age= $donnees['id_age'];
    $particularite= $donnees['id_particularite'];
    $confession= $donnees['id_confession'];
    $institution= $donnees['id_institution'];
    $administrative= $donnees['id_administrative'];
    $aide_sociale= $donnees['id_aide_sociale'];
     
    $reponse1 = $bdd->query('SELECT * FROM nationalite'); 
     
    $reponse2 = $bdd->query('SELECT * FROM statut_conflit'); 
    $reponse3 = $bdd->query('SELECT * FROM etat'); 
    $reponse4 = $bdd->query('SELECT * FROM sepulture'); 
    $reponse5 = $bdd->query('SELECT * FROM sexe');
    $reponse6 = $bdd->query('SELECT * FROM age'); 
    $reponse7 = $bdd->query('SELECT * FROM particularite'); 
    $reponse8 = $bdd->query('SELECT * FROM confession'); 
    $reponse9 = $bdd->query('SELECT * FROM institution'); 
    $reponse10 = $bdd->query('SELECT * FROM administrative'); 
    $reponse11 = $bdd->query('SELECT * FROM aide_sociale');
    ?>					
    					<!--Nom contact -->
    						<section>
    							<label class="input">
    								<input type="text"  value="<?php echo $_SESSION['nom_contact']; ?>" placeholder="Nom du contact" onkeyup="autocomplet()" disabled="disabled">
    								<ul id="country_list_id"></ul>
    							</label>
    							<i></i>
     
    						</section>
    					<!--Fin -->
     
    					<div class="row">
    						<section class="col col-6">
    							<label class="select">
    								<select name="nationalite">';
    											<OPTION VALUE="">Nationalité*</OPTION>
    											<?php
    											while ($donnees1 = $reponse1->fetch(PDO::FETCH_ASSOC))
    											{ 	 if ($donnees1["id_nationalite"]==$nationalite)
    													echo '<OPTION VALUE="'.$donnees1["id_nationalite"].'" selected="selected">'.$donnees1["nationalite"].'</OPTION>';
    												else
    													echo '<OPTION VALUE="'.$donnees1["id_nationalite"].'">'.$donnees1["nationalite"].'</OPTION>';
    											} 
    									?>
     
    							</select>
    								<i></i>
    							</label>
    						</section>
     
    						<section class="col col-6">
    							<label class="select">
    								<select name="statut_conflit">
    											<OPTION VALUE="">Statut pendant conflit*</OPTION>';
    								<?php			while ($donnees2 = $reponse2->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees2["id_statut_conflit"]==$statut_conflit)
     
    												echo '<OPTION VALUE="'.$donnees2["id_statut_conflit"].'" selected="selected">'.$donnees2["statut_conflit"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees2["id_statut_conflit"].'">'.$donnees2["statut_conflit"].'</OPTION>';
    											} ?>
    									</select>
    								<i></i>
    							</label>
    						</section>
    					</div>
     
    					<div class="row">				
    						<section class="col col-6">
    							<label class="select">
    								<select id="etat" name="etat">
    											<OPTION VALUE="">Etat*</OPTION>';
    											<?php while ($donnees3 = $reponse3->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees3["id_etat"]==$etat)
     
    												echo '<OPTION VALUE="'.$donnees3["id_etat"].'" selected="selected">'.$donnees3["etat"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees3["id_etat"].'">'.$donnees3["etat"].'</OPTION>';
    											} ?>
    									</select>
    								<i></i>
    							</label>
    						</section>
    						<section class="col col-6">
    							<label class="select">
    								<select id="sepulture" name="sepulture">
    											<OPTION VALUE="">Sépulture*</OPTION>
    											<?php
    											while ($donnees4 = $reponse4->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees4["id_sepulture"]==$sepulture)
     
    												echo '<OPTION VALUE="'.$donnees4["id_sepulture"].'" selected="selected">'.$donnees4["sepulture"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees4["id_sepulture"].'">'.$donnees4["sepulture"].'</OPTION>';
    											}  
    											?>
    									</select>
    								<i></i>
    							</label>
    						</section>
    					</div>
     
    					<div class="row">
    						<section class="col col-6">
    							<label class="select">
    								<select name="sexe">
    											<OPTION VALUE="">Sexe*</OPTION>
    											<?php
    											while ($donnees5 = $reponse5->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees5["id_sexe"]==$sexe)
     
    												echo '<OPTION VALUE="'.$donnees5["id_sexe"].'" selected="selected">'.$donnees5["sexe"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees5["id_sexe"].'">'.$donnees5["sexe"].'</OPTION>';
    											}
    											?>											
    									</select>
    								<i></i>
    							</label>
    						</section>
     
    						<section class="col col-6">
    							<label class="select">
    								<select name="age">
    											<OPTION VALUE="">Age*</OPTION>';
    								<?php			while ($donnees6 = $reponse6->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees6["id_age"]==$age)
     
    												echo '<OPTION VALUE="'.$donnees6["id_age"].'" selected="selected">'.$donnees6["age"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees6["id_age"].'">'.$donnees6["age"].'</OPTION>';
    											} ?>
    			</select>
    								<i></i>
    							</label>
    						</section>
     
    						<section class="col col-6">
    							<label class="select">
    								<select id="particularite" name="particularite">
    											<OPTION VALUE="">Particularité*</OPTION>';
    									<?php		while ($donnees7 = $reponse7->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees7["id_particularite"]==$particularite)
     
    												echo '<OPTION VALUE="'.$donnees7["id_particularite"].'" selected="selected">'.$donnees7["particularite"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees7["id_particularite"].'">'.$donnees7["particularite"].'</OPTION>';
    											} ?>
    			</select>
    								<i></i>
    							</label>
    						</section>
    						<section class="col col-6">
    							<label class="select">
    								<select name="confession">
    											<OPTION VALUE="">Confession*</OPTION>';
    								<?php			while ($donnees8 = $reponse8->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees8["id_confession"]==$confession)
     
    												echo '<OPTION VALUE="'.$donnees8["id_confession"].'" selected="selected">'.$donnees8["confession"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees8["id_confession"].'">'.$donnees8["confession"].'</OPTION>';
    											}  ?>
    				</select>
    								<i></i>
    							</label>
    						</section>
     
    						<section class="col col-6">
    							<label class="select">
    								<select name="institution">
    											<OPTION VALUE="">Institution*</OPTION>';
    								<?php			while ($donnees9 = $reponse9->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees9["id_institution"]==$institution)
     
    												echo '<OPTION VALUE="'.$donnees9["id_institution"].'" selected="selected">'.$donnees9["institution"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees9["id_institution"].'">'.$donnees9["institution"].'</OPTION>';
    											}  ?>
    				</select>
    								<i></i>
    							</label>
    						</section>
    						<section class="col col-6">
    							<label class="select">
    								<select name="administrative">
    											<OPTION VALUE="">Situation administrative*</OPTION>';
    								<?php			while ($donnees10 = $reponse10->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees10["id_administrative"]==$administrative)
     
    												echo '<OPTION VALUE="'.$donnees10["id_administrative"].'" selected="selected">'.$donnees10["administrative"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees10["id_administrative"].'">'.$donnees10["administrative"].'</OPTION>';
    											}  ?>
    								</select>
    								<i></i>
    							</label>
    						</section>
    						<section class="col col-6">
    							<label class="select">
    								<select name="aide_sociale">
    											<OPTION VALUE="">Bénéficiaire des services d'aide sociale de l'Etat*</OPTION>';
    							<?php				while ($donnees11 = $reponse11->fetch(PDO::FETCH_ASSOC))
    											{if ($donnees11["id_aide_sociale"]==$aide_sociale)
     
    												echo '<OPTION VALUE="'.$donnees11["id_aide_sociale"].'" selected="selected">'.$donnees11["aide_sociale"].'</OPTION>';
    											else
    												echo '<OPTION VALUE="'.$donnees11["id_aide_sociale"].'">'.$donnees11["aide_sociale"].'</OPTION>';
    											} ?> 
    								</select>
    								<i></i>
    							</label>
    						</section>					
     
    <?php	
     
    ?> 	
     
    			</div>
     
    				<footer>
    					<button type="submit" class="button" name="valider">Valider</button>
    					<!--<a href="#sky-form" class="button button-secondary modal-opener">Contrôler</a>-->
     
    				</footer>
    			</form>

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    ..., mais comme tu ne montres pas non plus un extrait du formulaire, difficile à dire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<OPTION VALUE="">..........*</OPTION>';
    Voilà ce qui nous intéresse.

    Si le select n'est pas renseigné, tu récupères '' (value) => chaine VIDE
    A NE PAS confondre avec NULL.

    D'où ma méthode de récupération des sélections......

  15. #15
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    ça marche!
    Avec votre code, j'avais une erreur SQL à cause du NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nationalite = (isset($_POST['nationalite']))? $_POST['nationalite'] : NULL;
    $statut_conflit = (isset($_POST['statut_conflit']))? $_POST['statut_conflit'] : NULL;
    $etat = (isset($_POST['etat']))? $_POST['etat'] : NULL;
    ...
    Et lorsque je l'ai mis entre quottes, ça l'a pris en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $etat=(isset($_POST['etat']) && !empty($_POST['etat'])) ? "'".$_POST['etat']."'":'NULL';
    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/09/2013, 16h18
  2. meme nom de champs obligatoire pour le mapping
    Par SGASSAMA dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 13/07/2009, 17h21
  3. Réponses: 12
    Dernier message: 24/10/2007, 12h00
  4. pourquoi mes champs INPUT prennent plus de place que la normal ?
    Par Ekimasu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 21/05/2007, 11h50
  5. [ACCESS] Requete obligatoire pour operations sur champs ?
    Par fredrider dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 18/07/2006, 10h27

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