Bonjour,
Je tente actuellement de créer une page web qui permet de sélectionner un nombre de personnes et en fonction de ce nombre, des champs apparaitront en même quantité. Ces champs en question correspondent aux nom et prénom de ces personnes. Un exemple se trouve ici : http://testfred.chez.com/
Mon objectif est de rentrer les données dans une base, de retourner cette page avec les données de l'utilisateur et simultanément de m'envoyer un email pour m'avertir que quelqu'un à compléter le formulaire, et de pouvoir lire dans la base pour retourner les données d'un utilisateur à partir de son adresse email. Et que tout fonctionne sous Firefox, IE8, IE7 et IE6.
Comme vous pouvez le voir, la liste dynamique fonctionne (sous Firefox, je n'ai pas vérifié sous IE), mais je suis à présent bloqué pour entrer les données dans la base et faire fonctionner le bouton valider. Je précise que je souhaite éviter autant que possible le javascript.
Voici actuellement le code de la page :
Pour faire fonctionner le bouton Valider, j'ai tenté de faire fonctionner le premier <gras>if</gras> en ajoutant une propriété name à input type="submit" sous la forme :
<input type="submit" name="submit" value="Valider" />
Mais dans ce cas, ma liste dynamique ne fonctionne plus et il est donc impossible d'entrer plus d'un nom et d'un prénom. Or sans cette possibilité, impossible d'entrer toutes les données dans la base, vu que l'utilisateur ne pourra pas toutes les entrer.
Avez-vous une solution à ce problèmre ?
Une autre question pour un problème qui risque de se poser bientôt : Comment puis-je faire pour que la validation du formulaire renvoie à la fois vers une page et m'envoie un email ?
Merci d'avance pour votre aide
Modifié par SkyCorp (02 May 2009 - 15:43)
Je tente actuellement de créer une page web qui permet de sélectionner un nombre de personnes et en fonction de ce nombre, des champs apparaitront en même quantité. Ces champs en question correspondent aux nom et prénom de ces personnes. Un exemple se trouve ici : http://testfred.chez.com/
Mon objectif est de rentrer les données dans une base, de retourner cette page avec les données de l'utilisateur et simultanément de m'envoyer un email pour m'avertir que quelqu'un à compléter le formulaire, et de pouvoir lire dans la base pour retourner les données d'un utilisateur à partir de son adresse email. Et que tout fonctionne sous Firefox, IE8, IE7 et IE6.
Comme vous pouvez le voir, la liste dynamique fonctionne (sous Firefox, je n'ai pas vérifié sous IE), mais je suis à présent bloqué pour entrer les données dans la base et faire fonctionner le bouton valider. Je précise que je souhaite éviter autant que possible le javascript.
Voici actuellement le code de la page :
<body>
<div id="corps">
<h1>Confirmez votre présence</h1>
...
// si l'utilisateur soumet le formulaire on affiche la valeur de tous les champs du formulaire
if (isset($_POST['submit']) && $_POST['submit'] == "Valider")
{
// on affiche le nombre de champs du formulaire
echo 'Nombre d_accompagnants : '.$_POST['nb_accompagnants_formulaire'].'<br />';
// on affiche la valeur des champs du formulaire
for ($i=0; $i<=$_POST['nb_accompagnants_formulaire']; $i++)
{
$dynamique = 'nom_'.$i;
$value = $_POST[$dynamique];
echo 'Valeur du champ '.$i.' : '.$value.'<br />';
}
}
// sinon on affiche le formulaire avec la possibilité d'ajout des champs au formulaire
else
{
// on défini le nombre initial de champs
if (!isset($_POST['nb_accompagnants_formulaire'])) // Test pour vérifier si les variables n'existent pas
{
$_POST['nb_accompagnants_formulaire'] = 0;
}
function choixParDefaut($nb_pers) // Fonction permettant la conservation automatique du nombre de personnes lors de sa sélection dans le formulaire
{
$par_defaut = ''; // On crée une variable (vide par défaut) que l'on retournera à la fin
if (isset($_POST['nb_accompagnants_formulaire'])) // Si le visiteur a choisi une valeur
{
if (<ital>$nb_pers</ital> == $_POST['nb_accompagnants_formulaire']) // Si cette valeur correspond à la valeur que l'on est en train de traiter
{
$par_defaut='selected="selected"'; // Alors on modifie la variable que l'on retournera et on lui met selected
}
}
return $par_defaut; // On ne retourne rien si ce n'était pas le nombre choisi, selected si c'était la bonne valeur
}
...
<form action="" method="post">
<div class="bloc">
<div class="cadre">
<p style='padding-left: 20px;'>
<input type="radio" name="participation" value="1" checked="checked" /> Sauf imprévu, nous confirmons notre venue
</p>
<p style='padding-left: 20px; padding-bottom: 15px;'>
<input type="radio" name="participation" value="0" /> A notre plus grand regret, nous sommes dans l'incapacité d'être présents
</p>
<p>
<br>
</p>
<p>
Merci d'indiquer votre nom ci-dessous :
</p>
<p style='padding-left: 20px;'>
<input type="text" name="prenom_0" value=" Votre prénom ici" />
</p>
<p style='padding-left: 20px; padding-bottom: 15px;'>
<input type="text" name="nom_0" value=" Votre nom ici" />
</p>
<p>
<br>
</p>
<p style='padding-bottom: 15px;'>Nombre de personnes vous accompagnant :
<select name="nb_accompagnants_formulaire" onchange="submit();"> <!-- onchange="submit()" valid automatiquement le formulaire dès qu'une option select est choisie -->
<option value="0" <?php echo choixParDefaut('0'); ?> >0</option>
<option value="1" <?php echo choixParDefaut('1'); ?> >1</option>
<option value="2" <?php echo choixParDefaut('2'); ?> >2</option>
<option value="3" <?php echo choixParDefaut('3'); ?> >3</option>
<option value="4" <?php echo choixParDefaut('4'); ?> >4</option>
<option value="5" <?php echo choixParDefaut('5'); ?> >5</option>
<option value="6" <?php echo choixParDefaut('6'); ?> >6</option>
<option value="7" <?php echo choixParDefaut('7'); ?> >7</option>
<option value="8" <?php echo choixParDefaut('8'); ?> >8</option>
<option value="9" <?php echo choixParDefaut('9'); ?> >9</option>
<option value="10" <?php echo choixParDefaut('10'); ?> >Plus</option>
</select>
</p>
<?php
for ($var = 0; $var <= $_POST['nb_accompagnants_formulaire']; $var++)
{
if ($var == 1)
{
?>
<p>
Précisez le nom des personnes concernées :
</p>
<?php
}
if ($var >= 1)
{
?>
<p style='padding-left: 20px;'>
<input type="text" name="prenom_'.$var.'" value=" Prénom" />
</p>
<p style='padding-left: 20px; padding-bottom: 15px;'>
<input type="text" name="nom_'.$var.'" value=" Nom" />
</p>
<?php
}
}
?>
</div>
<div class="cadre_droite">
<p>
Veuillez indiquer votre adresse e-mail ci-dessous pour pouvoir vous contacter.
</p>
<p>
Si vous avez déjà complété ce formulaire, entrer votre adresse e-mail pour pouvoir modifier vos données ou votre sélection.
<br><br>
</p>
<p style='padding-left: 0px; padding-bottom: 15px;'>
<input type="text" name="email_1" />
@
<input type="text" name="email_2" />
</p>
<p>
<br>
Commentaires :
</p>
<p>
<?php
if ($_POST['nb_accompagnants_formulaire'] == "10")
{
?>
Indiquez notamment les personnes supplémentaires présentes
<?php
}
?>
</p>
<p>
<textarea name="message" rows="8" cols="45"> Votre message ici.</textarea>
</p>
</div>
</div>
<div style='clear: left;'> <!-- Supprime l'effet du flottant à gauche précédent -->
</div>
<p style='text-align:center;'>
<input type="submit" value="Valider" />
</p>
</form>
<?php
}
?>
</body>
Pour faire fonctionner le bouton Valider, j'ai tenté de faire fonctionner le premier <gras>if</gras> en ajoutant une propriété name à input type="submit" sous la forme :
<input type="submit" name="submit" value="Valider" />
Mais dans ce cas, ma liste dynamique ne fonctionne plus et il est donc impossible d'entrer plus d'un nom et d'un prénom. Or sans cette possibilité, impossible d'entrer toutes les données dans la base, vu que l'utilisateur ne pourra pas toutes les entrer.
Avez-vous une solution à ce problèmre ?
Une autre question pour un problème qui risque de se poser bientôt : Comment puis-je faire pour que la validation du formulaire renvoie à la fois vers une page et m'envoie un email ?
Merci d'avance pour votre aide
Modifié par SkyCorp (02 May 2009 - 15:43)