Php/javascript ; submit et close
Résolu/Fermé
karine_b
Messages postés
32
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
6 juillet 2009
-
2 mars 2008 à 05:44
eee.eee Messages postés 69 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 15 septembre 2009 - 4 mars 2008 à 00:28
eee.eee Messages postés 69 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 15 septembre 2009 - 4 mars 2008 à 00:28
A voir également:
- Php/javascript ; submit et close
- Telecharger javascript - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Php?id=1 - Forum PHP
- The application has hung and will now close. we apologize for the inconvenience ✓ - Forum Jeux PC
- \R php ✓ - Forum PHP
4 réponses
sfel
Messages postés
1640
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
15 juillet 2009
430
2 mars 2008 à 19:31
2 mars 2008 à 19:31
bonsoir,
pour le alert a enlevé :
onclick="javascript:document.forms.formT.submit();self.close()"
pour le alert a enlevé :
onclick="javascript:document.forms.formT.submit();self.close()"
eee.eee
Messages postés
69
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009
20
2 mars 2008 à 19:36
2 mars 2008 à 19:36
Salut, j'ai une solution qui contourne le problème:
Dans le formulaire, tu met le lien vers la même page avec action="". De plus tu crée un checkbox invisible ( style="display:none" ), et de name="Enregistre".
Au début de la page tu rajoute un code PHP/javascript:
<script LANGUAGE="Javascript">
<?php
if(isset($_POST['Enregistre']))
{
print('self.close();');
}
?>
</script>
Ton ancien code sera alors:
<input type="button" onclick="javascript:document.forms.formT.submit();" value="Valider">
En clair il vérifie au début par PHP si la saisie a été enregistrée. Si c'est le cas il quitte la fenêtre. Le problème est qu'il y aura une requête au serveur supplémentaire et inutile. Bon c'est prendre un tank pour écraser une mouche, mais ça marche.
Dans le formulaire, tu met le lien vers la même page avec action="". De plus tu crée un checkbox invisible ( style="display:none" ), et de name="Enregistre".
Au début de la page tu rajoute un code PHP/javascript:
<script LANGUAGE="Javascript">
<?php
if(isset($_POST['Enregistre']))
{
print('self.close();');
}
?>
</script>
Ton ancien code sera alors:
<input type="button" onclick="javascript:document.forms.formT.submit();" value="Valider">
En clair il vérifie au début par PHP si la saisie a été enregistrée. Si c'est le cas il quitte la fenêtre. Le problème est qu'il y aura une requête au serveur supplémentaire et inutile. Bon c'est prendre un tank pour écraser une mouche, mais ça marche.
karine_b
Messages postés
32
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
6 juillet 2009
1
3 mars 2008 à 17:35
3 mars 2008 à 17:35
Hello eee.eee
j'ai essayé ta solution ; mais ca ne marche pas (je dois manquer d'expérience...)
Si j'ai bien tout compris, il faudrait faire qqchose comme ;
(ma page se nomme toolbox.php)
$action=$_GET["action"];
<form name="formT" method="post" action="toolbox.php?action=close" >
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
</form>
<?php }
if ($action == "close")
{ ?>
<script LANGUAGE="Javascript">
window.setTimeout("close()", 2000)
</script> <?php
}
Mais ca marche pô... snif snif. Je me suis dit ; "Le monsieur, il a dit POST et non GET..."
donc, j'ai fait ;
<form name="formT" method="post" action="" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
<input type="checkbox" value="Valider" style="display:none" name="Enregistre">
</form>
en rajoutant ;
<body topmargin="0" leftmargin="0">
<script LANGUAGE="Javascript">
<?php
if(isset($_POST['Enregistre']))
{
print('self.close();');
}
?>
</script>
Je teste... et ... raté !! (mais de peu...)
en effet,
La fenetre ne se ferme pas, et le code généré est ;
<script LANGUAGE="Javascript">
</script>
Apparemment, il ne passe pas dans la condition ; if(isset($_POST['Enregistre']))
to be continued...
j'ai essayé ta solution ; mais ca ne marche pas (je dois manquer d'expérience...)
Si j'ai bien tout compris, il faudrait faire qqchose comme ;
(ma page se nomme toolbox.php)
$action=$_GET["action"];
<form name="formT" method="post" action="toolbox.php?action=close" >
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
</form>
<?php }
if ($action == "close")
{ ?>
<script LANGUAGE="Javascript">
window.setTimeout("close()", 2000)
</script> <?php
}
Mais ca marche pô... snif snif. Je me suis dit ; "Le monsieur, il a dit POST et non GET..."
donc, j'ai fait ;
<form name="formT" method="post" action="" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
<input type="checkbox" value="Valider" style="display:none" name="Enregistre">
</form>
en rajoutant ;
<body topmargin="0" leftmargin="0">
<script LANGUAGE="Javascript">
<?php
if(isset($_POST['Enregistre']))
{
print('self.close();');
}
?>
</script>
Je teste... et ... raté !! (mais de peu...)
en effet,
La fenetre ne se ferme pas, et le code généré est ;
<script LANGUAGE="Javascript">
</script>
Apparemment, il ne passe pas dans la condition ; if(isset($_POST['Enregistre']))
to be continued...
karine_b
Messages postés
32
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
6 juillet 2009
1
>
karine_b
Messages postés
32
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
6 juillet 2009
3 mars 2008 à 18:06
3 mars 2008 à 18:06
yeah !! j'ai trouvé l'erreur ;
<?php
if(isset($_POST['add_new_cat']))
{
print('self.close();');
}
?>
<form name="formT" method="post" action="" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
<input name="Enregistre" type="checkbox" value="Valider" style="display:none" id="Enregistre">
</form>
ca marche enfin ! Merci à vous !!
...ce qui m'amène à la question à 100.000$ ; voilà la situation...
ma fenetre principale liste le contenu d'une base de données (des catégories de bookmarks).
pour ajouter une catégorie, je clique sur un bouton de la fenetre principale, ce qui ouvre une fenetre de saisie.
Dans cette fenetre de saisie, je rentre le nom de la catégorie. Une fois validée, elle execute sa requete et se ferme toute seule.
La question à 100.000$ est ; comment rafraichir ma fenetre principale après que la requete de la fenetre de saisie ait été envoyée...
Alors là, si vous trouvez, chapeau bas messieurs !
@+ bisous !
<?php
if(isset($_POST['add_new_cat']))
{
print('self.close();');
}
?>
<form name="formT" method="post" action="" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
<input name="Enregistre" type="checkbox" value="Valider" style="display:none" id="Enregistre">
</form>
ca marche enfin ! Merci à vous !!
...ce qui m'amène à la question à 100.000$ ; voilà la situation...
ma fenetre principale liste le contenu d'une base de données (des catégories de bookmarks).
pour ajouter une catégorie, je clique sur un bouton de la fenetre principale, ce qui ouvre une fenetre de saisie.
Dans cette fenetre de saisie, je rentre le nom de la catégorie. Une fois validée, elle execute sa requete et se ferme toute seule.
La question à 100.000$ est ; comment rafraichir ma fenetre principale après que la requete de la fenetre de saisie ait été envoyée...
Alors là, si vous trouvez, chapeau bas messieurs !
@+ bisous !
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
3 mars 2008 à 00:06
3 mars 2008 à 00:06
Hello,
A en juger du comportement du script, tout porte à croire que la méthode sleep soit responsable de la non exécution de l'instruction suivante, à savoir la fermeture de la fenêtre de saisie.
D'où provient cette méthode sleep ? (Elle n'existe pas en standard donc je suppose que tu as dû la recréer). La console d'erreur JavaScript indique-t-elle une erreur ?
Sinon je te conseille cette lecture pour le sleep http://www.xorax.info/blog/programmation/103-sleep-wait-pause-javascript.html
Très simplement, il suffirait de lancer l'instruction "close()" au travers du setTimeout (les unités sont mesurées en millisecondes, donc 2000 pour 2 secondes).
A en juger du comportement du script, tout porte à croire que la méthode sleep soit responsable de la non exécution de l'instruction suivante, à savoir la fermeture de la fenêtre de saisie.
D'où provient cette méthode sleep ? (Elle n'existe pas en standard donc je suppose que tu as dû la recréer). La console d'erreur JavaScript indique-t-elle une erreur ?
Sinon je te conseille cette lecture pour le sleep http://www.xorax.info/blog/programmation/103-sleep-wait-pause-javascript.html
Très simplement, il suffirait de lancer l'instruction "close()" au travers du setTimeout (les unités sont mesurées en millisecondes, donc 2000 pour 2 secondes).
karine_b
Messages postés
32
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
6 juillet 2009
1
3 mars 2008 à 15:51
3 mars 2008 à 15:51
Merci pour vos réponses !
Alors, j'ai commencé par essayer un Setimeout (proposé par Posotaz) ;
voilà le code (la page est nommée toolbox.php) ;
<form name="formT" method="post" action="toolbox.php?action=close" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
</form>
<?php }
if ($action == "close")
{ ?>
<script LANGUAGE="Javascript">
window.setTimeout("close()", 2000)
</script> <?php
}
==> la fenetre se ferme bien au bout de 2secondes. Par contre, la requête n'a pas été envoyée... snif snif
Alors, j'ai commencé par essayer un Setimeout (proposé par Posotaz) ;
voilà le code (la page est nommée toolbox.php) ;
<form name="formT" method="post" action="toolbox.php?action=close" >
<?php echo str_replace("|"," / ",$path_to_find)." / "; ?>
<input name="add_new_cat" type="text" class="Style_Normal" id="add_new_cat" value="" size="60" />
<input type="button" onClick="javascript:document.forms.formT.submit();" value="Valider">
</form>
<?php }
if ($action == "close")
{ ?>
<script LANGUAGE="Javascript">
window.setTimeout("close()", 2000)
</script> <?php
}
==> la fenetre se ferme bien au bout de 2secondes. Par contre, la requête n'a pas été envoyée... snif snif
eee.eee
Messages postés
69
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009
20
4 mars 2008 à 00:28
4 mars 2008 à 00:28
Pour mettre à jour automatiquement ta fenêtre principale, la solution: xmlhttprequest(). Voici des pages ou on la décrit (Et là je ferai bien de faire la même chose que toi ^^ et de les lire aussi)
https://www.toutjavascript.com/savoir/xmlhttprequest.php3
https://www.xul.fr/xml-ajax.html
https://www.toutjavascript.com/savoir/xmlhttprequest.php3
https://www.xul.fr/xml-ajax.html