document.my_form.submit()....ne fait rien !!??

document.my_form.submit()....ne fait rien !!?? - HTML/CSS - Programmation

Marsh Posté le 28-02-2005 à 13:49:06    

Bonjour,
 
Dans mon code j'ai entre les balises <head> :
 

Code :
  1. <script language="JavaScript">
  2. function ConfirmValide()
  3. {
  4.   var answer = confirm("Etes-vous sur de vouloir supprimer le matériel ?" );
  5.   if(answer)
  6.   {
  7.         document.supp_matos_int.submit();
  8.         alert("Le matériel a été supprimé avec succés !" );
  9.   }
  10. }
  11. </script>


 
et ensuite dans le body de ma page :
 

Code :
  1. <form name="supp_matos_int" method="post">
  2. <td align="center" bgcolor="#ffecec">
  3.     <input type="hidden" name="confirm_supp_int" value="1">
  4.     <input type="hidden" name="suppress_int" value="<?php echo $row_matos_int['id_materiel']?>">
  5.     <input type="button" name="supp_matos_int" onclick="ConfirmValide()" value="Supprimer">
  6.     </td>
  7. </form>


 
et tout en haut de ma page avant le html j'ai :
 

Code :
  1. if (isset($_POST["confirm_supp_int"])) {
  2.         print "ok";
  3.         $my_supmatos_int = mysqli_query($dbprotect, "UPDATE materiel SET suppr='1' WHERE id_materiel='$_POST[suppress_int]'" );
  4.         $matos_suppr_temp = mysqli_query($dbprotect, "SELECT materiel FROM materiel WHERE id_materiel='$_POST[suppress_int]'" );
  5.         $matos_suppr = mysqli_fetch_assoc($matos_suppr_temp);
  6.         $flag_suppr = $matos_suppr['materiel'];
  7. }


 
Et quand je clique sur mon bouton supprimer j'ai bien la boite de dialoque qui s'ouvre avec oui/non...et ensuite la boite alert, mais rien ne se passe a part ca...le reste du php ci-dessus ne fonctionne pas..."ok" ne s'imprime pas...
 
Si qqun a une idee ...Merci


Message édité par kissskoool le 28-02-2005 à 14:17:18
Reply

Marsh Posté le 28-02-2005 à 13:49:06   

Reply

Marsh Posté le 28-02-2005 à 14:06:07    

action="" ?
 
C'est normal ?

Reply

Marsh Posté le 28-02-2005 à 14:14:33    

avec ou sans action="" ca ne change rien... ;(

Reply

Marsh Posté le 28-02-2005 à 14:15:35    

Quelques remarques.
1) Tu devrais afficher le message "Le matériel a été supprimé avec succés !" uniquement quand cela est vrai. C'est a dire a la fin de ta procedure d'effacement, pas au debut de celle-ci... :D
 
2) Que veux-tu faire avec ce code ?

Code :
  1. if(document.supp_matos_int.onsubmit())
  2.      {
  3.          document.supp_matos_int.submit();
  4.      }


J'ai pas bien compris son but... Je veux bien que tu veuilles submit ton form, mais c'est la condition du if...
Soit cette methode est "blocanque", alors ton javascript reste "bloque" ainsi que toute ta page html. Soit cette derniere n'est pas blocange auquel cas elle sera fausse car tu n'as pas "submite" ton form. En effet tu appelle cette fonction via le onclick d'un bouton, et non pas via un "submit"...


Message édité par cerel le 28-02-2005 à 14:18:05
Reply

Marsh Posté le 28-02-2005 à 14:16:31    

ok bon je reedite le msg et je supprime toutes ces lignes inutiles...

Reply

Marsh Posté le 28-02-2005 à 14:18:04    

Et pas de machins comme ça uniquement en Javascript. Ceux qu'on pas javascript ne verront pas de message de confirmation. Faut prévoir une page de confirmation pour les 9% d'utilisateurs qui ne l'ont pas...
Ensuite le code HTML date d'il y a 10 ans :/

Reply

Marsh Posté le 28-02-2005 à 14:18:34    

