Formulaire PHP avec test champs vides - PHP - Programmation
Marsh Posté le 25-05-2011 à 14:33:25
pb archi traité sur ce forum ou sur google
T'as des trucs écrits (ou juste un caractère espace) avant l'instruction header("Location: ajout_info.php" );
Marsh Posté le 25-05-2011 à 14:44:34
alors en fait je n'ai plus la même erreur ça devait venir de l'encodage. Mais là le problème c'est qu'il ne fait pas les test correctement, il enregistre quand même dans la bdd si'il manque un champ il ne ré-affiche plus ce que l'utilisateur avait saisi.
Marsh Posté le 25-05-2011 à 15:40:58
Ligne 18, y'a rien qui te choque?
par ailleurs, tu testes "empty" que 3 champs sur les 5...
Marsh Posté le 25-05-2011 à 16:05:35
oui oui j'ai corrigé mes erreurs !
ça marche à peu près, lorsqu'il y a une erreur ça conserve bien ce que l'utilisateur avait tapé sauf pour le champ description, peut être parce qu'il est de type textarea ?
Sinon, je voudrais savoir comment faire pour afficher, lorsque la requête a bien été prise en compte, un petit message qui dit que ça a marché avec un lien pour ajouter une nouvelle info plutôt que de rafficher la page telle qu'elle comme si rien ne s'était passé ?
Merci d'avance
Marsh Posté le 25-05-2011 à 16:26:26
C'est bon j'avais fait une erreur dans mon textarea !
Par contre, je ne sais pas comment afficher, lorsque la requête a bien été prise en compte, un petit message qui dit que ça a marché avec un lien pour ajouter une nouvelle info plutôt que de rafficher la page telle qu'elle comme si rien ne s'était passé ?
Marsh Posté le 25-05-2011 à 16:37:56
boss183 a écrit : oui oui j'ai corrigé mes erreurs ! |
ben tout simple :
if (OK){
afficher le contenu de la page web avec le msg de confirmation + un lien
} else {
réafficher le formulaire avec les msg d'erreur + valeurs déjà saisies
}
Marsh Posté le 25-05-2011 à 17:07:10
Merci mais en fait je voudrais que ma page soit constitué :
- d'une partie en HTML : menu et fond (qui seront toujours présent)
- de mon formulaire qui s'affiche lorsqu'on arrive sur la page ou qui se ré-affiche avec les valeurs saisies avant si les champs sont vides
- d'un message qui confirme que l'info a bien été enregistré avec un lien si on désire remettre ajouter une nouvelle info
le truc c que je veux pas afficher en même temps le message de confirmation et le formulaire, c'est soit l'un soit l'autre avec toujours en fond la partie html pour le fond et le menu.
Marsh Posté le 25-05-2011 à 17:20:56
d'où le test if que j'ai mis
Si tu regardes mon soft Astres (cf ma signature), c'est comme ça que je fais : y'a des parties de contenu de ma mage web qui varient suivant des tests...
Edit : mais le mieux c'est de faire un MVC (modèle vue contrôleur) -> y'a un gros topic sur ce forum à ce propos...
Marsh Posté le 25-05-2011 à 17:23:11
ça veut dire que ta partie en html qui représente le menu et le fond je la tape deux fois ?? et en plus faut que je me tape de mettre tous les echo pour transformer en php
Marsh Posté le 25-05-2011 à 18:06:35
boss183 a écrit : ça veut dire que ta partie en html qui représente le menu et le fond je la tape deux fois ?? et en plus faut que je me tape de mettre tous les echo pour transformer en php |
Ben non, tu factorises (include par ex). Mais comme dit précédemment, le mieux est de faire un MVC...
Marsh Posté le 25-05-2011 à 14:18:47
Bonjour à tous,
alors je vous explique mon problème, j'avais réalisé un formulaire PHP qui testait les champs vides, ce formulaire était composé de deux scripts (un pour le formulaire et le "fichier action" ) ça marchait très bien sauf que s'il y avait un champ vide le fichier action indiquait l'erreur ainsi qu'un lien pour revenir au formulaire mais l'utilisateur perdait alors ce qu'il avait déjà tapé.
On m'a parlé de session PHP mais j'ai pas trop réussi à mettre en place le truc, j'ai donc décidé de réaliser ce formulaire avec un seul fichier mais j'ai l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test_ajout.php:1) in C:\xampp\htdocs\test_ajout.php on line 50
Voilà ci-dessous mon code en entier :
Merci d'avance pour votre aide !