Code : Tout sélectionner
<input name="Pere" value="<?php echo @_POST["Pere"]; ?>" size=20>$_POST["NbEnfants"] = (isset($_POST["NbEnfants"]) ? $_POST["NbEnfants"]-1 : 1;
if ($_POST["NbEnfants"] == 0) { header("Location: page_de_renvoi_final.php"); }
Code : Tout sélectionner
function addinput(idChamp) {
var conteneur = document.getElementById(idChamp);
var ligne = document.createElement('p');
var nom = document.createElement('input');
nom.setAttribute('type','text');
nom.setAttribute('name','nom[]');
//...
ligne.appendChild(nom);
conteneur.appendChild(ligne);
//...
}
Pour ceux qui seraient également intéressés par un formulaire à dupliquer, j'ai trouvé un site magnifique qui permet d'y parvenir à l'aide d'AJAX.
http://www.zapatec.com/website/main/pro ... tiple.html
Code : Tout sélectionner
<p><b>Nom famille : </b><input type="text" name="nom_famille" value="<?php echo $_GET['nom_famille']; ?>" /></p>
<p><b>Prénom du Père : </b><input type="text" name="prenom_pere" value="<?php echo $_GET['prenom_pere']; ?>" /></p>
<p><b>Prénom de la mère : </b><input type="text" name="prenom_mere" value="<?php echo $_GET['prenom_mere']; ?>" /></p>
<p><b>Nom de jeune fille de la mère : </b><input type="text" name="nom_jeune_fille_mere" value="<?php echo $_GET['nom_jeune_fille_mere']; ?>" /></p>
<p><b>Nombre d'enfants :</b><input type="text" name="nombre_enfants" value="<?php echo ($_GET['nombre_enfants']?$_GET['nombre_enfants']:1); ?>" />
<input type="submit" value="Afficher formulaire enfants" /></p>
Code : Tout sélectionner
<p><b>Prénom de l'enfant : </b><input type="text" name="prenom_enfant[]" value="<?php echo $_GET['prenom_enfant'][$i]; ?>" /></p>
<p><b>Date de naissance : </b><input type="text" name="date_naissance_enfant[]" value="<?php echo $_GET['date_naissance_enfant'][$i]; ?>" /></p>
<form>
<?php
//Afficher le modèle de la zone de données des parents
include("fiche_famille.htm");
//Selon le nombre d'enfants, afficher le(s) formulaire(s) de(s) enfant(s)
$_GET['nombre_enfants'] = $_GET['nombre_enfants']>0?$_GET['nombre_enfants']:1; //par défaut, afficher zone de données pour un enfant
if ($_GET['nombre_enfants']>0){
for($i = 0; $i<$_GET['nombre_enfants']; $i++) {//0 est l'index du premier enfant
//Insérer le modèle de la zone de données enfant
include("fiche_enfant.htm");
}
}
?>
<p><input type="submit" name="enregistrer" value="Enregistrer" /></p>
</form>
L'algorithme est simple :
<?php
//Enregistrement dans la Session
if ($_GET['enregistrer']){
//enregistrer la famille
$famille['nom_famille'] = $_GET['nom_famille'];
$famille['prenom_pere'] = $_GET['prenom_pere'];
$famille['prenom_mere'] = $_GET['prenom_mere'];
$famille['nom_jeune_fille_mere'] = $_GET['nom_jeune_fille_mere'];
$famille['nombre_enfants'] = $_GET['nombre_enfants'];
for($i = 0; $i<$_GET['nombre_enfants']; $i++){
$famille['enfants'][$i]['prenom_enfant'] = $_GET['prenom_enfant'][$i];
$famille['enfants'][$i]['date_naissance_enfant'] = $_GET['date_naissance_enfant'][$i];
}
$_SESSION['famille'] = $famille;
//Message de confirmation d'enregistrement
echo "<pre><b>Merci, votre enregistrement est pris en compte</b><ul>";
print_r($famille);
echo "</ul></pre>";
}
?>
ou bien, pour enregistrer les données dans un fichier :
<?php
//Enregistrement CSV
if ($_GET['enregistrer']){
//enregistrer la famille
$famille = array($_GET['nom_famille'], $_GET['prenom_pere'], $_GET['prenom_mere'], $_GET['nom_jeune_fille_mere'], $_GET['nombre_enfants']);
for($i = 0; $i<$_GET['nombre_enfants']; $i++){
$famille[] = $_GET['prenom_enfant'][$i];
$famille[] = $_GET['date_naissance_enfant'][$i];
}
$f = fopen('familles.csv', 'a'); //ouvre le fichier de données CSV en mode Ajout
fputcsv($f, $famille); //écrit les zones de données de la famille
fclose($f);
//Message de confirmation d'enregistrement
echo "<pre><b>Merci, votre enregistrement est pris en compte</b><ul>";
print_r($famille);
echo "</ul></pre>";
}
?>
ou bien en enregistrant par SQL:
<?php
//SQL
if ($_GET['enregistrer']){
//enregistrer la famille dans la table 'famille' clé primaire = 'nom_famille'
$sql = sprintf("INSERT INTO famille (nom_famille, prenom_pere, prenom_mere, nom_jeune_fille_mere, nombre_enfants) VALUES ('%s', '%s', '%s', '%s', '%s')"
, $_GET['nom_famille'], $_GET['prenom_pere'], $_GET['prenom_mere'], $_GET['nom_jeune_fille_mere'], $_GET['nombre_enfants']);
mysql_db_query("bd_test", $sql, mysql_connect('localhost', 'root'));
//
for($i = 0; $i<$_GET['nombre_enfants']; $i++){
//La table 'enfant' est liée à la table 'famille' par la clé étrangère 'nom_famille'
$sql = sprintf("INSERT INTO enfant (nom_famille, prenom_enfant, date_naissance_enfant) VALUES ('%s', '%s', '%s')"
, $_GET['nom_famille'], $_GET['prenom_enfant'][$i], $_GET['date_naissance_enfant'][$i]);
mysql_db_query("bd_test", $sql, mysql_connect('localhost', 'root'));
}
mysql_close();
//Message de confirmation d'enregistrement
echo "<pre><b>Merci, votre enregistrement est pris en compte</b><ul>";
print_r($_GET);
echo "</ul></pre>";
}
?>