Bonjour à tous,
J'ai un formulaire qui permet d'envoyer dans une base de données des comptes rendus. La partie envoi du formulaire, le contrôle du fichier PDF joint (taille, extension) et ajout dans la base de données fonctionne parfaitement. Le problème commence quand l'utilisateur n'envoie pas le bon format PDF (ou un PDF trop gros).
J'affiche un message d'erreur et on retourne en Javascript à la page précédent, mais le formulaire est vide, l'utilisateur doit tout retaper ! ! !
J'ai dans un premier temps supprimé l'option autocomplete="off" de ma balise <form>. Le formulaire est à nouveau rempli mais il ne tient pas compte des valeurs que je lui passe en $_SESSION pour mettre le titre en majuscules par exemple...Le problème ne semble pas lié au formulaire en lui même car même si je cherche à afficher les valeurs transmises à la page avec un 'echo', celle-ci ne s'affichent que si je fais un F5 !
Pouvez vous me dire d'où vient mon problème ?
Existe t-il un moyen plus simple (ou plus propre) de gérer ce genre de traitement. J'avais pensé à une seule page, mais compte tenu de la complexité de le partie code qui vérifie le fichier PDF j'ai abandonné !
Merci d'avance !
LE FORMULAIRE
<form action="compterendu_validation.php" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Nouveau compte rendu : </legend>
<p>
<label for="titre">Titre : </label><input type="text" name="titre" id="titre" maxlength="70" size="70" required <?php if(isset($_SESSION['titre'])){echo $_SESSION['titre'];}?>/><br />
<label for="quand">Date : </label><input type="text" name="quand" id="quand" size="10" required <?php if(isset($_SESSION['quand'])){echo $_SESSION['quand'];}?>/><br />
<label for="texte">Texte : </label><textarea name="texte" id="texte" placeholder="Entrez ici le descriptif du compte rendu..." required /><?php if(isset($_SESSION['texte'])){echo $_SESSION['texte'];}?></textarea><br />
Ajouter le PDF du compte rendu : <br />
<input type="file" name="fichierpdf" required/>
</p>
</fieldset>
<button>Envoyer</button><br />
</form>
LA PAGE DE TRAITEMENT :
<script type="text/javascript">
function RedirectionJavascript(){
document.location.href="http://www.xxxx/gestion/membres.php";
}
</script>
<?php
if($erreur==1){
echo $message . '<br />' . 'Veuillez patienter, vous allez être redirigé à la page précédente' ;
$_SESSION['titre']=strtoupper($_POST['titre']);
$_SESSION['quand']=$_POST['quand'];
$_SESSION['texte']=$_POST['texte'];?>
<script type="text/javascript">
window.setTimeout('history.back();', 4000);
</script><?php
}
elseif($erreur==0){
echo $message . '<br />' . 'Veuillez patienter, vous allez être redirigé vers l\'accueil' ;
unset($_SESSION['titre']);
unset($_SESSION['quand']);
unset($_SESSION['texte']);?>
<script type="text/javascript">
window.setTimeout('RedirectionJavascript();', 4000);
</script><?php
}?>
Salut,
Pourquoi tu fait une redirection via javascript ? et non avec php ? sachant que ton code est généralement du php
header("Refresh: 4;url=membres.php");
Pour ton problème de session, ta bien déclaré en haut de ta page :
session_start();
Car sinon tes sessions ne se sauvegarde pas lors de rafraichissements de pages.
La page rappellée en JavaScript ne semble pas rechargée mais réaffichée et un
header("Cache-Control: no-cache, must-revalidate");
n'y change rien !
Merci CenT, ça fonctionne impeccablement !
Je pensais que header était une instruction qui ne pouvait se trouver qu'en toute première ligne
de code PHP d'une page, je ne pensais pas que l'on puisse la mettre au beau millieu d'une condition !
(J'avais bien mis session_start(); en début de page !)
J'en profite pour remettre mon autocomplete="off" et corriger mon oubli dans mes input (value=" ....") :
Merci beaucoup !
<label for="titre">Titre : </label><input type="text" name="titre" id="titre" maxlength="70" size="70" required <?php if(isset($_SESSION['titre'])){echo 'value="' . $_SESSION['titre'] . '"';}?>/><br />
Je vais retravailler ma page pour que l'utilisateur n'attende pas 3 minutes que son PDF trop volumineux
ne soit pas uploadé et qu'un message d'erreur le renvoi sur la page précédente !
Je vais m'inspirer du tuto de Grafikart (Gestion d'un espace membre) pour le traitement du formulaire
sur une seule page et le transfert du PDF (si valide) sur une deuxième....
Merci !