PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 05-04-2010 12:34:51

KieferS
Membre
Inscription : 05-04-2010
Messages : 1

Fenêtre POPUP avec envoi de donnéesvia méthode GET

Bonjour,

Je rencontre une difficulté sur l'affichage d'une fenêtre popup.
En fait, j'ai un formulaire qui m'affiche un listing de références. A chaque click sur référence, je veux qu'une fenêtre popup s'ouvre reprenant la référence sur laquelle j'ai cliquée.

Mon code se construit comme suit :

J'ai une page "analyse_ticket.php" qui contient ceci :

<script>
// Code pour l'affichage de la pop up
function pop_it_analysedetail(the_form)
{
window.open("", "popup", "height=400,width=650,menubar=0,toolbar=0,location=0,status=0,scrollbars=1");
}
</script>
<?php
<form name='ticket_analyse' method='get' action='analyse_detail.php?ticket_num=$result_analyse[0]' target='_blank'>
<input name='ticket_num' type='hidden' value=$result_analyse[0]>
<input type='submit' onclick='pop_it_analysedetail(ticket_analyse);' name='analyse' value='->'>
</form>
?>

Pour info, la variable $result_analyse[0] contient le numéro de la référence sur laquelle je clique et qui est transmise dans la popup.

Et j'ai une autre page "analyse_detail.php" qui récupère les infos issues de "analyse_ticket.php" :

<?php
$ticket_num = $_GET['ticket_num'];
echo "$ticket_num";
?>

Le problème est que j'ai une popup qui s'ouvre qui ne contient rien et une fenêtre normale (analyse_detail.php) qui se créée avec les infos transmise (la référence cliquée).

Je voudrais que "analyse_detail.php" soit la popup avec les infos transmises depuis "analyse_ticket.php".

J'espère avoir été suffisamment clair dans mes explications.

Merci à tous ceux qui se pencheront sur mon problème.

A+

Hors ligne

#2 05-04-2010 12:56:27

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : Fenêtre POPUP avec envoi de donnéesvia méthode GET

Bonjour,

Au vu du code, le fonctionnement est tout a fait logique.

Reprenons donc ce que fait le code actuel.

Lorsque d'un click sur le bouton submit du formulaire, cela appelle la fonction javascript pop_it_analysedetail.

Cette fonction elle fait un window.open de ... rien (premier argument du window.open = la cible ouverte, et là, c'est vide)

Comme elle ne retourne pas false, le traitement du formulaire n'est pas invalidé, et donc il continue de s'executer, ce qui charge la page analyse_detail.php dans la page principale.

Le fait de transmettre l'objet formulaire a la fonction javascript ne suffit par pour qu'elle décide qu'elle doive le traiter, il ne faut pas oublier que php/javascript sont "très con", ils font ce qu'on leur demande de faire explicitement, rien de plus, en gros.

Ma question du jour : pourquoi passer par un formulaire pour cela ? Un lien ne suffit pas ?

Exemple de code que j'aurai mis en place (même si je ne suis pas un grand fan des popup) :


<script>
// Code pour l'affichage de la pop up
function pop_it_analysedetail(ticket_num) {
   window.open("analyse_detail.php?ticket_num="+ticket_num, "popup", "height=400,width=650,menubar=0,toolbar=0,location=0,status=0,scrollbars=1");
}
</script>
 

<?php
echo '<a href="analyse_detail.php?ticket_num='.$result_analyse[0].'" onclick="javascript:pop_it_analysedetail(\''.$result_analyse[0].'\');return false;">-></a>';
?>
 

Quoi de spécial dans ce code ? Pas grand chose :

- la fonction javascript appelle la page qui va bien, avec comme paramètre celui qu'on lui a transmis

- lors du click sur le lien, cela lancera en priorité l'évenement onclick, qui lancera la fonction ouvrant le popup, puis fera un return false, ce qui fera comme si le click sur le lien avait été annulé (pour éviter que la page s'affiche aussi dans la page principale). Il faut juste faire attention aux ' certains devant être précédé du \ (car cela fait partie du code html pour le bon lancement du javascript)

- avantage supplémentaire de cette formulation, si le navigateur n'a pas de javascript (navigation en console, desactivé par le visiteur, visite d'un moteur de recherche pour indexation, ou tout simplement planté, j'ai deja vu des IE qui n'executaient plus le javascript...), l'action onclick ne se lance pas, ca ne fait pas de popup, mais le lien n'est pas invalidé, donc la page s'affiche quand meme (dans l'écran principal, mais l'essentiel c'est que ca soit accessible, non ?) => meilleure accessibilité, meilleur référencement aussi.

Après si le formulaire c'est pour le look "carré" du bouton, un peu de CSS sur le lien ci dessus et ca se resemblera comme deux goutes d'eau smile

Voila, je crois que j'ai fait le tour, bon courage smile

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

Pied de page des forums