| Auteur | Pages : [>] |
|---|---|
| fodjio | # 25 Oct 2006 - 15:36:48 |
| 27 Posts |
Bonjour à tous, j'ai un petit problème : j'ai une page web : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> qui passe la validation du w3c... et lorsque je rajoute mon code PHP : <?php entre les balises "<p class="message">" et "</p>" La validation ne passe plus ! et m'affiche : end tag for "div" omitted, but OMITTAG NO was specified. et pourtant toutes mes balises sont bien fermées ! Je n'y comprend rien donc si quelqu'un peut m'expliquer ou à déjà été confronté à ce problème... Merci de m'aider... Modifié par fodjio (25 Oct 2006 - 15:41) |
| Raphael | # 25 Oct 2006 - 15:47:27 |
Mangez des kiwiz ! Administrateur 10491 Posts |
Hello, Tu n'aurais pas par hasard placé un élément de type bloc dans ton élément <p> ? La FAQ répond à 90% des questions de ce forum. En général, 5 min de recherches suffisent... |
| chpego | # 25 Oct 2006 - 15:56:49 |
| 60 Posts |
Est-tu sur que tout le code PHP est bien executé ? Tout ce code sert à traiter un formulaire apparement ? Et si tout ce traitement s'effectue bien, tu devrai avoir entre tes balises <p class="message"></p> soit : Votre inscription a bien été envoyé. ou L'envoie de votre inscription n'a pas aboutit. Ce qui me turlupine c'est le "@" devant la fonction mail |
| fodjio | # 25 Oct 2006 - 16:40:38 |
| 27 Posts |
réponse Raphaël : non je ne place pas d'élément de type bloc dedans, juste une phrase. réponse chpego : Tu as tout compris. Le '@' devant la fonction mail, c'est pour empêcher les messages d'erreurs. J'ai finalement trouvé ! Apparement (si quelqu'un pouvait confirmer, ça serait le top), le validateur n'aime pas la fonction 'exit()' (ni 'die()' d'ailleurs) et donc je pense qu'il execute carrement cette fonction et qu'il ne lit pas le reste de la page. Résultat : il m'explique que mes balises ne sont pas fermées alors qu'elles le sont réellement. J'ai donc bidouillé pour éviter les 'exit' et là, la page réussis la validation. Merci pour votre aide. Modifié par fodjio (25 Oct 2006 - 16:43) |
| Heyoan | # 25 Oct 2006 - 18:04:53 |
Un p'tit Kiwiz Coca ? Modérateur 2549 Posts |
Salut fodjio ,Le validateur ne peut pas tenir compte du code PHP puisqu'il ne fait que valider le HTML qui est généré. Donc il ne peut pas exécuter un exit() ou un die()... qui d'ailleurs n'apparaissent pas dans ton code J'aurais donc tendance à dire que le fait d'enlever ces 2 fonctions a également supprimé le bout de code qui n'allait pas... @+ |
| chpego | # 25 Oct 2006 - 19:02:57 |
| 60 Posts |
c'est bizarre mais il n'y a nul part de exit() ou de die() dans ton code Bon j'espère que ton problème est [RESOLU] |
| Bison | # 25 Oct 2006 - 19:23:36 |
Les regex... expreg.com 269 Posts |
$$val=false;Pourquoi de la variable dynamique ? C'est pas maintenable switch($civilite){Même chose pour ce switch immonde.Utilises un array() bien plus performant Je me suis arrêté à cette hauteur dans ton code, corriges déjà ça. Benjamin Franklin a dit : Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends. Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex. |
| fredmac | # 25 Oct 2006 - 21:19:17 |
| 275 Posts |
M'est avis que le problème vient de la façon dont tu valides ta page. En effet, il s'agit d'un fichier php qui doit normalement se trouver sur un serveur (local ou distant). Ce faisant il est interprété par le module apache et renvoie du code html. En aucune manière ton php ne peut être lu par le validateur. ton "die" et ton "exit" n'entre donc pas en ligne de compte. Tu as donc du faire une validation via upload sur le site du w3c, directement à partir du fichier sur ton ordinateur. ll faudrait donc vérifier le fichier à partir d'une page web, c'est-à-dire dans un navigateur, pour que ce dernier soit interprété par le serveur (local ou distant). Ensuite, nous pourrons t'aider pour des problèmes de PHP stricto sensus ; si "le grand kiwi" y consent. PS : attention à l'encodage, tu risques d'avoir des surprises... Modifié par fredmac (25 Oct 2006 - 21:19) |
| chpego | # 25 Oct 2006 - 21:52:07 |
| 60 Posts |
Bison a écrit :$$val=false;Pourquoi de la variable dynamique ? Je rejoins également ce que dis Bison, le reste du code est aussi à revoir. J'osé pas le dire, mais puisque Bison l'a fais |
| fodjio | # 26 Oct 2006 - 09:29:08 |
| 27 Posts |
Resalut tout le monde ! c'est la première fois que je me fais 'secouer un peu' comme ça dans un forum Alors en effet, quand j'ai posté mon message j'avais déjà modifié mon code. Du coup je suis perdu, et je sais plus pourquoi ça marche maintenant et pas avant (???). Il faut que je refasse des tests. J'accèpte vos critiques, cela montre que j'ai encore beaucoup à apprendre, mais malheureusement je comprends pas ce qui vous chagrine, expliquez-moi ce que je devrai mettre à la place. Et si possible pourquoi mon code est si mauvais. Ça serait sympa... Réponse à chpego : Excuse-moi pour le [Résolu] j'allais sincèrement le mettre, mais j'ai oublié. Par contre j'hésite maintenant à le mettre parce que du coup la cause du problème n'est finalement pas définitivement résolue. Affaire à suivre... Réponse à Bison : de la variable dynamique parce que c'est plus pratique, après il ne reste plus qu'à faire une boucle qui crée les variables. Et si, c'est maintenable, car il n'y a plus qu'à modifier le tableau quand on veut changer, ajouter ou supprimer une variable, sans toucher au reste. Ou, est-ce que tu pense que j'ai meilleur temps d'utiliser les variables $_POST[] ? J'attends ta solution. Montre-moi que j'ai tord. Pareil pour le switch, explique-moi en quoi il est immonde, si il y a mieux, je suis preneur. Y'a pas d'problème... Merci de m'aider à progresser Modifié par fodjio (26 Oct 2006 - 09:55) |
| Bison | # 26 Oct 2006 - 09:51:24 |
Les regex... expreg.com 269 Posts |
fodjio a écrit : Incendier ? En quoi te secouer un peu pour t'aider à progresser est-il assimilable à "se faire incendier" ? En quoi te dire que le code n'est pas joli joli c'est "se faire incendier" ? Si tu n'acceptes pas la critique, constructive en plus, il ne faut pas proposer ton code à l'appréciation des autres intervenants. Si je te dis que ton code n'est pas propre, c'est parce que je sais de quoi je parles. Je suis désolé si tu le prends de cette manière. Enfin bref, c'est pas grave, je te présente, donc, mes excuses pour avoir essayer de te faire avancer, pour avoir essayer de t'impliquer dans ton projet. Je laisse la main. Tiens, lis et médite : Benjamin Franklin a dit : Modifié par Bison (26 Oct 2006 - 09:52) Benjamin Franklin a dit : Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends. Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex. |
| fodjio | # 26 Oct 2006 - 10:04:15 |
| 27 Posts |
Oups ! Incident diplomatique. Je m'excuse pour le mot 'incendié' que j'ai aussitôt remplasser. D'ailleurs, si tu as lu le reste du message, je passe mon temps à dire que je souhaite avancer grace à ces critiques (qui c'est vrai , ne méritent pas le qualificatif "d'incendières", je me suis peut-être un peu embalé ).Alors ? Toujours copain ? Allez Bison, explique-moi s'il te plait, je veux savoir. Merci moi : Modifié par fodjio (26 Oct 2006 - 10:06) |
| chpego | # 26 Oct 2006 - 10:31:09 |
| 60 Posts |
Bonjour, et bien je ne sais pas si Bison va penser la même chose que moi, mais je vais essayer de dire ce qui a prioiri ne va pas dans ton code. Tout d'abord tu traite un formulaire, il faudrait connaitre le nom et le type des champs pour pouvoir les traiter chacun, savoir si tout ces champs ont bien été remplis. Je commencerai par tester si le bouton submit a bien été soumis, ensuite je testerai si chaque champ a bien été rempli par un isset(), puis tester si aucun d'entre eux n'est vide avec la fonction empty(). Peut-etre que des champs peuvent être facultatif, donc il faut aussi prendre en compte cela. Si tout ca est bien vérifié tu peux commencé à "construire" ton message, puis envoyer le message et là encore tester si le mail est bien envoyer. Si tu ne vois pas trop ce que je veux dire par tout ces test, tu peux regarder sur ce lien, plus exactement le code du fichier insert_news.php J'espère que ca pourra t'aider, par contre je suis d'accord pour un PES, mais sans la Kro Modifié par chpego (26 Oct 2006 - 10:31) |
| fodjio | # 26 Oct 2006 - 10:51:57 |
| 27 Posts |
Merci chpego, mais il faut peut-être que je vous explique qu'en fait le formulaire est sur une autre page. Lorsque l'on soumet le formulaire (sur cette autre page donc) je fais déjà une vérification grâce à du Javascript (champs obligatoire, email valide, ect). Donc, je n'ai pas besoin de vérifier en php (sauf si vous me démontrez le contraire bien sur) et le bouton submit à forcement été actionné pour arriver sur la page du traitement du message. Merci quand même chpego. Quant au test "isset()", je le fais justement grâce à ma boucle qui contient 'mon affreux $$val' .Moi je demande juste ce que je devrai faire à la place de cette boucle et la place du switch. Je comprends vite mais fô m'expliquer longtemps. Modifié par fodjio (26 Oct 2006 - 10:54) |
| Thomas D. | # 26 Oct 2006 - 10:57:59 |
Roi sous la montagne Modérateur 2931 Posts |
Donc, je n'ai pas besoin de vérifier en php (sauf si vous me démontrez le contraire bien sur) et le bouton submit à forcement été actionné pour arriver sur la page du traitement du message. Qu'est ce qui se passe si javascript est désactivé chez l'utilisateur ? Et comme disait Groucho Marx, si vous n'aimez pas mes opinions, j'en ai d'autres. |
| Bison | # 26 Oct 2006 - 11:01:47 |
Les regex... expreg.com 269 Posts |
chpego a écrit : Bon allez, chui de bonne humeur. Pour tous les deux, si les champs sont obligatoires, !empty() seul fera l'affaire, lié à un trim() Un exemple là : Comment contrôler les entrées de vos formulaires ? Pour en revenir aux variables dynamiques : - Une variable dynamique n'est utile qu'à de très rares execptions. - C'est juste l'espace de nommage qui change. Dans les deux cas (variable-variable et array), la taille est identique (à peu de choses près). - Utiliser des variables dynamiques rend le code inmaintenable et illisible, et on peut dans 99,999% des cas faire autrement. Tu vas avoir l'air malin si dans 6 mois tu dois apporter des corrections à un code de ce type : Euuh... ouais... c'était quoi encore ce $$var ????? Donc, on utilise un tableau <?php Voilà, plus de var-var et plus de switch() Benjamin Franklin a dit : Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends. Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex. |
| SuD | # 26 Oct 2006 - 14:27:10 |
| 336 Posts |
Bison a écrit : Ouch!! Petite piqure de rappel au sujet des formulaires buy it, use it, break it, fix it, trash it, change it, upgrade it, charge it, pawn it, zoom it, press it, snap it, work it, erase it, write it, get it, paste it, save it, load it |
| fodjio | # 26 Oct 2006 - 14:28:05 |
| 27 Posts |
Si le javascript est désactivé l'utilisateur ne peut pas soumettre le formulaire. Parce que le code du bouton ce présente comme ça : <input name="" type="button" value="Envoyer" onclick="verifForm();" /> Bison, mon $$var je l'utilise qu'une seul fois pour créer d'autres variables. C'est juste pour remplacer mes $_POST['variable'] par des $variable. Pour le tableau, t'as raison, c'est plus astucieux que le switch. Modifié par fodjio (26 Oct 2006 - 14:31) |
| Bison | # 26 Oct 2006 - 16:28:05 |
Les regex... expreg.com 269 Posts |
SuD a écrit : Je m'en doutais... Mais, je te ferai quand même remarquer que c'était indiqué en rouge en plus : Même si les portions de code sont fonctionnelles en l'état, elles ne servent que de support dans la méthode de vérification. Vous devrez opter pour une forme plus rigoureuse de vérification avec les données sur lesquelles l'internaute à la main ainsi que de vérifier la conformité de votre code HTML. Mais pour te faire plaisir, j'ai modifié le code du formulaire mis en exemple. Le but de l'article n'est rien de plus que de montrer une méthode de vérif liée à php. Modifié par Bison (26 Oct 2006 - 16:49) Benjamin Franklin a dit : Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends. Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex. |
| SuD | # 26 Oct 2006 - 16:39:46 |
| 336 Posts |
Bison a écrit : Bison a écrit : La méthode n'est pas bonne justement! Modifié par SuD (26 Oct 2006 - 16:49) buy it, use it, break it, fix it, trash it, change it, upgrade it, charge it, pawn it, zoom it, press it, snap it, work it, erase it, write it, get it, paste it, save it, load it |
Pages : [>] |
|
Les références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org
Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe
Nikozen : Hébergement - Réalisation : Alsacreations.fr








.