Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2011, 23h43   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 15
Points : 1
Points : 1
Par défaut communiquer depuis une popup vers la fenetre mère, la méthode idéale ?

Bonjour à tous,

Petit nouveau ici, et de surcroît débutant dans le monde du développement web; j'ai un petit souci de mise en œuvre sur un site que je développe à mes heures perdues smile

Je vous accorde que le mélange des 3 langages (HTML, JS et PHP) me perturbe légèrement, surtout les principes d’exécution Client, Serveur ... (mais ça commence à bien rentrer smile )

Allez j'arrête de tourner autour du pôt et je vous remercie par avance si vous lisez jusqu'au bout la description de ma problématique.

Voici comment est conçu mon site (en PHP) :

1. Une fenêtre dans laquelle est restituée un tableau (4 colonnes, 10 lignes) à l'aide d'une requête SQL, les données étant en base.
2. L'utilisateur doit pouvoir modifier ces données et les sauvegarder en base.
3. J'ai donc crée un bouton permettant d'ouvrir une popup modale (c'est un choix mûrement réfléchi) qui affiche le même tableau mais avec des input type "TEXT"
Les infos sont passées de la fenêtre mère à la fenêtre fille par une mise en session du tableau
4. Mon problème est que je ne sais pas trop comment renvoyer à la fenêtre mère les données (je ne me pose pas la question de savoir si les données ont été modifiées)
J'ai quelques pistes (window.returnValue, champs hidden, ....) mais je suis sur qu'il doit y avoir plus simple, plus propre et surtout plus astucieux.

Voici donc concrètement comment j'ai fait.

Fenêtre mère
1. requete SQL -> j'enrichis ma variable php $tab[..][..]
2. j'affiche mes 40 valeurs de $tab
3. je stocke $tab en session --> $_SESSION['tab'] = $tab; dans l'idée de récupérer les données côté popup
4. mon bouton ouvre la popup modale, et je lance une requete en session --> $tab = $_SESSION['tab'];
5. et là je bloque ! comment renvoyer les valeurs (modifiée ou non, peu importe) à la fenêtre mère ? tout en fermant la fenêtre fille ?

quelques idées :

mettre sur la fenêtre mère, 40 champs hidden (4 col x 10 lig) dans un form, et à l'aide du bout de code JS suivant appliqué sur mon bouton validé de la popup je peux récupérer le tout :

une boucle i,j (col/ligne)
Code :
1
2
3
4
tab[ i][j] = window.document.getElementById(i+'_'+j).value;
window.returnvalue = tab
 
window.close();
et ensuite dans ma fenêtre mère je lance une requête POST pour récupérer les données et écraser le tableau $tab

Mais ça me parait un peu lourd et un peu tiré par les cheveux non ?

Donc voilà, que me conseilleriez-vous ? une méthode toute adaptée ?

Merci d'avance pour vos réponses
totale_eclipse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 01h52   #2
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 17
Points : 15
Points : 15
Bonsoir totale_eclipse.

Tu sais sans doute que le Php en lui-même, étant un langage s'exécutant côté serveur, ne peut t'aider à coder cette fonctionnalité.
Je constate que tu as vite réalisé qu'il allait te falloir une technologie autre, à savoir javascript.

Tout d'abord, tu dois savoir qu'en javascript, tu as une propriété sympa qui s'appelle window.opener, qui pointe vers l'object window qui a servi à l'ouverture de la popup. Tu peux donc toujours garder un lien entre les fenêtres mères et filles.

Juste avant de fermer ton popup, essaie donc un code du type:

Code :
1
2
3
 
opener.document.location = opener.document.location;
window.opener.refresh();
Myst. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h45.


 
 
 
 
Partenaires

Hébergement Web