pb de rafraîchissement formulaire

Eléphant du PHP | 166 Messages

09 juil. 2018, 20:44

bonjour
voici mon code qui traite un formulaire :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inNom = strtoupper($inNom); $inPrenom = $_POST['prenom']; $inPrenom = strtoupper($inPrenom); $inQualif = $_POST['qualif']; $inQualif = strtoupper($inQualif); $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; $inTitre = strtoupper($inTitre); // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000 ) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\photo'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../inc_/connexion_inc.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } else { if ($inPhoto['error'] == 1) { echo "<br \><b><h2>Photo supérieur à : 2Mo, recommencez l'enregistrement</h2></b>"; } } } else { echo "Veuillez remplir tous les champs"; } } ?>
après avoir fait un refresh avec le navigateur, cela provoqué un renvoi répétitif. J'ai donc creer le code suivant :

Code : Tout sélectionner

<?php //**************************** Éviter le renvoi répétitif d'un formulaire,lors d'un rafraîchissement du naviguateur *************************// // { Début - Première partie if(!empty($_POST) OR !empty($_FILES)) { //Ici on sauvegarde le 'formulaire' et les éventuels 'fichiers' envoyés dans des variables de session $_SESSION['sauvegarde'] = $_POST ; $_SESSION['sauvegardeFILES'] = $_FILES ; $fichierActuel = $_SERVER['PHP_SELF'] ;//renvoie le "fichier courant" utilisé, principal.php// if(!empty($_SERVER['QUERY_STRING']))//renvoie toutes les informations qui sont dans l'URL, autre que le nom du fichier// { $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ; } header('Location: ' . $fichierActuel); exit; } // } Fin - Première partie // { Début - Seconde partie if(isset($_SESSION['sauvegarde'])) { $_POST = $_SESSION['sauvegarde'] ; $_FILES = $_SESSION['sauvegardeFILES'] ; unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']); } // } Fin - Seconde partie ?>
que j'ai reduit à cela :

Code : Tout sélectionner

<?php include('../inc_/rafraichissement_inc.php');?>
J'ai mis ce dernier à la suite du premier code, cela fonctionne, sauf que , quand je choisi une photo > 2Mo ou que des champs sont vides, et bien les conditions 'else' n'apparaisse plus ???

Mammouth du PHP | 1967 Messages

10 juil. 2018, 08:28

il faut que tu inclue ton script de rafraichissement que si l'éxecution du formulaire c'est bien passé, sinon les echo de tes elses sont annulé.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube