Champs facultatifs dans un formulaire
Posté : 05 juil. 2019, 11:58
Bonjour à tous ! je suis nouvelle et assez débutante ! Je suis actuellement en stage pour créer une base de données naturaliste dans un bureau d'étude. Ce n'est pas ma formation de base mais comme ça me passionne, j'ai dit GO ! Mais voilà, après moultes galères, franchies avec brio ( Tadaaaaaa), j'en ai une qui me tient depuis 3 jours...
J'ai créé le formulaire de saisie des observations suivant :
Le problème est que quand je ne remplit pas l'un des champs, cela ne me crée pas de nouvelle entrée dans ma base de données, tandis que cela marche quand ils sont tous renseignés.
j'ai essayé de suivre une personne qui avait le même souci que moi, sauf que si pour lui c'est résolu, ce n'est pas mon cas.
(php-debutant/inserer-null-dans-bdd-lors ... 77684.html)
Je fais pour l'instant des essais uniquement avec quelques champs (nomlat,observateur,sexe,methode,std et str) et j'essaye de ne pas remplir le champs observateur.
Si vous avez des pistes.. car je sèche totalement... MERCI d'avance !
J'ai créé le formulaire de saisie des observations suivant :
<!DOCTYPE html>
<html>
<head>
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="style.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="icons/font/flaticon.css">
<!-- <link rel="stylesheet" href="TEST_MENU/style.css"> -->
<meta charset="utf-8"/>
<!-- <title> Menu Principal </title> -->
</head>
<body >
<!-- HTML -->
<div class="container col-lg-12 MENU scrolling" id="">
<h1 class= "row Header2 col-lg-6 relative ColorRecherche"> Saisie des observations</h1>
<div class="col-lg-12 ">
<div class="Module col-lg-12 col-xs-12">
<form method="post" action="P_FormEnvoi.php" class="FormRecherche FormAlign col-lg-12 col-xs-12" >
<div class="FieldLabelAlign col-lg-6 col-xs-6 " >
<label for="Nom_lat"> Nom latin :</label>
<label for="Nom_Ver"> Nom vernaculaire :</label>
<label for="Nb_ind"> Nombre d'individus :</label>
<label for="Cmtr"> Commentaire(s) :</label>
<label for="Localisation"> Localisation :</label>
<label for="Observateur"> Observateur :</label>
<label for="N_affaire"> Numero d'affaire :</label>
</div>
<div class="FieldLabelAlign col-lg-6 col-xs-6">
<input type="text" name="Nom_lat" id="Nom_lat" autofocus required/>
<input type="text" name="Nom_Ver" id="Nom_Ver" />
<input type="text" name="Nb_ind" id="Nb_ind" />
<input type="text" name="Cmtr" id="Cmtr" />
<input type="text" name="Observateur" id="Observateur" />
<input type="text" name="N_affaire" id="N_affaire" />
</div>
<div class="FieldLabelAlign col-xs-6" >
<label for="Methode"> Methode :</label>
<label for="Recouvrement"> Recouvrement :</label>
<label for="Sexe"> Sexe :</label>
<label for="Stade_dev"> Stade de développement :</label>
<label for="Statut_repro"> Statut reproducteur :</label>
</div>
<div class="FieldLabelAlign col-xs-6">
<select name="Methode" id="Methode" size="1">
<option></option>
<option>Vu</option>
<option>Entendu</option>
<option>Exuvie</option>
<option>Trace/indice</option>
<option>Inconnu</option>
<option>Nid/Gîte</option>
<option>Ultrason</option>
<option>Vu ET Entendu</option>
<option>En main/prélèvement</option>
</select>
<select name="Recouvrement" id="Recouvrement" size="1">
<option></option>
<option>0%</option>
<option>25%</option>
<option>50%</option>
<option>75%</option>
<option>100%</option>
</select>
<select name="Sexe" id="Sexe" size="1">
<option>Inconnu</option>
<option>Femelle</option>
<option>Mâle</option>
<option>Mixte</option>
</select>
<select name="Stade_dev" id="Stade_dev" size="1">
<option></option>
<option>Indéterminé</option>
<option>Oeuf</option>
<option>Larve</option>
<option>Chrysalide</option>
<option>Exuvie</option>
<option>Adulte</option>
</select>
<select name="Statut_repro" id="Statut_repro" size="1">
<option></option>
<option>Inconnu</option>
<option>Non reproducteur</option>
<option>Reproducteur possible</option>
<option>Reproducteur probable</option>
<option>Reproducteur certain</option>
</select>
</div>
<div class="SendQuiery">
<input type="submit" name="Rechercher" value="ENVOYER"/>
</div>
</form>
</div>
</div>
<!-- MENU -->
<input type="checkbox" id="togglebox" />
<nav id="offcanvas-menu">
<ul class="menu">
<li>
<a href="P_Accueil.php">Accueil</a>
</li>
<li>
<a href="P_Creation.php">Création</a>
</li>
<li>
<a href="P_Saisie.php">Saisie</a>
</li>
<li>
<a href="P_Modification.php">Modification</a>
</li>
<li>
<a href="P_Recherche.php">Recherche</a>
</li>
<li>
<a href="P_Support.php">Support</a>
</li>
</ul>
</nav>
<div id="contentarea">
<label for="togglebox" id="navtoggler">Menu</label>
</div>
<!--Fin Menu-->
</div>
<!-- RETOUR CONDITION PHP -->
</body>
</html>
et celui ci, après validation, m'envoie sur cette page : <!DOCTYPE html>
<html>
<head>
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="style.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="icons/font/flaticon.css">
<!-- <link rel="stylesheet" href="TEST_MENU/style.css"> -->
<meta charset="utf-8"/>
<!-- <title> Menu Principal </title> -->
</head>
<body >
<!-- HTML -->
<div class="container col-lg-12 MENU scrolling" id="">
<?php
try
{
// PDO
// Logins
$bdd = new PDO('mysql:host=mysql-naemeris.alwaysdata.net; dbname=naemeris_bdd_test_mig; charset = utf8', 'naemeris', '************************');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
// Message erreur
die('Erreur : ' . $e->getMessage());
}
$tab = array(
':nomlat' => $_POST['Nom_lat'],
':observateur' => (empty($_POST['Observateur']) ? NULL : $_POST['Observateur']),
':sexe' => $_POST['Sexe'],
':methode' => $_POST['Methode'],
':stade_dev' => $_POST['Stade_dev'],
':statut_repro' => $_POST['Statut_repro']);
//Creation de la requete INSERT :
$sql ='INSERT INTO observation (id_ESP,id_OBR,id_SEX,id_MET,id_STR,id_STD) SELECT id_ESP,id_OBR,id_SEX,id_MET,id_STR,id_STD FROM espece,observateur,sexe,methode,statut_repro,stade_dev WHERE espece.NOM_LAT=:nomlat
AND observateur.OBSERVATEUR=:observateur AND sexe.SEXE=:sexe AND methode.METHODE=:methode AND statut_repro.STATUT_REPRO=:statut_repro AND stade_dev.STADE_DEV=:stade_dev';
$req = $bdd->prepare($sql);
if ($req->execute($tab)) {
echo 'Insertion effectuée';
} else {
echo 'Erreur d\'insertion';
}
?>
<?php
var_dump($_POST);
$req-> closeCursor();
?>
</div>
</div>
<!-- RETOUR CONDITION PHP -->
</body>
</html>
Le principe est le suivant : Seul mon champ Nom_Lat est obligatoire, les autres pourrons ne pas être remplis, soit parce que l'observation ne les concernent pas ( exemple : la faune n'a pas besoin du recouvrement) soit parce qu'il ne sont pas connus lors de la saisie et pourrons être renseigné plus tard via un formulaire de modification.Le problème est que quand je ne remplit pas l'un des champs, cela ne me crée pas de nouvelle entrée dans ma base de données, tandis que cela marche quand ils sont tous renseignés.
j'ai essayé de suivre une personne qui avait le même souci que moi, sauf que si pour lui c'est résolu, ce n'est pas mon cas.
(php-debutant/inserer-null-dans-bdd-lors ... 77684.html)
Je fais pour l'instant des essais uniquement avec quelques champs (nomlat,observateur,sexe,methode,std et str) et j'essaye de ne pas remplir le champs observateur.
Si vous avez des pistes.. car je sèche totalement... MERCI d'avance !