Firefox et une fonction javascript

Firefox et une fonction javascript - HTML/CSS - Programmation

Marsh Posté le 23-12-2009 à 17:29:09    

Bonjour,

 


J'ai le fichier test.php suivant :

 
Code :
  1. <?php
  2. include("_acces_bd.php" );
  3. ?>
  4. <html>
  5. <head>
  6.  <title>Title</title>
  7.  <script type="text/javascript">
  8.   //supprimer un client, il y aura un confirmation
  9.   function sclient(lim)
  10.   {
  11.    if (confirm("Are you sure you want to delete this Client ?" )) {
  12.     form_radio_client.action = "suppr_client.php?limite=" + lim;
  13.     form_radio_client.submit();
  14.     return true;
  15.    }
  16.   }
  17.  </script>
  18. </head>
  19. <body>
  20.  <table border="1">
  21.   <tr>
  22.    <td>&nbsp;</td>
  23.    <td>Numero</td>
  24.    <td>Nom</td>
  25.   </tr>
  26.   <form method="post" name="form_radio_client">
  27.    <?php
  28.    $sql="SELECT * FROM test;";
  29.    $rrow=mysql_query($sql);
  30.    while ($row=mysql_fetch_array($rrow))
  31.    {
  32.     $num=$row['Numero'];
  33.     $nom=$row['Nom'];
  34.     ?>
  35.     <tr>
  36.      <td><input type="radio" name="radio_client" value="<?php echo $num; ?>"></td>
  37.      <td><?php echo $num; ?></td>
  38.      <td><?php echo $nom; ?></td>
  39.     </tr>
  40.     <?php
  41.    }
  42.    mysql_close();
  43.    ?>
  44.   </form>
  45.  </table>
  46.  <a href="javascript:onClick=sclient()">Delete</a>
  47. </body>
  48. </html>


