Problème d'envois de formulaire avec IE

Problème d'envois de formulaire avec IE - HTML/CSS - Programmation

Marsh Posté le 30-08-2005 à 19:24:02    

Salut,
je travail actuellement sur une petite app web, mais la je bloque sur un petit problème, qui m'ennuis quand même. J'ai créé un formulaire qui permet d'enregistrer une promotion pour un produit. Celui-ci peut donc être validé par un bouton type submit ou en pressant la touche entrée si l'on a un champ qui a le focus.
 
Logique jusque là, je vous l'accorde.
Alors si je valide sous FF avec entrée ou le bouton tout va bien.
Si je valide avec le bouton sous IE ca va aussi.
 
En revanche si je valide avec entrée sous IE et bien je ne sais pas exactement ce qu'il me fait mais on dirait qu'il fait une sorte de rechargement de la page sans changer les données saisies et sans les envoyer.... Je sais pas si c'est bien claire mais je vous laisse tester:
 
http://pancaketwo.free.fr/produit_ [...] id_prod=82
 
Bon on va peut être me dire que c'est normal vennant d'IE, je suis tout à fait d'accord mais, pensant qu'il faut assurer la compatibilité de ses scripts avec un maximum de navigateurs, je me dis qu'il va falloir que je trouve une solution.
 
En vous remerciant!
 
PS: Pardon pour la mise en forme à cou de tableaux mais bon ca marche partout ca... :ange:


Message édité par dwogsi le 30-08-2005 à 19:26:45

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-08-2005 à 19:24:02   

Reply

Marsh Posté le 30-08-2005 à 19:54:03    

C'est simple sous IE, quand on valide un formulaire avec la touche entré, il n'envoie pas la valeur du/des bouton(s) de type submit.
Si le test est fait là dessus pour savoir si on redemande la page aprés remplissage du formulaire, ca foire.

Reply

Marsh Posté le 30-08-2005 à 20:29:25    

Ok je vois.
Mais dans ce cas, y a t il une autre solution qu'un champ de type hidden par exemple?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-08-2005 à 21:37:43    

dwogsi a écrit :

PS: Pardon pour la mise en forme à cou de tableaux mais bon ca marche partout ca... :ange:


 
Les CSS aussi [:pingouino]


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 30-08-2005 à 21:42:52    

J'me disais aussi: étrange que l'on ne me l'ais pas encore dit.
 
Bon alors je dirais que je me suis déjà fait chier à faire le rete avec du ccs, comme par exemple le menu, et ne pouvant pas prétendre être tout à fait au point en css je choisi encore la simplicité des tableaux pour avancer sur d'autres plans.
 
Je vous prie de m'excuser et vous prie également de croire que je comprend vos protestations mais laissons tout le monde évoluer à son rythme car ce qui m'intéresse dans un premier temps c'est que ce que je créé soit compatible avec le plus de navigateurs possibles et plus ou moins "conforme" puis dans un second temps que ce soit parfait! lol


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-08-2005 à 21:52:16    


Même avec les navigateurs en mode texte?

Reply

Marsh Posté le 30-08-2005 à 21:54:24    

Ben ca marche meme mieux que les tableaux pour les navigateurs texte, vu que l'info est affiché correctement (car avec des tables, les navigateurs textes ont un peu de mal).
 
Les CSS c'était prévu pour que les navigateurs graphiques aient une belle présentation, sans mettre les infos de mise en page dans le code html, pour permettre au plus anciens navigateurs de lire correctement la page même sans css.
 
[:pingouino]


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 30-08-2005 à 23:29:37    

Quoiqu'il en soit, ma question persiste toujours:
Y a t il une autre solution que d'utiliser un champ de type hidden? Cf. post précédents.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-08-2005 à 23:49:10    

Vérifier que les champs du formulaire correspondent à ce que t'attends.
 
J'ai pas mieux à te proposer pour le moment.
Moi, je vérifie pas les boutons en eux même mais les différents champs des formulaires afin de vérifier que tout est correct. De toute maniére, c'est une vérification qu'il faut faire dans tous les cas.
 
Evidement, si on a deux boutons de validation, il faut vérifier si on en a cliqué un.
 
J'espéres qu'on poura nous donner une meilleure réponse que la mienne.

Reply

Marsh Posté le 30-08-2005 à 23:52:46    

J'effectue évidement un contrôle sur les données, et ci celles-ci ne conviennent pas j'affiche un message d'erreur.
 
Cela dit, comment vérifier si l'utilisateur a envoyé le formulair en tapant sur la tocuhe entrée sur IE sans passer par un champ type hidden?
 
Parce que si je fais une vérification systèmatiquement alors il y aura un message d'erreur au premier chargement de la page, avant même que l'utilisateur ait tenter de valider le formulaire.
 
Je précise en passant que le contrôle se fait sur le même script...


Message édité par dwogsi le 30-08-2005 à 23:55:10

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-08-2005 à 23:52:46   

Reply

Marsh Posté le 30-08-2005 à 23:54:35    

en regardant si le navigateur à renvoyer une valeur correspondant à un des boutons. Du moins pour IE.
Pour FF, j'en sais rien.