et meme comme ca ca ne marche pas...je ne comprends vraiment pas...surtout que je fais la meme chose sur une autre page et que ca marche tres bien... ;(

Reply

Marsh Posté le 28-02-2005 à 14:20:31    

en fait c'est pour un intra....alors en fait je sais exactement ce que chaque personne a sur ca machine..et je ferais en sorte qu'elles soient toutes compatibles avec le javascript

Reply

Marsh Posté le 28-02-2005 à 14:26:34    

Pour la boîte de confirmation, met-la plutôt dans le onsubmit :

Code :
  1. <form ... onsubmit="javascript: return confirmeValide()" ...>
  2. ...
  3. </form>


Avec pour la fonction :

Code :
  1. <script type="text/javascript">
  2.   function confirmeValide() {
  3.     return confirm("Etes-vous sur de vouloir supprimer le matériel ?" );
  4.   }
  5. </script>


Message édité par FlorentG le 28-02-2005 à 14:27:04
Reply

Marsh Posté le 28-02-2005 à 16:21:13    

ni en connaissant rien en php, mon incompréhension vient peut-être de là, mais comment le navigateur sait quelle action doit provoquer la soumission du formulaire ???
 
(ou bien y a un truc enorme qui m'echappe...)

Reply

Marsh Posté le 28-02-2005 à 16:21:13   

Reply

Marsh Posté le 28-02-2005 à 16:24:14    

Fait comme j'ai dis [:spamafote], bien que ça soit contournable sans JS...

Reply

Marsh Posté le 28-02-2005 à 16:28:26    

tu me repondais pas à moi là j'espère, si ?

Reply

Marsh Posté le 28-02-2005 à 16:29:48    

Ben si, j'ai corrigé ton script du tout début qu'était pas bon

Reply

Marsh Posté le 28-02-2005 à 16:31:52    

oulah, euh, c'est pas moi qui ai posé la question initiale, c'est kisskool, moi je voulais juste savoir :
 

esrevni a écrit :

ni en connaissant rien en php, mon incompréhension vient peut-être de là, mais comment le navigateur sait quelle action doit provoquer la soumission du formulaire ???
 
(ou bien y a un truc enorme qui m'echappe...)


 
 :)


Message édité par esrevni le 28-02-2005 à 16:33:47
Reply

Marsh Posté le 28-02-2005 à 16:34:05    

Ah oups :D

Reply

Marsh Posté le 28-02-2005 à 16:34:20    

Si seulement on pouvais avoir les avatars, j'me tromperais moins souvent :D

Reply

Marsh Posté le 28-02-2005 à 16:35:11    

bon je vois que onsubmit retourne une valeur...1 ou 0 j'imagine.
 
Mais je ne comprends pas comment elle est interpretee dans le onsubmit...
 
parce que chez moi du coup qd je fais ce que tu me dis ..je n ai meme plus de boite de dialogue qui s'ouvre...
 
Je precise tout de meme que j'ai remis le input de type button en type submit...c bon??

Reply

Marsh Posté le 28-02-2005 à 16:36:35    

Si la fonction appellée dans le onsubmit renvoi false, on n'envoi pas le formulaire

Reply

Marsh Posté le 28-02-2005 à 16:37:47    

AHHH non....excuse moi...ca marche trop nikel...c'est moi qui avait fait une merde....
 
C'est 10 fois plus efficace...ca marche super bien...
 
Encore une fois FlorentG tu dechires !!! ;)
 
Merci bcp

Reply

Marsh Posté le 28-02-2005 à 16:37:54    

FlorentG a écrit :

Si la fonction appellée dans le onsubmit renvoi false, on n'envoi pas le formulaire


 
mais à qui on renvoie le form ? Est-ce automatique en php ?
 

Reply

Marsh Posté le 28-02-2005 à 16:38:16    

On la renvoi à la page spécifiée dans l'attribut action

Reply

Marsh Posté le 28-02-2005 à 16:45:11    

bon je veux pas abuser...mais j'ai encore une petite question.. ;)
 
Comment je peux passer une valeur php a mon javascript..
 
C'est a dire que dans la boite de dialogue j'aimerais mettre le nom du materiel a supprimer.
 
Il est dans le champs caché envoye avec le formulaire...c'est :  
 
<input type="hidden" name="suppress_int" value="<?php echo $row_matos_int['id_materiel']?>">

Reply

Marsh Posté le 28-02-2005 à 16:46:31    

ahhhhh, mais ça je le savais. Le problème, c'est où est l'attribut action dans son code ???

Reply

Marsh Posté le 28-02-2005 à 16:47:50    

Met un id à ton input, puis via document.getElementById('pouet').value, tu peux récupérer la valeur de l'input

Reply

Marsh Posté le 28-02-2005 à 16:48:20    

allez je me lance :
 

Code :
  1. alert("Le matériel <?php echo $row_matos_int['id_materiel']?> a été supprimé avec succés !" );


 
oops, j'avais pas vu qu'il pouvait y avoir plusieurs matos (un tableau en l'occurence, bon, j'arrête de m'occuper de ce qui ne me regarde pas :))


Message édité par esrevni le 28-02-2005 à 16:49:33
Reply

Marsh Posté le 28-02-2005 à 16:48:58    

Ouais, c'est encore mieux :D

Reply

Marsh Posté le 28-02-2005 à 16:51:24    

:D ah bah non y a qu'une valeur, j'ai tout bon, mais où est l'attribut action  :cry:

Reply

Marsh Posté le 28-02-2005 à 16:58:01    

En fait je me suis mal expliqué...
 
voila le bout de code qui genere mon tableau de materiel :
 

Code :
  1. $matos_int = mysqli_query($dbprotect, "SELECT * FROM materiel WHERE int_ext = 0 AND suppr='0' ORDER BY id_materiel ASC" );
  2. while ($row_matos_int = mysqli_fetch_assoc($matos_int))
  3. {
  4. ?>
  5.   <tr>
  6.     <td align="center" bgcolor="#dbeaff"><?php echo stripslashes($row_matos_int['materiel']);?></td>
  7. <td align="center"><?php echo stripslashes($row_matos_int['origine']);?></td>
  8. <td align="center" bgcolor="#dbeaff"><?php echo $row_matos_int['prixunitaire'].' '.'€';?></td>
  9. <td align="center"><?php if($row_matos_int['unites'] == "" ) {echo '1';} else {echo stripslashes($row_matos_int['unites']);}?></td>
  10. <form name="suppint" onsubmit="javascript: return confirmValide()" method="post">
  11. <td align="center" bgcolor="#ffecec">
  12.     <input type="hidden" name="suppress_int" value="<?php echo $row_matos_int['id_materiel']?>">
  13.     <input type="submit" name="supmatos_int" value="S">
  14.     <input type="submit" name="modmatos_int" value="M">
  15.     </td>
  16. </form>
  17. </tr>
  18. <?
  19. }
  20. ?>


 
C'est une boucle while qui fait pleins de formulaires...
 
Est sur chaque ligne du tableau il y a a la fin un bouton supprimer ou modifier...et en champs caché j'ai le nom du materiel qui est envoye...pour que je sache quelle ligne l'utilisateur veux supprimer ou modifier...
 
Par contre je ne sais pas comment passer cette valeur au javascript...

Reply

Marsh Posté le 28-02-2005 à 16:58:11    

si il est pas précisé, c'est la page courante...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 28-02-2005 à 17:01:16    

KangOl a écrit :

si il est pas précisé, c'est la page courante...


 
ah bah j'ai appris quelque chose ;)
 

Reply

Marsh Posté le 28-02-2005 à 17:02:36    

kissskoool a écrit :

En fait je me suis mal expliqué...
 
voila le bout de code qui genere mon tableau de materiel :
 
...
 
C'est une boucle while qui fait pleins de formulaires...
 
Est sur chaque ligne du tableau il y a a la fin un bouton supprimer ou modifier...et en champs caché j'ai le nom du materiel qui est envoye...pour que je sache quelle ligne l'utilisateur veux supprimer ou modifier...
 
Par contre je ne sais pas comment passer cette valeur au javascript...


 
ah bah finalement j'avais qd mm raison, c'est bien un tableau d'élément, c'est donc ta méthode, Florent, qui marche :D
 
Plusieurs formulaires ?? Comment savoir le quel est soumis ?
 
edit : encore une connerie, c'est pas ma journée je crois :D


Message édité par esrevni le 28-02-2005 à 17:06:23
Reply

Marsh Posté le 28-02-2005 à 17:04:33    

la methode avec getelementbyid???
et bein non je ne vois pas...parce que meme si j'attribue un id a chaque ligne du tableau ....je ne saurez pas lequel appeler...pour recuperer la value...je dis une connerie la??

Reply

Marsh Posté le 28-02-2005 à 17:18:18    

up please...parce que la je suis passe a cote de la soluce...

Reply

Marsh Posté le 28-02-2005 à 17:23:35    

bah, comme t'as plusieurs formulaires mais une seul méthode, je te conseille de surcharger ta méthode :  

Code :
  1. <script language="JavaScript">
  2. function ConfirmValide(matos)
  3. {
  4.   var answer = confirm("Etes-vous sur de vouloir supprimer le matériel " + matos + " ?" );
  5.   if(answer)
  6.   {
  7.         document.supp_matos_int.submit();
  8.         alert("Le matériel " + matos + " a été supprimé avec succés !" );
  9.   }
  10. }
  11. </script>


 
et de faire l'appel comme suit
 

Code :
  1. onsubmit="javascript: return confirmValide(<?php echo $row_matos_int['id_materiel']?> )


 
mais peut être me trompe-je ?


Message édité par esrevni le 28-02-2005 à 18:39:25
Reply

Marsh Posté le 28-02-2005 à 17:32:51    

ahh ok...donc on oublie l'histoire des id par input...par contre apres dans ma fonction javascript...comment je fais pour utiliser la valeur que j'ai recu...
 
cad dans function confirmvalide(matos) {blabla}
 
comment je recupere matos ...
 

Reply

Marsh Posté le 28-02-2005 à 18:37:19    

Comme ça :
 

Code :
  1. alert("Le matériel " + matos + " a été supprimé avec succés !" );

Reply

Marsh Posté le 28-02-2005 à 18:49:47    

esrevni a écrit :

bah, comme t'as plusieurs formulaires mais une seul méthode, je te conseille de surcharger ta méthode :  

Code :
  1. <script language="JavaScript">
  2. function ConfirmValide(matos)
  3. {
  4.   var answer = confirm("Etes-vous sur de vouloir supprimer le matériel " + matos + " ?" );
  5.   if(answer)
  6.   {
  7.         document.supp_matos_int.submit();
  8.         alert("Le matériel " + matos + " a été supprimé avec succés !" );
  9.   }
  10. }
  11. </script>


 
et de faire l'appel comme suit
 

Code :
  1. onsubmit="javascript: return confirmValide(<?php echo $row_matos_int['id_materiel']?> )


 
mais peut être me trompe-je ?


Pas besoin de faire le submit. Suffit de retourner 'true' en cas de réussite.
Aussi, attention à  

<script language="JavaScript">


L'attribut language n'existe plus, faut mettre

<script type="text/javascript">

Reply

Marsh Posté le 28-02-2005 à 20:13:53    

FlorentG a écrit :

Pas besoin de faire le submit. Suffit de retourner 'true' en cas de réussite.
Aussi, attention à  

<script language="JavaScript">


L'attribut language n'existe plus, faut mettre

<script type="text/javascript">



 
c'est 2 fois vrai, j'ai pas encore les bon reflexes ;)

Reply

Marsh Posté le 28-02-2005 à 22:37:51    

C'est pas tout à fait le mm pb, mais je profite que vous soyez lancé :D : pourquoi avec
 

Code :
  1. <input type='button' name='action' value='Générer' onClick='checkFormulaire(this.form)'>


 
et
 

Code :
  1. function checkFormulaire(formulaire)
  2. {
  3. ...
  4. formulaire.submit();
  5. }


 
En php, il me dit que $action n'est pas définie, alors qu'avec le mm code et un input='submit' ça marche :??:


Message édité par Luigi le 28-02-2005 à 22:38:03
Reply

Marsh Posté le 28-02-2005 à 22:43:21    

Déjà c'est $_POST['action'] ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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