Page 1 sur 1

actions dans un popup et sa page mère

Posté : 05 mai 2006, 08:46
par Lopy
Bonjour à tous,
J'ai un problème pour programmer quelques petits trucs en javacript. Je vais commencer par vous enoncer ce que je voudrais faire.
Tout d'abord j'ai ma page mère avec un formulaire et dedans il y a 2 champs texte dans lesquels vont apparaître les coordonnées x et y. A l'aide d'un bouton une nouvelle fenêtre s'ouvre avec une carte du monde.
L'utilisateur clique sur le bouton en bas pour lancer la fonction et ensuite il clique sur la carte pour placer un site qui apparaît alors représenté par un e image. Ensuite un message de confirmation apparaît et la fenêtre se ferme tout en envoyant les coordonnées à la page mère qui se recharge à ce moment là.
Bon j'espère avoir été assez clair :?
Donc voilà mon code avec le quel j'ai débuté :

Code : Tout sélectionner

<html> <head> <link href="CSS/styles.css" rel="stylesheet" type="text/css"> <script> function sourisxy(e){ x=(navigator.appName=="Netscape")?e.pageX : event.x+document.body.scrollLeft; y=(navigator.appName=="Netscape")?e.pageY : event.y+document.body.scrollTop; //alert("x:"+x+" y:"+y); document.onclick=sourisxy; document.write("<form name=\"confirm_coord\" type=\"hidden\" method=\"get\" action=\"index.php?page=ajout_site.php\"><input name=\"coordx\" type=\"hidden\" value="+x+"><input name=\"coordy\" type=\"hidden\" value="+y+"></form>"); document.confirm_coord.onSubmit(); /*window.opener.location.reload(); self.close(); /*parent.location.href="index.php?page=ajout_site.php?coordx="+x+"&coordy="+y;*/ /*return x,y;*/ } /*if(navigator.appName.substring(0,3)=="Net") document.captureEvents(Event.mousemove);*/ </script> </head> <body BGCOLOR="yellow"> <div class="image_monde"> <?php $tabcouleur=array("","rouge","bleu","vert"); $requete="select `no_site`, `nom_orga`, `niveau`, `top`, `left` from site WHERE `situation` = \"Monde\""; $connexion=connexion(); $resu=execreq($requete,$connexion); $nblignes=mysql_num_rows($resu); for($i=0;$i<$nblignes;$i++){ $site=mysql_fetch_row($resu); $couleur=$tabcouleur[$site[2]]; echo "<a id=\"".$couleur."\" style=\"top=".$site[3].";left=".$site[4].";\" title=\"".$site[1]."\"></a>"; } echo "</div>"; echo"<div id=\"but_monde\">"; echo "<input type=\"button\" name=\"bouton\" value=\"cliquez ici pour placer le site\" onclick=\"alert('Veuillez cliquer sur la carte pour placer le site');sourisxy()\">"; echo "</div>"; ?> </body> </html>
Bon pour les aficionados du JS ne soyez pas effrayé, je débute en JS :oops:
Une autre question bonus : pour mon site j'utilise une page index.php qui inclus mes autres pages pour la mise en page, parcontre le problème c'est que je ne peux pas passer des paramètres par l'url pour les autres pages, suis-je obligé d'utliser à chaque fois des formulaires cachés? :(

Un million de remerciments à ceux qui auront le courage de répondre à tout ça :wink:

Posté : 08 mai 2006, 22:16
par Lopy
HEEEEELP I need somebody !
:cry:

Posté : 08 mai 2006, 23:10
par Cyrano
Proposition de corrigé :
<html>
<head>
<link href="CSS/styles.css" rel="stylesheet" type="text/css">
<script>
function sourisxy(e){
   x=(navigator.appName == "Netscape") ? e.pageX : event.x + document.body.scrollLeft;
   y=(navigator.appName == "Netscape") ? e.pageY : event.y + document.body.scrollTop;
   //alert("x:"+x+" y:"+y);
   document.onclick = sourisxy;
   var form = '<form name="confirm_coord" method="get" action="index.php?page=ajout_site.php">';
   form += '<input name="coordx" type="hidden" value="'+ x +'">';
   form += '<input name="coordy" type="hidden" value="'+ y +'">';
   form += '</form>';
   document.write(form);
   document.confirm_coord.submit();
   /*window.opener.location.reload();
   self.close();
   /*parent.location.href="index.php?page=ajout_site.php?coordx="+x+"&coordy="+y;*/
   /*return x,y;*/
}
/*if(navigator.appName.substring(0,3)=="Net") document.captureEvents(Event.mousemove);*/
</script>
</head>
<body bgcolor="yellow">
<div class="image_monde">
<?php
$tabcouleur=array("","rouge","bleu","vert");
$requete="select `no_site`, `nom_orga`, `niveau`, `top`, `left` from site WHERE `situation` = \"Monde\"";
$connexion = connexion();
$resu = execreq($requete,$connexion);
$nblignes = mysql_num_rows($resu);
while(($site = mysql_fetch_row($resu)) != false)
{
    $couleur = $tabcouleur[$site[2]];
    echo "<a id=\"".$couleur."\" style=\"top=".$site[3].";left=".$site[4].";\"  title=\"".$site[1]."\"></a>";
}
?>
</div>
<div id="but_monde">
  <input type="button" name="bouton" value="cliquez ici pour placer le site" onclick="alert('Veuillez cliquer sur la carte pour placer le site');sourisxy()">
</div>
</body>
</html>
Dans le JavaScript, tu as utilisé une formulation erronée :

Code : Tout sélectionner

document.confirm_coord.onSubmit();
Au lieu de

Code : Tout sélectionner

document.confirm_coord.submit();
Ensuite je te signale que l'attribut type est invalide dans une balise form, donc type="hidden" n'a rien à faire là. Cet attribut ne concerne que la balise input.

Posté : 09 mai 2006, 08:38
par Lopy
merci cyrano pour ce début de réponse.
Il me reste toujours un problème : lorsque je clique sur le bouton le popup se ferme et la page mère se recharge or moi je voudrai que lorsque je clique sur le bouton la fonction attende que je clique sur la carte avant de fermer le popup (je vais même rajouter un message de confirmation par la suite)

Et sinon il y a toujours ma question bonus :) :
Etant donné que j'ai utilisé la technique de l'index.php qui inclus toutes les autres pages du site, suis-je condamné à utliser des formulaires cachés pout tout mon site?

Posté : 10 mai 2006, 09:45
par Lopy
bon j'ai résolu une bonne partie des problèmes qu'il me restait. Parcontre je voudrais que les coordonnées du clique de la souris ne soit pris en compte que lorsque je clique sur la carte après avoir cliqué sur le bouton or dès que je clique sur le bouton l'ordi considère ça comme un clique sur l'image et me renvoi ces coordonnées là :?