Communication fenetres parente html/php
Fermé
mick007
-
28 juin 2009 à 23:45
moderno31 Messages postés 872 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 5 juil. 2009 à 19:20
moderno31 Messages postés 872 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 5 juil. 2009 à 19:20
Bonsoir,
J'ai créé une page php (Appelons la A) avec un div, qui contient une balise OBJECT appellant une page php (B).
Comment les pages A et B peuvent-elles interagir entre elles ?
En gros, j'aimerais modifier la valeur d'une balise de la page A à partir de la page B. La page A détectera le changement.
J'ai essayé tellement de "trucs du net" sans succès que j'espère avoir une solution convenable ici.
Je tiens aussi à préciser que je ne veux pas faire usage de IFRAME.
Merci de vos idées,
Mickaël
J'ai créé une page php (Appelons la A) avec un div, qui contient une balise OBJECT appellant une page php (B).
Comment les pages A et B peuvent-elles interagir entre elles ?
En gros, j'aimerais modifier la valeur d'une balise de la page A à partir de la page B. La page A détectera le changement.
J'ai essayé tellement de "trucs du net" sans succès que j'espère avoir une solution convenable ici.
Je tiens aussi à préciser que je ne veux pas faire usage de IFRAME.
Merci de vos idées,
Mickaël
A voir également:
- Communication fenetres parente html/php
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Clavier ouvre des fenetres ✓ - Forum Windows Vista
- Espace html ✓ - Forum HTML
- [**] Balise pour un espace vide en hml. Merci ✓ - Forum Webmastering
8 réponses
moderno31
Messages postés
872
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
29 juin 2009 à 00:12
29 juin 2009 à 00:12
Hello,
En résumé c'est quoi le traitement à faire ?
Tu attends quoi comme résultat ?
En résumé c'est quoi le traitement à faire ?
Tu attends quoi comme résultat ?
moderno31
Messages postés
872
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
29 juin 2009 à 07:22
29 juin 2009 à 07:22
Je ne vois pas quel peut etre ton problème... Excuse moi. Un exemple ?
Ce que je crois comprendre c'est que ta page B est en include sur la page A et ti veux savoir comment afficher les données et valeurs de la page B sur la A : c'est ça ?
Ce que je crois comprendre c'est que ta page B est en include sur la page A et ti veux savoir comment afficher les données et valeurs de la page B sur la A : c'est ça ?
Salut,
Je viens de me relire et tu as en fait raison: c'est pas clair du tout! Je me rattrappe là et ré-explique l'effet désiré.
Lorsque je clique sur un bouton de la page A, ce dernier appelle un script php (B), qui s'occupe de lancer des calculs intenses sur le serveur et d'afficher le résultats de ces calculs. Ces calculs prennent un temps assez long et durant ce temps, dans le div de la page A, il ne s'affiche que le cadre de la page avec une sorte d'icône dans le coin supérieur gauche, ce qui est assez laid en soi.
L'idée que j'ai eu est de démarrer la page A avec le div non visible. Lorsque les calculs sont lancés, je préviens l'utilisateur d'être un peu patient pendant que les calculs tournent (Un simple "alert" ou un mot quelquepart sur la page est suffisant). Evidemment, lorsque les calculs de la page B sont terminés, il faut que l'utilisateur puisse voir le résultat. Et en ce sens, j'ai besoin de faire ré-apparaître mon div. Ainsi, de la page B, il faut que je trouve le moyen d'accéder à la page A qui rendra la visibilité de ce div. J'ai essayé plusieurs approches comme:
window.parent.document.getElementById("result_div")
window.opener.document.getElementById("result_div")
window.opener.getElementById("result_div")
opener.getElementById("result_div")
...
Bref, tout ce que les gens ont pu conseiller sur le net. Il n'y a qu'une seule commange qui passe qui est le:
echo 'alert(window.parent.document.location);';
Or, ceci m'affiche l'adresse de la page html qui appelle la page A... :s (En fait, la page A est une page php incluse dans un simple script html)
Est-ce plus clair là ? As-tu une idée sur le problème ? Merci en tout cas pour tes interventions.
Mickaël
Je viens de me relire et tu as en fait raison: c'est pas clair du tout! Je me rattrappe là et ré-explique l'effet désiré.
Lorsque je clique sur un bouton de la page A, ce dernier appelle un script php (B), qui s'occupe de lancer des calculs intenses sur le serveur et d'afficher le résultats de ces calculs. Ces calculs prennent un temps assez long et durant ce temps, dans le div de la page A, il ne s'affiche que le cadre de la page avec une sorte d'icône dans le coin supérieur gauche, ce qui est assez laid en soi.
L'idée que j'ai eu est de démarrer la page A avec le div non visible. Lorsque les calculs sont lancés, je préviens l'utilisateur d'être un peu patient pendant que les calculs tournent (Un simple "alert" ou un mot quelquepart sur la page est suffisant). Evidemment, lorsque les calculs de la page B sont terminés, il faut que l'utilisateur puisse voir le résultat. Et en ce sens, j'ai besoin de faire ré-apparaître mon div. Ainsi, de la page B, il faut que je trouve le moyen d'accéder à la page A qui rendra la visibilité de ce div. J'ai essayé plusieurs approches comme:
window.parent.document.getElementById("result_div")
window.opener.document.getElementById("result_div")
window.opener.getElementById("result_div")
opener.getElementById("result_div")
...
Bref, tout ce que les gens ont pu conseiller sur le net. Il n'y a qu'une seule commange qui passe qui est le:
echo 'alert(window.parent.document.location);';
Or, ceci m'affiche l'adresse de la page html qui appelle la page A... :s (En fait, la page A est une page php incluse dans un simple script html)
Est-ce plus clair là ? As-tu une idée sur le problème ? Merci en tout cas pour tes interventions.
Mickaël
moderno31
Messages postés
872
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
30 juin 2009 à 22:24
30 juin 2009 à 22:24
Hello Mr calculs lol
Heu je n'ai pas l'habitude de faire ce type de traitements donc je suis un peu à l'ouest !
Tes calculs sont des requetes si je pense bien, donc une requete 'est vite exécuté, comment ce peut-il prendre autant de temps.
Ce que je comprends dans ton problème c'est que tu attends une solution du type MVC (Modèle Vue Controleur) -- > un truc barbare auquel je n'ai jamais vraiment compris le fonctionnement.
Je ne sais rien te dire de plus.
Je vais réfléchir...si je pense à un truc je te dis
Désolé
Heu je n'ai pas l'habitude de faire ce type de traitements donc je suis un peu à l'ouest !
Tes calculs sont des requetes si je pense bien, donc une requete 'est vite exécuté, comment ce peut-il prendre autant de temps.
Ce que je comprends dans ton problème c'est que tu attends une solution du type MVC (Modèle Vue Controleur) -- > un truc barbare auquel je n'ai jamais vraiment compris le fonctionnement.
Je ne sais rien te dire de plus.
Je vais réfléchir...si je pense à un truc je te dis
Désolé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Merci beaucoup pour ton aide! mdr! ;)
En fait, pour tout t'expliquer, les temps de calcul vont dépendre de la requête de l'utilisateur. Sur la page, j'ai simplement créé un tableau dynamique (On va plutôt dire modulable) dans lequel on peut ajouter des lignes ou en retirer. Et plus il y a de lignes, plus les calculs seront longs, allant jusqu'à prendre plusieurs minutes de calculs (Ces calculs sont en fait lancés sur un cluster interne, afin que plusieurs personnes puissent soumettre des calculs).
Comme tu le dis si bien, c'est un peu une IHM que je cherche à re-créer avec du Javascript/PHP! ;)
Je reste toujours preneur d'idées au cas où une surgirait de ton esprit de programmeur! :D
Encore merci,
Mickaël
Merci beaucoup pour ton aide! mdr! ;)
En fait, pour tout t'expliquer, les temps de calcul vont dépendre de la requête de l'utilisateur. Sur la page, j'ai simplement créé un tableau dynamique (On va plutôt dire modulable) dans lequel on peut ajouter des lignes ou en retirer. Et plus il y a de lignes, plus les calculs seront longs, allant jusqu'à prendre plusieurs minutes de calculs (Ces calculs sont en fait lancés sur un cluster interne, afin que plusieurs personnes puissent soumettre des calculs).
Comme tu le dis si bien, c'est un peu une IHM que je cherche à re-créer avec du Javascript/PHP! ;)
Je reste toujours preneur d'idées au cas où une surgirait de ton esprit de programmeur! :D
Encore merci,
Mickaël
moderno31
Messages postés
872
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
2 juil. 2009 à 16:31
2 juil. 2009 à 16:31
Très cher Michael, :) lol
tu sais je n'ai pas une ame de développeur et tant mieux. J'ai des sortes de crises d'urticaires quand j'en fait trop. Cela ne m'empeche pas d'avoir un minimun de connaissances pour aider. Pour faire ton IHM en PHP ok avec JavaScript cela se complique je ne connais pas...
Par contre ton souci ne se concrétise pas dans ma tete. :( sorry
tu sais je n'ai pas une ame de développeur et tant mieux. J'ai des sortes de crises d'urticaires quand j'en fait trop. Cela ne m'empeche pas d'avoir un minimun de connaissances pour aider. Pour faire ton IHM en PHP ok avec JavaScript cela se complique je ne connais pas...
Par contre ton souci ne se concrétise pas dans ma tete. :( sorry
Salut Moderno,
Tu ne devineras jamais... J'ai trouvé LA solution à mon problème! Si si! Je ne suis pas programmeur, mais j'ai quand même trouvé l'astuce du mois là! mdr! :D
En fait, j'ai eu beau chercher dans tous les forums, c'était toujours la même histoire, à savoir contourner la question avec un "Mais pourquoi tu fais ça ? C'est trop pourrie comme méthode! Essaie plutôt ça, c'est mieux!" Non mais, pourquoi les gens sont-ils toujours aussi sûr d'eux et qui sont-il réellement pour juger de la qualité d'une méthode à partir du moment où elle marche, et surtout quand elle marche PARTOUT! Et surtout la question n'est pas "Quelqu'un a une idée pour faire ça ?", mais "Je voudrais faire ça par ce moyen là... Des propositions pour que ça marche ?"
Ainsi, la méthode que j'ai le plus rencontré dans mon cas: le fameux objet XMLHttpRequest!! Mais alors celui-là, on nous le sort de partout, comme si il rendait notre vie dépendante de lui! Et le pire dans tout ça, c'est que ça ne fonctionne que sous IE ou FF! (D'après les codes fournis...) Donc, en gros, si je veux utiliser Konqueror (Je sais, faut abandonner les vieilleries, mais quand même! :p ), c'est foutu!
Bref, passons quand même à la solution, qu'au moins une personne qui ait le même problème tombe sur ce topic plutôt qu'un autre ou on lui dit que sa méthode est pourrie! mdr!
En fait, il suffit de créer tout simplement une iframe "cachée". Par cachée, j'entends qu'on lui attribue des paramètres "width" et "height" de 0px. Ensuite, on charge sa page dedans. L'utilisateur ne voit rien tandis que les calculs tournent et que j'indique dans un div "non caché" que les calculs sont en cours. Une fois que les calculs sont finis, la page qui a été appelée peut accéder à la page parente (Et oui, c'est l'avantage de l'iframe!) par le biais d'un window.parent.document.getElementById("IdDeCeQuOnVeut") afin d'afficher quelquepart que les calculs sont terminés! :D
Pour les critiques de cette approche, j'ai pu lire une fois sur un forum un truc du genre: "Les frames, iframes et tableaux... Ca pue!" Alors, il faut vraiment que ces gens aillent se recycler et cracher ailleurs... Et surtout qu'ils arrêtent de confondre les choses! Je suis d'accord pour les frames. En revanche, les iframes sont revenues à la charge après une légère absence, c'est qu'il y a une excellente raison à ça. Et les tableaux, c'est excellent en ce sens que ça marche partout, mais alors, y'a pas d'exception aux tableaux! :D
Et voilà! En tout cas, encore merci pour tes interventions pour le moins supra-utile! ;)
Mickaël
Tu ne devineras jamais... J'ai trouvé LA solution à mon problème! Si si! Je ne suis pas programmeur, mais j'ai quand même trouvé l'astuce du mois là! mdr! :D
En fait, j'ai eu beau chercher dans tous les forums, c'était toujours la même histoire, à savoir contourner la question avec un "Mais pourquoi tu fais ça ? C'est trop pourrie comme méthode! Essaie plutôt ça, c'est mieux!" Non mais, pourquoi les gens sont-ils toujours aussi sûr d'eux et qui sont-il réellement pour juger de la qualité d'une méthode à partir du moment où elle marche, et surtout quand elle marche PARTOUT! Et surtout la question n'est pas "Quelqu'un a une idée pour faire ça ?", mais "Je voudrais faire ça par ce moyen là... Des propositions pour que ça marche ?"
Ainsi, la méthode que j'ai le plus rencontré dans mon cas: le fameux objet XMLHttpRequest!! Mais alors celui-là, on nous le sort de partout, comme si il rendait notre vie dépendante de lui! Et le pire dans tout ça, c'est que ça ne fonctionne que sous IE ou FF! (D'après les codes fournis...) Donc, en gros, si je veux utiliser Konqueror (Je sais, faut abandonner les vieilleries, mais quand même! :p ), c'est foutu!
Bref, passons quand même à la solution, qu'au moins une personne qui ait le même problème tombe sur ce topic plutôt qu'un autre ou on lui dit que sa méthode est pourrie! mdr!
En fait, il suffit de créer tout simplement une iframe "cachée". Par cachée, j'entends qu'on lui attribue des paramètres "width" et "height" de 0px. Ensuite, on charge sa page dedans. L'utilisateur ne voit rien tandis que les calculs tournent et que j'indique dans un div "non caché" que les calculs sont en cours. Une fois que les calculs sont finis, la page qui a été appelée peut accéder à la page parente (Et oui, c'est l'avantage de l'iframe!) par le biais d'un window.parent.document.getElementById("IdDeCeQuOnVeut") afin d'afficher quelquepart que les calculs sont terminés! :D
Pour les critiques de cette approche, j'ai pu lire une fois sur un forum un truc du genre: "Les frames, iframes et tableaux... Ca pue!" Alors, il faut vraiment que ces gens aillent se recycler et cracher ailleurs... Et surtout qu'ils arrêtent de confondre les choses! Je suis d'accord pour les frames. En revanche, les iframes sont revenues à la charge après une légère absence, c'est qu'il y a une excellente raison à ça. Et les tableaux, c'est excellent en ce sens que ça marche partout, mais alors, y'a pas d'exception aux tableaux! :D
Et voilà! En tout cas, encore merci pour tes interventions pour le moins supra-utile! ;)
Mickaël
moderno31
Messages postés
872
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
5 juil. 2009 à 19:20
5 juil. 2009 à 19:20
Je suis content que tu aies trouvé, brique à ton édifice.
En cherchant un peu on trouve des trucs, faut pas désespérer sinon bricoler :)
Au plaisir de t'aider
En cherchant un peu on trouve des trucs, faut pas désespérer sinon bricoler :)
Au plaisir de t'aider
29 juin 2009 à 01:06
Alors, le principe est très simple en soit.
Une page A lance une page B qui apparait dans un div, qui n'est pas visible (visibility:'hidden'). La page B lance des calculs (assez intenses) sur le serveur. Une fois les calculs terminés, l'idée est d'accéder à la page A, afin de modifier les paramètres du div qui contient la page B.
Pourquoi je ne laisse pas le div constamment visible ? Tout simplement parce que lors du chargement de la page B (et donc des calculs qui peuvent durer assez longtemps), un cadre apparait à l'emplacement du div, ce qui rend l'effet monstrueusement laid.
Une idée ? Merci par avance.
Mickaël