Reply

Marsh Posté le 30-08-2005 à 23:56:26    

Oui mais la le problème c'est qu'IE n'envois rien du tout concernant LE (seul et unique) bouton submit....
 
En revanche FF, nikel.


Message édité par dwogsi le 30-08-2005 à 23:56:55

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2005 à 13:42:50    

pourquoi faire simple quand on peu faire compliquer  :  
 
dans le cas ou on a un seul bouton, ben on ne cherche pas à faire de teste sur la valeur du submit, on traite directemùent le formulaire
 
et dans le cas ou on a plusieurs boutons submit, on définit le test à faire par défaut

Reply

Marsh Posté le 31-08-2005 à 14:59:42    

Bon alors je vais essayer d'expliquer mon problème plus clairement.
 
Voici un exemple de code qui correspond a peu pret au miens.
 
Admettons un script nomé form.php

Code :
  1. <?
  2. if ( isset($_POST["sended"]) ) {
  3.    if ( !is_numeric($_post["val"]) ) {
  4.      echo "<p><span style=\"color: red;\">Ce n'est pas une valeur numérique</span>";
  5.    }
  6. }
  7. ?>
  8. <form action="form.php" name="the_form" mathod="POST">
  9. <p><input type="text" name="val"></p>
  10. <p><input type="submit" value="envoyer" name="sended"></p>
  11. </form>


 
Voici maintenant ce qu'il peut se passer:
 

  • Sous FF, je valide avec le bouton, aucun problème.


  • Sous IE, je valide avec le bouton, aucun problème.


  • Sous FF je valide en pressant la touche entrée, toujours aucun problème à signaler.


  • Sous IE, je valide avec la touche entrée et la veleur de $_POST["sended"] n'est pas envoyée, donc le contrôle sur les données ne s'effectue pas.


Pourquoi vérifier si $_POST["sended"] est envoyé avant d'effectuer le contrôle des données?
 
=> Parce que si je retire cette condition vous verrez que le message d'erreur est également affiché la première fois que l'utilisateur se rend sur la page, or si celui-ci n'a encore envoyé aucune données c'est complétement illogique.
 
M'aura-t-on compris cette fois-ci?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2005 à 16:37:58    

Un isset($_POST["sended"]) te permettras de détecter si on t'as envoyer le nombre.

Reply

Marsh Posté le 31-08-2005 à 16:54:20    

Bah normalement oui, mais dans mon cas ca ne marche pas...
Chose que je ne comprend donc pas mais bon je ne vais pas vous donner mon code là ca ferait trop long mais si quelqu'un veut jetter un coup d'oeuil à la source de la page que j'ai donnée et m'expliquer pourquoi avec IE ca ne donne rien je vous en serez très reconnaissant car moi j'abandonne et adopte une solution bricolée avec avec action="form.php?sended=1".


Message édité par dwogsi le 31-08-2005 à 16:55:38

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2005 à 16:58:12    

si $_post["val"] existe sans lien ni formulaire, c'est que tu l'as créé quelque part.
Sauf cas extrahordinaire, y a pas de miracle en php .

Reply

Marsh Posté le 31-08-2005 à 17:01:16    

omega2 a écrit :

si $_post["val"] existe sans lien ni formulaire, c'est que tu l'as créé quelque part.


 
Je veux bien croire qu'il n'y a pas de mirecle en php, parcontre j'ai pas bien compris ce que tu voulais dire, désolé...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2005 à 17:04:59    

je veux dire que si la variable val ne provient ni d'un lien ni d'un formulaire alors c'est que c'est un bout de code php qui la fait exister.

Reply

Marsh Posté le 31-08-2005 à 17:07:44    

Entièrement daccord avec ça mais en quoi est-ce censé résoudre mon problème?
 
Pardon si c'est l'évidence même, peut être suis-je aveugle ou tout simplement c**.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2005 à 18:48:58    

Code :
  1. if (isset($_POST["sended"]) && !empty($_POST["sended"]) ) {
  2.    if ( !is_numeric($_post["val"]) ) {
  3.      echo "<p style=\"color: red;\">Ce n'est pas une valeur numérique</p>";
  4.    }
  5. }


 
j'opterai pour un problème de savoir-faire en programmation, qui j'espère s'améliorera avec le temps
 
et pas besoin de mettre un <span style="couleurdemonQ"> alors que tu peux styler directement P
 
trop de balises inutiles tuent le HTML
 
edit : en en plus court :

Code :
  1. (!empty($_POST["sended"])) ? ( (!is_numeric($_post["val"])) ? echo "<p style=\"color: red;\">Ce n'est pas une valeur numérique</p>"; ) ;


 
a verifier l'exactitude au sujet de empty, car je ne sais pas si tester une variable post sans vérifier qu'elle existe est possible, sinon on rajoute d'abord un isset


Message édité par gatsusat le 31-08-2005 à 19:32:46
Reply

Marsh Posté le 31-08-2005 à 20:21:01    

Bon je pense que ca va aller, en tout cas merci.
Par contre, concernant le span et le p, je sais bien que je peux directement styler le p mais c'est l'habitude de styler juste un mot entre <p> et </p>


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed