Pop up

djbabou Messages postés 155 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 23 novembre 2015 - 9 sept. 2010 à 21:53
djbabou Messages postés 155 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 23 novembre 2015 - 10 sept. 2010 à 17:23
Salut a tous

en fait, j'aimerais charger une page dans la même fenetre sans ouvrir de pop up!

Je m'explique: j'ai développé un site qui utilise un pop up je n'ai pas eu le choix car au départ, il m'était demandé de mettre en place un système avec pop up. Malheureusement pour moi, cette dsiposition a changée; maintenant on me demande de retirer tout les pop-up de mon site.

J'ai déjà tout essayé mais rien ne fait car les méthodes genre document.location.href ou windows.location.href m'affiche effecctivement ma page dans la même fenetre mais, problème toutes mes données du formulaire sont perdues.

Après validation des infos du formulaire, j'appelle une page purc.php qui effectue un certain nombre de traitement et qui fait appelle à ma fameuse pop up ( confirm.php ).

Voici son appel :

window.open("./_sys/confirm.php?actived_key=<?php echo '19987'.date('Y-m-d H')); ?>","","width=600,height=800,left=20,top=20,location=no,status=no,toolbar=no");
window.close();
win.focus();

ce que j'aimerais faire c'est empecher qu'une nouvelle fenetre s'ouvre et donc que confirm.php s'ouvre dans la même fenêtre, ou au pire que la fenetre qui appelle confirm.php se ferme ou se masque de facon à ce que l'on ne la voit pas.

les function comme blur() ne fonctionnent pas car ma fenetre reste visible et ma pop up apparait.

Auriez vous une piste ou des olutions à me proposer s'il vous plait ?

5 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 sept. 2010 à 22:21
Salut,

Il est possible de "forcer" l'envoi d'un formulaire avec Javascript, en utilisant la méthode :
document.forms['mon_formulaire'].submit();

Autrement, en changeant simplement l'URL, il est normal que les données du formulaire soient perdues, c'est comme si on cliquait simplement sur un lien (sans soumettre le formulaire donc).

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
djbabou Messages postés 155 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 23 novembre 2015
9 sept. 2010 à 23:06
Merci pour ta réponse...

En fait les données de mon formulaires sont envoyés à ma première page purc.php . Jusque la je n'ai aucun problème.

Le problème je le rencontre sr la page confirm.php

Quand j'utilise ma pop up, il n'y a aucun problème

window.open("./_sys/confirm.php?actived_key=<?php echo '19987'.date('Y-m-d H')); ?>","","width=600,height=800,left=20,top=20,location=no,status=no,toolbar=no");
window.close();
win.focus();

elle m'ouvre donc une page et m'affiche les données du formulaire et effectue les derniers traitements avat la sauvegarde.


Par contre, juste en changeant mon code pour éviter des pop up, et tout afficher sans ouvrir de vouvelles fenêtres, en remplacant le code cité plus haut par des methodes comme document.location.href ou windows.location.href , plus rien comme données.

Essaies tu donc de me dire qu'en envoyant les données du formulaire de formulaire vers purc.php vers confirm.php j'orai la possiblité de supprimer ma pop up tout en gardant mes données?



Voici la fonction qui appel donc ma page. C'est à partir de la que je dois faire mes modifs pour envoyer du même coup mon formulaire ? Et puis je vois difficilement comment y arriver ?

obj('submit_bt').onclick=function(){
if(valid_form){
window.open("./_sys/confirm.php?actived_key=<?php echo md5('confirm.php'.date('Y-m-d H')); ?>","","width=600,height=800,left=20,top=20,location=no,status=no,toolbar=no");
window.close();
win.focus();
}

Merci d'avance pour vos réponses ...
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 sept. 2010 à 01:08
C'est bien ça que je dis. Ta popup sert uniquement à confirmer au formulaire qu'on valide ce qu'on envoit. Dans un formulaire HTML, l'événement onsubmit() permet de définir un traitement lors de la soumission du formulaire. Si le script appelé renvoit TRUE, alors le formulaire est envoyé. Si le script renvoit FALSE, alors le formulaire n'est PAS envoyé.
Ce qui se passe dans ton code, c'est que tu charges la popup à la place de la page contenant le formulaire.
Je vois deux options :
- tu renvoies à la page de confirmation les données du formulaire et tu t'arranges pour les envoyer (à nouveau) à la page qui va les traiter. Ca t'oblige en quelque sorte à avoir un deuxième formulaire, caché si l'on peut dire, avec que des champs de type hidden contenant les données saisies par l'utilisateur
- la deuxième option est plus propre. Elle consiste à utiliser les sessions PHP. Rien de sorcier. On peut décemment considérer que la durée de vie des données à enregistrer (temporairement) est très courte. Si l'utilisateur ne valide pas ses informations dans les 10 minutes, il n'est pas aberrant de lui demander de recommencer. Donc, un simple session_start() pour démarrer la session (tu peux t'amuser à configurer le nom du SID avec session_name(), ou la durée de vie des cookies, mais pour ce cas précis, je ne suis pas convaincu que ce soit vraiment indispensable, même si c'est plus propre), puis tu stockes les données du formulaire dans les variables de session, le tableau superglobal $_SESSION. Tout ça, dans la page de confirmation qui a reçu les données du formulaire. Puis, quand on clique pour dire ok, sur la page qui va enregistrer les données, tu démarres une session avec session_start(), tu récupères les données du formulaire que tu as sagement sauvegardées dans $_SESSION et tu stockes tout ça bien proprement dans ta base de données.

Est-ce que ça répond à tes interrogations, ou bien est-ce que je fais fausse route et j'ai rien compris à ce que tu demandes ?

May the force be with you ^^

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 sept. 2010 à 01:12
Juste une dernière chose...
Habituellement, pour confirmer, on utilise souvent la fonction javascript confirm() qui sert spécifiquement à ça : http://www.toutjavascript.com/reference/reference.php?ref=confirm&parent=6

Sinon, si tu trouves que c'est pas bien joli, tu peux utiliser une "popup" esthétique avec un peu d'ajax. Il existe des dizaines de ces popup : lightbox, thickbox, shadowbox, et j'en passe. Ce sont ces mêmes popup qui servent souvent à afficher des captures d'écran, des photos de galleries, etc.

Mais si tu veux vraiment une page complète, la deuxième solution de mon précédent message me paraît la plus propre.

Enjoy et bonne nuit.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djbabou Messages postés 155 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 23 novembre 2015
10 sept. 2010 à 17:23
Salut

en fait, non ! Je pense que je ne me suis pas bien fait comprendre. Ce que je veux c'est éviter les pop - up et pas en rajouter. Tous mes traitements et otre doivent se faire du debut a la fin sur la même page.

formul.php--> purc.php--> confirm.php
sans changer de page.

Pour y arriver j'ai fait un require de purc.php dans formul.

Par contre il me faut trouver une solution pour faire la même chose de purc.php vers confirm.php...

Au pire je me dis que je pourrai empecher l'internaute de naviguer tant que la pop up est ouverte, mais je n'y arrive pas non plus.

J'utilise les fonctions blur() et focus () mais rien. Si je n'arrive pas a faire tout l'affichage dans la même page, est-ce que je pourrai empecher la naviguation sur d'autre page ??
0
Rejoignez-nous