si la solution est plus compliquer, et tout cas ma reponse est simple:
c'est pour permettre au visiteur de modifier ces info si elle sont erronées
j'ai pas vraiment envie d'avoir un bouton soumettre et un enregistrer l'un à coté de l'autre car sa serai moins claire et je veut être certain que:
1) les données sont correct
2) quel ont passer mes filtres (regex pour la validiter et la securité)
désolé pour la tartine mais je vais remettre le code complet car ça sera plus facile à comprendre, et possible de tester en local. J'ai retirer une dixaine de champs pour l'alegé un peu
le voilà:
<!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">
<html>
<head>
<title>:: Formulaire d'inscription ::</title>
<style type="text/css">
/* <![CDATA[ */
body {text-align: center; background-color: white; }
#page {width : 525px; margin-left: auto; margin-right: auto; color: black; background-color: gray; border: 1px solid black; text-align: center; padding: 10px;}
.titre {font-family: verdana, helvetica, sans-serif; font-size: 1.4em; font-weight: bold; text-decoration: underline; text-align: center; margin: 0; padding: 0; color: red;}
p {font-family: verdana, helvetica, sans-serif; font-size: 10pt; font-weight: bold; text-align: left; color: black;}
label {float: left; font-family: verdana, helvetica, sans-serif; font-size: 10pt; font-weight: bold; }
fieldset {width: 500px; padding: 10px; text-align: right; border: 3px double #FF8C00; margin: 0; clear: left; background-color: navy;}
input {border: 1px solid #066; background-color: #ff9; color: black; }
input.cases {width: 200px; margin-top: 3px; }
input.verif {width: 150px; height: 30px; background-color: blue; font-weight : bold; padding: 0; margin: 0; border: 0; cursor: pointer;}
input.verif:hover {background-color: cyan;}
div.c3 {text-align:center; margin-top: 1em;}
.etoile {color: red; font-size: 1.3em; font-weight: normal; vertical-align: middle; margin-right: 5px;}
.legend {background-color: red; border: 3px double #FF8C00; margin-top: 10px; margin-bottom: 5px; float: left;}
.error {text-align: left; color: red !important;}
.info {font-family: verdana, helvetica, sans-serif; font-size: 14pt; font-style: italic; font-weight: normal; text-decoration: none; cursor: help; color: black ;}
.info:hover {color: gray;}
/* ]]> */
</style>
</head>
<body>
<div id="page">
<?php
/**
* On commence par vérifier si le bouton soumettant le formulaire a été
* cliqué, "envoi" étant l'attribut "name" du bouton "submit"
* Sinon, on saute à la ligne 166 de ce code.
*/
if(isset($_POST['envoi']))
{
/* Récupération des données du formulaire */
$prenom = isset($_POST['prenom']) ? trim($_POST['prenom']) : "";
$nom = isset($_POST['nom']) ? trim($_POST['nom']) : "";
$datenaiss = isset($_POST['datenaiss']) ? trim($_POST['datenaiss']) : "";
/**
* Définition de la variable servant pour definir le format de la date de naissance
* on utilise ici des expressions régulières.
*/
$valid_format_datenaiss = "#(\d{2})/(\d{2})/(\d{4})$#";
/* Définition des variables de verification de la validité de la date */
$jour = substr($datenaiss, 0, 2);
$mois = substr($datenaiss, 3, 2);
$annee = substr($datenaiss, 6, 4);
/**
* Traitement de vérification des champs vides ou invalides (phone, date, postal et/ou email)
* Conditions de mauvaises réponses (champ vide par exemple)
*/
if ($prenom == '' || $nom == '' || $datenaiss == '' ||!(preg_match($valid_format_datenaiss,$datenaiss)) || (($datenaiss) && (preg_match($valid_format_datenaiss,$datenaiss)) && (checkdate($mois, $jour, $annee) == false)))
{
/* Action à adopter */
?>
<p class="titre">Informations incomplètes</p>
<p>Un (ou plusieurs) champ(s) obligatoire(s) n'a(ont) pas été correctement rempli(s).</p>
<?php
if ($prenom == '')
{
/* Si le champ prenom est vide, */
print "<p class='error'>Vous n'avez pas précisé votre prénom</p>\n";
}
if ($nom == '')
{
/* Si le champ nom est vide, */
print "<p class='error'>Vous n'avez pas précisé votre nom</p>\n";
}
if(!$datenaiss)
{
/* Si le champ datenaiss est vide, */
print "<p class='error'>Vous avez omis de mentionner votre date de naissance</p>\n";
}
if(($datenaiss) && !(preg_match($valid_format_datenaiss, $datenaiss)))
{
/* Si il y a une date inscrite mais invalide */
print "<p class='error'>Le format de la date de naissance saisie est invalide !</p>\n";
}
/* Si il y a une date inscrite, au bon format, mais invalide */
if (($datenaiss) && (preg_match($valid_format_datenaiss,$datenaiss)) && (checkdate($mois, $jour, $annee) == false))
{
print "<p class='error'>La date de naissance saisie est invalide !</p>\n";
}
/**
* Si les vérifications ont généré des erreurs, affichage du formulaire
* contenant les données déjà saisies.
*/
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<p class="legend"><b> Données personnelles </b></p>
<fieldset>
<label for="label_prenom">Votre prénom :</label><span class="etoile">*</span><input type="text" id="label_prenom" name="prenom" maxlength="40" class="cases" value="<?php echo $prenom ?>" /><a href="#" class="info" title="Lettres uniquement !">?</a><br />
<label for="label_nom">Votre Nom de famille :</label><span class="etoile">*</span><input type="text" id="label_nom" name="nom" maxlength="40" class="cases" value="<?php echo $nom ?>" /><a href="#" class="info" title="Lettres uniquement !">?</a><br />
<label for="label_datenaiss">Votre date de naissance :</label><input type="text" id="label_datenaiss" name="datenaiss" maxlength="10" class="cases" value="<?php echo $datenaiss ?>" /><a href="#" class="info" title="Format JJ/MM/AAAA !">?</a><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input type="reset" class="verif" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
else
{
/**
* Si aucun des champs obligatoire n'est vide et les données sont valides:
* Traitement des données
*/
// Affichage du message final des informations reçues
?>
<p class='titre'>Merci ! Voici les informations fournies</p>
<h3>Informations sur le membre:</h3>
<h3>Informations sur le contact:</h3>
<p class='info_recup'><?php echo ($nom)?> <?php echo ($prenom) ?></p>
<p><span class='info_style'>Né(e) le:</span> <span class='info_recup'><?php echo ($datenaiss)?></span></p>
<p class='info_style2'>Si vous souhaitez modifier ces informations, cliquez <a href="javascript:history.back();" title="Retour vers le formulaire">ICI</a></p>
<hr>
<h3>Validation des informations</h3>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"><input type="submit" class="verif" name="save" value="S'enregistrer" /></form>
<?php
// enregistement en base de donnée dans une table
if(isset($_POST['save']))
{
// mise au format ISO de la date de naissance
$datenaiss_sql = "$annee-$mois-$jour";
// cryptage du pass
//connexion au serveur MySQL
include ("sql_connection.php");
$connexion = mysql_connect($host, $user, $pass) or die('Erreur SQL !<br />'.$connexion.'<br />'.mysql_error());
//sélection de la BDD
$db = mysql_select_db($usebdd,$connexion) or die('Erreur SQL !<br />'.$db.'<br />'.mysql_error());
// insertion des données recuperer dans la table
$sql = "INSERT INTO " . $table2 . " (prenom, nom, datenaiss) VALUES('$prenom', '$nom', '$datenaiss_sql')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// déconnection avec MySQL
mysql_close();
// redirection
header("location: index.php");
exit;
}
}
}
/**
* Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait
* été cliqué, alors on affiche le formulaire normalement
*/
else
{
?>
<p class="titre">Complétez les informations pour ajouter votre nom à la liste des membres</p>
<p>Notez que les champs précédés d'une <span class="etoile">*</span>doivent obligatoirement être remplis.</p>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<p class="legend"><b> Données personnelles </b></p>
<fieldset>
<label for="label_prenom">Votre prénom :</label><span class="etoile">*</span><input type="text" id="label_prenom" name="prenom" maxlength="40" class="cases" tabindex="4" value="" /><a href="#" class="info" title="Lettres uniquement !">?</a><br />
<label for="label_nom">Votre Nom de famille :</label><span class="etoile">*</span><input type="text" id="label_nom" name="nom" maxlength="40" class="cases" tabindex="5" value="" /><a href="#" class="info" title="Lettres uniquement !">?</a><br />
<label for="label_datenaiss">Votre date de naissance :</label><input type="text" id="label_datenaiss" name="datenaiss" maxlength="10" class="cases" tabindex="11" value="" /><a href="#" class="info" title="Format JJ/MM/AAAA !">?</a><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" tabindex="12" value="Envoyer" /> <input type="reset" class="verif" tabindex="13" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
si quelqu'un à une solution à me proposer
