par
Saian » 01 juin 2019, 12:17
Si tu as une soumissions du formulaire à chaque étape, ben il faut que tu remettes tous les champs reçu en hidden dans la partie suivante du formulaire.
Tu pourrais sinon utiliser la session pour stocker les données de chaque étape sans les transporter d'une étape à l'autre et pouvoir tout récupérer lors de la dernière.
Dans le style (avec peut être des erreurs) :
function actionPriseRdv($twig, $db) {
/* initialise le formulaire */
$form = array();
$form['step'] = false;
/* traitement de la première étape */
if (isset($_POST['btNext'])) {
/* récupération des données */
$_SESSION['date'] = $_POST['date'];
$_SESSION['method'] = $_POST['method'];
/* définition variable de sortie */
$form['step'] = true;
}
/* traitement de la deuxième étape */
elseif (isset($_POST['btRdv'])) {
/* récupération des données */
$message = $_POST['message'];
$heure = $_POST['heure'];
/* insertion du rendez vous */
$rdv = new rdv($db);
$exec = $rdv->insert($_SESSION['date'], $_SESSION['method'], $heure, $message);
/* traitement des erreurs */
if (!$exec) {
$form['valide'] = false;
$form['message'] = 'Il y a eu un problème';
}
else {
$form['valide'] = true;
$form['message'] = 'Ca a fonctionné !';
}
}
/* rendu de la page */
echo $twig->render('priserdv.html.twig', array('form' => $form));
}
PS : je t'encourage vivement a bien tabuler ton code, c'est tellement plus simple à lire et ça peut permettre d'éviter des erreurs grossières. Il est intéressant de bien séparer les blocs de code aussi en fonction de ce à quoi ils servent pour une meilleur lisibilité. Par exemple il te manque pas mal de balises ouvrantes ou fermantes dans ton code twig ainsi que la balise form qui n'est pas fermée au bon endroit et les tabulations à l'arrache empêchent de bien voir où commencent et où terminent les blocs. La rigueur c'est quand même important quand on écrit du code.
{% if session.login is defined %}
<form method="post" action="index.php?page=priserdv">
{% if form.step == false %}
<ul class="form-style-1">
<li>
<label for="datepicker">Date <span class="required">*</span></label>
<input type="text" name="date" class="field-long" id="datepicker" required="required"/>
</li>
<li>
<label for="method">Rendez vous par <span class="required">*</span></label>
<select id="method" name="method" class="field-select" required="required">
<option value="Skype">Skype</option>
<option value="SurPlace">Sur place</option>
<option value="Adomicile">A domicile</option>
</select>
</li>
<li>
<input type="submit" name="btNext" />
</li>
</ul>
{% else %}
<ul class="form-style-1">
<li>
<label for="heure">Horaires</label>
<select id="heure" name="heure" class="field-select" required="required">
<option value="1">09:00 - 10:00</option>
<option value="2">10:00 - 11:00</option>
<option value="3">11:00 - 12:00</option>
<option value="4">12:00 - 13:00</option>
<option value="5">13:00 - 14:00</option>
<option value="6">14:00 - 15:00</option>
<option value="7">16:00 - 17:00</option>
<option value="8">18:00 - 19:00</option>
</select>
</li>
<li>
<label for="message">Message <span class="required">*</span></label>
<textarea type="text" name="message" id="message" class="field-long field-textarea" required="required"></textarea>
</li>
<li>
<input type="submit" name="btRdv" />
</li>
</ul>
{% endif %}
</form>
{% else %}
Veuillez vous connecter a l'adresse suivante <a href="index.php?page=inscription">Se connecter</a>
{% endif %}
Si tu as une soumissions du formulaire à chaque étape, ben il faut que tu remettes tous les champs reçu en hidden dans la partie suivante du formulaire.
Tu pourrais sinon utiliser la session pour stocker les données de chaque étape sans les transporter d'une étape à l'autre et pouvoir tout récupérer lors de la dernière.
Dans le style (avec peut être des erreurs) :
[PHP]function actionPriseRdv($twig, $db) {
/* initialise le formulaire */
$form = array();
$form['step'] = false;
/* traitement de la première étape */
if (isset($_POST['btNext'])) {
/* récupération des données */
$_SESSION['date'] = $_POST['date'];
$_SESSION['method'] = $_POST['method'];
/* définition variable de sortie */
$form['step'] = true;
}
/* traitement de la deuxième étape */
elseif (isset($_POST['btRdv'])) {
/* récupération des données */
$message = $_POST['message'];
$heure = $_POST['heure'];
/* insertion du rendez vous */
$rdv = new rdv($db);
$exec = $rdv->insert($_SESSION['date'], $_SESSION['method'], $heure, $message);
/* traitement des erreurs */
if (!$exec) {
$form['valide'] = false;
$form['message'] = 'Il y a eu un problème';
}
else {
$form['valide'] = true;
$form['message'] = 'Ca a fonctionné !';
}
}
/* rendu de la page */
echo $twig->render('priserdv.html.twig', array('form' => $form));
}[/PHP]
PS : je t'encourage vivement a bien tabuler ton code, c'est tellement plus simple à lire et ça peut permettre d'éviter des erreurs grossières. Il est intéressant de bien séparer les blocs de code aussi en fonction de ce à quoi ils servent pour une meilleur lisibilité. Par exemple il te manque pas mal de balises ouvrantes ou fermantes dans ton code twig ainsi que la balise form qui n'est pas fermée au bon endroit et les tabulations à l'arrache empêchent de bien voir où commencent et où terminent les blocs. La rigueur c'est quand même important quand on écrit du code.
[html]{% if session.login is defined %}
<form method="post" action="index.php?page=priserdv">
{% if form.step == false %}
<ul class="form-style-1">
<li>
<label for="datepicker">Date <span class="required">*</span></label>
<input type="text" name="date" class="field-long" id="datepicker" required="required"/>
</li>
<li>
<label for="method">Rendez vous par <span class="required">*</span></label>
<select id="method" name="method" class="field-select" required="required">
<option value="Skype">Skype</option>
<option value="SurPlace">Sur place</option>
<option value="Adomicile">A domicile</option>
</select>
</li>
<li>
<input type="submit" name="btNext" />
</li>
</ul>
{% else %}
<ul class="form-style-1">
<li>
<label for="heure">Horaires</label>
<select id="heure" name="heure" class="field-select" required="required">
<option value="1">09:00 - 10:00</option>
<option value="2">10:00 - 11:00</option>
<option value="3">11:00 - 12:00</option>
<option value="4">12:00 - 13:00</option>
<option value="5">13:00 - 14:00</option>
<option value="6">14:00 - 15:00</option>
<option value="7">16:00 - 17:00</option>
<option value="8">18:00 - 19:00</option>
</select>
</li>
<li>
<label for="message">Message <span class="required">*</span></label>
<textarea type="text" name="message" id="message" class="field-long field-textarea" required="required"></textarea>
</li>
<li>
<input type="submit" name="btRdv" />
</li>
</ul>
{% endif %}
</form>
{% else %}
Veuillez vous connecter a l'adresse suivante <a href="index.php?page=inscription">Se connecter</a>
{% endif %}[/html]