Php/javascript ; submit et close
Résolu
karine_b
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
eee.eee Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
eee.eee Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voilà, je suis (encore) bloquée... voilà mon soucis ; ma fenetre principale ouvre une fenetre de saisie. Dans cette fenetre, l'utilisateur entre un nom et clique sur un bouton. Ce bouton envoie une requete SQL au server et, une fois le forfait accompli, elle doit se fermer (c'est là que le bas blesse)
Dans ma fenetre de saisie ;
<form name="formT" method="post" >
<?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();sleep(2);self.close()" value="Valider">
</form>
Le submit se fait, mais la fenetre ne se ferme pas.
si j'enlève sleep(2) la fenetre se ferme, mais la requete ne se fait pas...
et si je mets ceci
onclick="javascript:document.forms.formT.submit();alert('requete ok');self.close()"
le submit se fait, et la fenetre se ferme après que j'ai "OKté " le message...
Y a pas moyen de virer ce "alert" ???
Help !
voilà, je suis (encore) bloquée... voilà mon soucis ; ma fenetre principale ouvre une fenetre de saisie. Dans cette fenetre, l'utilisateur entre un nom et clique sur un bouton. Ce bouton envoie une requete SQL au server et, une fois le forfait accompli, elle doit se fermer (c'est là que le bas blesse)
Dans ma fenetre de saisie ;
<form name="formT" method="post" >
<?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();sleep(2);self.close()" value="Valider">
</form>
Le submit se fait, mais la fenetre ne se ferme pas.
si j'enlève sleep(2) la fenetre se ferme, mais la requete ne se fait pas...
et si je mets ceci
onclick="javascript:document.forms.formT.submit();alert('requete ok');self.close()"
le submit se fait, et la fenetre se ferme après que j'ai "OKté " le message...
Y a pas moyen de virer ce "alert" ???
Help !
A voir également:
- Php/javascript ; submit et close
- Easy php - Télécharger - Divers Web & Internet
- Telecharger javascript - Télécharger - Langages
- Expert php pinterest - Télécharger - Langages
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Javascript echo ✓ - Forum PHP
4 réponses
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.
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...
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 !
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).
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
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