Le but de ce fichier est de cocher une ligne du tableau de clients (à l'aide de bouton radio) puis de supprimer cette ligne en cliquant sur le bouton "Delete" qui fait appel à la fonction javascript "sclient". Cette fonction javascript va permettre de rediriger l'utilisateur vers la page suppr_client.php qui va récupérer l'identifiant de la ligne cochée pour effectuer le traitement de suppression.

 

Ce programme marche très bien avec tous les navigateurs.

 

Mon problème est quand je veux l'appeller dans un autre fichier à l'aide d'un include.
Du coup ce programme ne marche plus que sur IE. Sur Firefox la fonction javascript est appellé (j'ai le prompt confirm qui s'ouvre) mais je ne suis pas redirigé vers suppr_client.php.

 

Désolé pour la longueur du code mais je peux pas faire plus court.

 

Merci pour votre aide !

Message cité 1 fois
Message édité par Magg27 le 23-12-2009 à 17:30:39
Reply

Marsh Posté le 23-12-2009 à 17:29:09   

Reply

Marsh Posté le 23-12-2009 à 17:30:10    

Voici le fichier customer.php qui appelle le fichier test.php :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body bgcolor="#EEEEF7" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  7. <?php
  8. if($cat=="software" )
  9. {
  10. include("software.php" );
  11. }
  12. if($cat=="hardware" )
  13. {
  14. include("hardware.php" );
  15. }
  16. if($cat=="connexion" )
  17. {
  18. include("connexion.php" );
  19. }
  20. if($cat=="test" )
  21. {
  22. include("test.php" ); //Appel ici
  23. }
  24. ?>
  25. </div>
  26. </div>
  27. </body>
  28. </html>


Message édité par Magg27 le 23-12-2009 à 17:39:51
Reply

Marsh Posté le 23-12-2009 à 18:11:58    

Bon, je vais vous aider un peu ! J'ai trouvé le coupable :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">


Le voilà ! Quand je remplace ces deux ligne par <html> ça marche mais du coup je ne peux pas les utiliser.
Vous avez une idée ?


Message édité par Magg27 le 23-12-2009 à 18:13:16
Reply

Marsh Posté le 23-12-2009 à 19:09:23    

Tu inclus une page dans une autre ?
Tu dois avoir dans ton include uniquement le html compris entre <body> de ton fichier test.php
Et tu mets le js dans un fichier séparé que tu lances depuis customer.php

Reply

Marsh Posté le 24-12-2009 à 09:41:33    

Merci pour ta réponse.
Oui j'ai inclu test.php dans customer.php.
J'ai fait tout ce que tu m'a dit mais ça marche encore moins bien : le include ne marche plus du tout lorsque je met ce js :

 
Code :
  1. function sclient(lim)
  2.   {
  3.    if (confirm("Are you sure you want to delete this Client ?" )) {
  4.     form_radio_client.action = "suppr_client.php?limite=" + lim;
  5.     form_radio_client.submit();
  6.     return true;
  7.    }
  8.   }
 

dans un fichier (customer.php devient une page toute blanche).

 

J'ai aussi gardé le code situé entre <body> et </body> du fichier test.php ... Ca marche pas ...
La seule manière de tout faire marcher c'est de mettre la balise "<html>" ou lieu du gros patakès "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">"

 

Mais cette solution ne me plais pas car il y a plein de code qui ne sont pas interprété de la même façon après...


Message édité par Magg27 le 24-12-2009 à 09:43:03
Reply

Marsh Posté le 24-12-2009 à 10:27:25    

En me baladant sur des forum où des sujets traitent des problèmes d'incompatibilité Doctype/Javascript sur Firefox, j'ai déduit que mon problème venait sûrement de la conception de mon code javascript :

 
Code :
  1. <script type="text/javascript">
  2.   //supprimer un client, il y aura un confirmation
  3.   function sclient(lim)
  4.   {
  5.    if (confirm("Are you sure you want to delete this Client ?" )) {
  6.     form_radio_client.action = "suppr_client.php?limite=" + lim;
  7.     form_radio_client.submit();
  8.     return true;
  9.    }
  10.   }
  11.  </script>
 

Avec un Doctype, mon javascript n'exécute que le confirm mais ne fait pas la redirection vers suppr_client.php ...
Pouvez-vous me dire si mon script est bien construit ou bien s'il y a une erreur ?

 

Après un contrôle par l'outil jslint.com, j'ai cette erreur :

 

Error:

 

Implied global: confirm 3, form_radio_client 5,7

 

Ca vous parle ?


Message édité par Magg27 le 24-12-2009 à 10:41:20
Reply

Marsh Posté le 24-12-2009 à 11:29:57    

Bon, j'avance encore un peu : j'ai trouvé l'intitulé exact de l'erreur grâce à l'outil Web Developer de Firefox que je ne connaissais pas. Je le conseille !
Lorsque j'appelle mon script javascript, j'ai l'erreur "form_radio_client is not defined". Le problème est que je ne pije pas où est l'erreur : j'ai bien nommé mon form "form_radio_client" dans mon fichier test.php ...


Message édité par Magg27 le 24-12-2009 à 11:31:54
Reply

Marsh Posté le 24-12-2009 à 19:26:05    

<a href="javascript:onClick=sclient()">Delete</a> <== nan mais lol quoi :(
 
<a href="#" onclick="sclient(); return false">Delete</a>
 
et aussi tu mets un id sur ton form et tu y accèdes par document.getElementById('idduform')  

Code :


---------------
Blablaté par Harko
Reply

Marsh Posté le 28-12-2009 à 10:00:21    

Merci, j'ai essayé tout ça, il n'y a plus d'erreurs mais le code javascript suivant n'est quand même pas éxecuté :

 
Code :
  1. document.getElementById('form_radio_client').action = "suppr_client.php?limite=" + lim;
  2. document.getElementById('form_radio_client').submit;
 

Je ne suis pas redirigé ver suppr_client.php. Sinon la fonction renvoie true ...
A noter que j'ai mis un id dans le form :

 

Code :
  1. <form method="post" id="form_radio_client">
 

Avez-vous une idée du bug ?

 

Autrement voilà ce que je souhaite faire : sous forme de tableau, j'ai plusieurs lignes correspondants à des clients et chaque ligne dispose d'un bouton radio avec une value propre à la ligne (pour pouvoir identifier chaque bouton radio à un client).
En partant de ce principe, je voudrais que le l'utilisateur puisse sélectionner un client et pouvoir cliquer sur un bouton "Supprimer" qui va appeller une fonction (javascript ou php, ou les deux) pour effectuer le traitement dans la BDD.
Rien de plus simple ... Mais comment faire ?

 

Merci pour vos idées  ;)


Message édité par Magg27 le 28-12-2009 à 10:01:22
Reply

Marsh Posté le 28-12-2009 à 11:54:48    

J'ai trouvé ce script :

Code :
  1. <script type="text/javascript">
  2. function sclient()
  3. {
  4.   //supprimer un client, il y aura un confirmation  
  5.   if (confirm("Are you sure you want to delete this Client ?" ))
  6.   {
  7.   var LesRadios = document.getElementsByName("radio_client" );
  8.   for (i=0; i<LesRadios.length; i++)
  9.   {
  10.   if (LesRadios[i].checked)
  11.   {
  12.   la_valeur = LesRadios[i].value;
  13.   document.getElementById("form_radio_client" ).action="suppr_client.php?limite=" + la_valeur;
  14.   }
  15.   }
  16.   }
  17. }
  18.  </script>


 
Mais pareil :
 

Code :
  1. document.getElementById("form_radio_client" ).action="suppr_client.php?limite=" + la_valeur;


 
cette ligne ne marche pas !
 
Quand je remplace document.getElementById("form_radio_client" ).action par windows.location.href, j'ai windows is not defined. On dirais que la structure "suppr_client.php?limite=" + la_valeur ne lui plait pas trop.


Message édité par Magg27 le 28-12-2009 à 12:08:42
Reply

Marsh Posté le 28-12-2009 à 11:54:48   

Reply

Marsh Posté le 28-12-2009 à 15:30:10    

Bref, voilà mon script qui marche impeccable pour ce que je veux faire :
 

Code :
  1. <script type="text/javascript">
  2. function sclient()
  3. {
  4.   //supprimer un client, il y aura un confirmation  
  5.   if (confirm("Are you sure you want to delete this Client ?" ))
  6.   {
  7.   var LesRadios = document.getElementsByName("radio_client" );
  8.   for (i=0; i<LesRadios.length; i++)
  9.   {
  10.   if (LesRadios[i].checked)
  11.   {
  12.   la_valeur = LesRadios[i].value;
  13.   document.location.href="updatelastaccess.php?num=" + la_valeur;
  14.   }
  15.   }
  16.   return true;
  17.   }
  18. }
  19.  </script>


 
Maintenant j'aimerais pouvoir rediriger vers la page précédente en la rafraichissant. J'ai essayé avec :

Code :
  1. <script type="text/javascript">
  2. history.go(-1);
  3. </script>


 
Mais ça rafraichi pas ... Y a t-il un moyen ?

Reply

Marsh Posté le 28-12-2009 à 16:00:12    

Je commence à avoir l'impression que mon post ressemble + à un carnet de bord qu'autre chose, enfin, j'ai encore trouvé tout seul. Pour ceux qui sont intéréssé il faut utiliser ça pour rediriger vers la page précédente en la rafraichissant :
 

Code :
  1. <script type="text/javascript">
  2. document.location.href=document.referrer;
  3. </script>

Reply

Marsh Posté le 28-12-2009 à 16:40:30    

Décidément, je vais d'obstacle en obstacle ... Cette fois-ci il y en a un gros et j'ai vraiment besoin de vos lumières car je ne vois vraiment pas comment m'y prendre :
 
Maintenant que j'ai mon tableau de client qui s'affiche avec tous les petits boutons radios, j'ai pour projet que l'on puisse sélectionner facilement une ligne de tableau (avec les boutons radios) puis cliquer sur un bouton modifier qui appelle une fonction qui va par magie me "dévérouiller" la ligne pour pouvoir modifier les infos. Il y aura évidemment un bouton valider et annuler ...
 
Vous avez une idée ?
 
C'est pas encore que je réussi à résoudre ce problème moi-même ! Je préfère vous avertir  :)

Reply

Sujets relatifs:

Leave a Replay

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