problème avec target

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème avec target

par Invité » 02 oct. 2006, 23:27

en fait, dans ma pop up j'écris : $var=isset($_SESSION['var']);

et j'affiche "1" dans ma page parente

comment passer la variable dans ma pop up ?

par Invité » 02 oct. 2006, 23:09

non ! désolée mais la formule innerHTML n'a pas l'air de marcher..

par Invité » 02 oct. 2006, 10:18

cela s'affiche correctement dans ma page parente si je valide à nouveau le formulaire de la pop up.

Modifier l'ordre des commande ? comment ?

initialiser la varable dans ma page parente ? c'est à dire, écrire dans mon <td> quelque chose du type : $var=isset($var); ?

comme il s'agit d'une variable de session, j'ai écrit : $var=$_SESSION['var']; mais en fait, je pense que cela n'a aucun impact, que j'écrive la formule ou que je laisse le <td> de la page parente vide.
à partir du moment où mon formulaire pop up pointe vers vers ma page parente, la varibale de session est récupérée sans difficulté.

Du reste, bien qu'à la première validation du formulaire, je n'obtienne aucun affichage sur la page parente, lorsuqe je réouvre la pop up, j'affiche bien le texte initialement saisi, preuve qu'il est bien enregistré sur ma page parente et récupéré par la pop up...c'est bizarre, non !

par Ryle » 02 oct. 2006, 10:03

C'est à dire ? je vois pas bien ce qui se passe... tu ouvres ta popup, tu saisis ton texte, tu l'envois vers ta fenêtre parente, mais ca ne l'affiche pas ? Par contre si tu ouvres à nouveau ta popup, là ça l'affiche correctement ? ou faut il que tu valides à nouveau ?
Il y a peut être un soucis dans l'ordre dans lequel tu exécutes les commandes ?

Ou bien le problème est juste lié à l'affichage lors de la première ouverture de la page parente ? (dans ce cas il te manque peut être juste le fait d'initialiser la valeur par défaut ?)

par Invité » 01 oct. 2006, 18:50

ok ! ca marche

encore un petit problème néanmoins..

lorsque je veux afficher la variable, la première fois, cad au premier click, elle ne s'affiche pas..il faut que je réouvre mon pop up pour reclicker à nouveau et obtenir un affichage

d'où cela peut-il venir ?

par Ryle » 01 oct. 2006, 18:22

Je n'ai pas bien compris ce que tu voulais, mais à priori :
.... = "<?php echo $var; ?>";
devrait fonctionner...

Attention toutefois si ton $var contient des guillemets, il faut les échapper, pour éviter que javascript ne pense que la chaine s'arrête là :)

par Invité » 01 oct. 2006, 17:53

ok ! ca a l'air de marcher..par contre, je souhaite afficher le contenu de la pop up qui est une variable $var (elle même variable de session : $var=$_SESSION['var'];)

comment dois-je déclarer cette variable dans le window.opener ?

si j'écris .... = $var ou ....="<?$var?>", cela ne fonctionne pas

par Ryle » 01 oct. 2006, 16:24

c'est normal, appliqué à document, la commande write va remplacer le contenu de ta page avec ce que tu lui demandes d'écrire :)

Si j'ai bien compris, tu veux faire apparaitre le texte saisi dans la cellule d'un tableau. Pour ça, il te faut donc identifier spécifiquement cette cellule en lui donnant un identifiant unique :

Code : Tout sélectionner

<td id="idDeMaCellule">...</td>
ta cellule ayant un nom unique qui permet de l'identifier sans problème dans le document, tu peux utiliser la fonction getElementById("idDeMaCellule") qui dans ce cas te retournera l'élément "td". La propriété innerHTML te permet alors de mettre à jour le contenu de cet élément avec ton texte :)

En rassemblant les morceaux, cela devrait te donner quelque chose qui ressemble à :

Code : Tout sélectionner

window.opener.getElementById("idDeMaCellule").innerHTML = "..." ;
Ceci étant, il ne s'agit que de l'affichage, si tu veux enregistrer le texte , il te faudra le copier dans un champ caché de ton formulaire également :)

par Invité » 01 oct. 2006, 14:48

ok, je suis nulle en javascript

dans ma pop up, j'ai écrit : window.opener.document.write("le contenu de ma popup"). C'est envoyé par un submitform à la page parent

effectivement, j'écris bien quelque chose, mais par contre la page parent disparait complètement..

comment dois je utiliser le getelementbyid ?

par Ryle » 01 oct. 2006, 14:06

Ben c'est pareil sauf que tu n'envois pas le formulaire quand tu cliques sur le bouton, mais que tu écris dans ta page parente avec le "window.opener"
Que ce soit dans un champ de formulaire, dans ta cellule ou autre, tout fonctionne comme si tu étais dans la même page :)

par fanny » 01 oct. 2006, 13:19

oui ..mais je ne veux pas enregistrer des données dans ma base depuis ma pop up, je veux juste afficher le résultat du contenu de la pop up dans ma page parent....ensuite, depuis ma page parent, j'ai un submit pour enregistrer toutes les données dans la base

par Ryle » 01 oct. 2006, 12:01

Il ne faut tout simplement pas utiliser l'attribut target. Celui-ci n'a pour but que de spécifier vers quelle fenêtre les données du formulaire vont être envoyées et, du fait de l'appel au serveur, actualisera la page en question.

Si tu as besoin d'enregistrer les données dans ta base, laisse la popup s'auto appeler et gérer l'enregistrement en base, puis une fois que celui ci est fait, utilise une fonction javascript pour mettre à jour la fenêtre parent :)

Avec la commande "window.opener" tu peux accéder depuis la popup, à la fenêtre qui a ouvert celle-ci. Tu peux ainsi récupérer des valeurs, mettre des champs à jour, exécuter des fonctions, etc.

Code : Tout sélectionner

window.opener.getElementById('unElementDeLaPageParent').... window.opener.appelFonctionDeLaPageParent(); ...

problème avec target

par fanny » 01 oct. 2006, 02:41

bonjour,

voilà, un problème que je ne parviens pas à résoudre depuis des heures..

j'ai un lien dans une page qui ouvre une popup avec onclick="window.open .. le lien est placé dans un <td> d'un tableau, lui même imbriqué dans un formulaire, ce qui signifie que je gère d'autres données qui seront envoyées à une base.

Bref, lorsque j'ouvre mon popup, je remplis un champ de saisie d'un formulaire (qui est sur la page popup => il s'agit d'un richtext). *
Mon soucis est de renvoyer le contenu de la popup (après submit) vers ma page parent (dans le <td>) sans perdre les données déjà écrites dans le tableau de la page parent.

J'ai essayé avec <form name="pop up" action="mapageparent.php" target="_parent"> mais si je ne perds pas les données de la page parent, en revanche, le contenu de la pop up ne s'affiche pas dans le <td> de la page parent.

si j'applique un autre target, le contenu s'affiche bien, mais je perds les données de la page parent.

Auriez-vous une solution, soit pour ecrire un target adapté, soit pour créer une fonction javascript ...

merci de votre aide