Un problème classique. Faut bien structurer ses pages pour pouvoir faire le tout gaiement ^^
Perso ma structure est toujours la même:
Et en synthétique en PHP, ça me donne ça:
Perso ma structure est toujours la même:
Code :
inclusion de fichier config et autre
- Si traitement à faire, je traite + gestion des erreurs éventuels
- Si le traitement est réussi, je peux rediriger sur une autre page éventuellement.
- Inclusion de l'header de ma page
- Corps de ma page
- Footer
Et en synthétique en PHP, ça me donne ça:
Code PHP :
<?php
require('./config.php');
// J'instancie plusieurs variables "génériques"
$erreur = ARRAY();
$titre = 'Modification du pseudo';
//=====================
// Traîtement POST-formulaire
//=====================
// Une simple condition pour savoir si un formulaire a été activé
if(isset($_POST['action'])) {
// Si un formulaire a été déclenché, je le traite ici, je commence directement par un "gestionnaire" d'erreurs
// (l'exemple qui suit est complètement factice)
if($x > 0) {
$erreur['x'] = 'C\'est pas bien t\'as fait une erreur!';
}
elseif($y >= 8) {
$erreur['y'] = 'J\'ai dit non!';
}
// Je vérifie qu'il n'y a pas eu d'erreurs pour aller plus loin dans le traitement du formulaire
if(count($erreur) == 0) {
// Je fais le traitement du formulaire ici, exemple rapide avec une requête SQL factice
$sql = "UPDATE player SET pseudo = 'LULINSUPERSTAR' WHERE idPlayer = '99999'";
if(query($sql, __FILE__, __LINE__) === TRUE) {
// Fonction de redirection
succes('Votre pseudo a bien été changé', './exemple.html');
}
}
}
//=====================
// Fin traîtement POST-formulaire
//=====================
// inclusion de l'header
require('./header.php');
echo '
<p class="title">Changement de pseudo</p>
<form action="" method="post">
<br />
<label for="pseudo">Nom du héros:</label>
<input type="text" id="pseudo" name="pseudo" size="15" maxlength="14" value="',$pseudo,'" />
',affiche_erreur($erreur['pseudo']),'<br />
<input type="submit" value="S\'engager" class="bouton" />
<input type="hidden" name="action" value="subscribe" />
</form>'.n();
require("./footer.php");
?>
Comme ça il me suffit d'avoir un tableau "$erreur" dans ma gestion d'erreur. Et je les affiche au-dessus de mon formulaire (affiche_erreur()), sans aucune redirection en cas de "problème". J'ai même pas besoin de buffer du coup (qui peut être une bonne solution).