IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Affichage d'une variable en provenance d'une popup


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut [PHP-JS] Affichage d'une variable en provenance d'une popup
    salutatous,

    LE PRINCIPE

    dans une première fenêtre parent j'ai deux champs de type "text".
    A côté de chacun de ces champs se trouve un lien qui ouvre une popup.

    Dans cette popup se trouve un lien qui quand on clique dessus envoie une variable à la fenêtre parent (qui du coup se recharge), puis ferme la popup.

    Ainsi le 1er champ de la fenêtre parent se remplit de la valeur de la variable en provenance de la popup.

    jusque-là tout baigne !

    MAIS si je refait la même manip pour le 2ème champ... la variable correspondante en provenance de la popup s'affiche bien dans ce second champ MAIS la valeur qui se trouvait dans le 1er champ ne reste pas au rechargement de la fenêtre mère !!!

    j'ai tant bien que mal réussi à combiner le javascript et le php, mais là je cale pour ré-afficher les deux valeurs !

    VOICI MON CODE D'APPEL DE LA POPUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form action="<?php //echo basename(__FILE__); ?>" method="post">
     
    	Ins&eacute;rez un lien image 01 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_1','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_1" size="50" value="<?php if (isset($_GET['zone_1'])) { echo $_GET['zone_1']; } elseif (!empty($_POST['zone_1'])) { echo $_GET['zone_1']; } ?>">
     
        <br />
        <br />
     
    	Ins&eacute;rez un lien image 02 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_2','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_2" size="50" value="<?php if (isset($_GET['zone_2'])) { echo $_GET['zone_2']; } elseif (!empty($_POST['zone_2'])) { echo $_GET['zone_2']; } ?>">
     
    </form>
    PUIS VOICI LE CODE DE LA POPUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php  
     
    	// construction de l'url de l'image
    	$url_image = 'dossier/'.$_GET['zone'].'/dossier/'.$_GET['zone'].'.jpg';
     
    	// affichage du lien
    	echo '<a href="javascript:com_fenetre_parent();">envoyer ce lien image</a>';
     
    	echo '<br />';
     
    	echo $url_image;
     
    ?>
     
    <!-- JAVASCRIPT -->
     
    <script language="JavaScript">
     
    	function com_fenetre_parent() {
     
    		/* recuperation des variables PHP */
    		var zone='<?php echo $_GET['zone']; ?>';
    		var url_image='<?php echo $url_image; ?>';
     
    		/* re-affichage de la fenetre parente avec passage de la variable dans l'url */
    		window.opener.location.href="index.php?"+zone+"="+url_image;
     
    		/* fermeture de la popup */
    		window.close();
     
    	}
     
    </script>
    merci de vos tuyaux

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    SI tu veux garder tes variables zone_1 et zone_2 lors du rechargement de ta page, il faut toutes les passer dans l'adresses, et ce depuis le debut.
    Donc quand tu cliques l'un de tes liens, l'autre variable doit aussi etre transmise. Puis depuis le popup, cette derniere doit etre transmise avec la variable 'normale' du poup.
    Z.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    merci Zwiter, je vais essayer ça

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    j'arrive pas à faire en sorte que le lien retourné par la popup grâce au javascript soit du type suivant :
    index.php?zone_1=dossier/zone_1/dossier/zone_1.jpg&zone_2=dossier/zone_2/dossier/zone_2.jpg

    j'ai essayé avec le sytème des sessions mais j'y arrive pô

    j'ai d'abord essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $_SESSION['zone_1'] = $_GET['zone_1'];
    $_SESSION['zone_2'] = $_GET['zone_2'];
     
    echo "<ul>\n";
     
    foreach($_SESSION as $cle => $valeur) {
    	echo "  <li><strong>".ucfirst($cle)." : </strong><em>".$valeur."</em></li>\n";
    }
     
    echo "</ul>\n";
    puis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $_SESSION['zone'] = array();
     
    // Subdivision du tableau de session
    $_SESSION['zone'][0] = $_GET['zone_1'];
    $_SESSION['zone'][1] = $_GET['zone_2'];
     
    $nb_index = sizeof($_SESSION['zone']);
     
    for($i=0;$i<$nb_index;$i++) {
    	echo $_SESSION['zone'][$i].'<br />';
    }
    et enfin ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $zone = array(
    	'zone_01'=>'$_GET["zone_1"]',
    	'zone_02'=>'$_GET["zone_2"]'
    );
     
    $_SESSION['zone'] = $zone;
     
    if(!empty($_SESSION['zone'])) {
    	$id_liste = implode(',',array_keys($_SESSION['zone']));
    	echo $id_liste;
    }
    PFFFF ! j'my perd complet

  5. #5
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Je ne comprends rien a ce que tu veux REELLEMENT faire avec les variables de sessions. As tu toi meme compris ce que tu veux faire avec ?
    C'est certain que les variables de sessions constituraient la solution la plus elegante.
    Pour s'y retrouver, quoi de mieux que les tutoriaux du site :
    http://php.developpez.com/cours/?page=securite#sessions
    Z.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    et bien en fait je me suis dit qu'en passant par le système des sessions j'arriverai peut-être mieux à mes fins... ce qui n'est pas le cas...

    mais je n'arrive toujours pas pas à faire en sorte que lorsque la popup envoie la 1ère valeur à la fenêtre parent, puis ensuite envoie la 2ème valeur à la fenêtre parent, les deux valeurs s'affichent.

    avec le bout de code de sessions que j'ai rajouté dans le fichier de la fenêtre parent j'affiche toujours et uniquement le résultat de la dernière valeur...

    mais je voudrais que ça affiche ça :
    - clé = zone | valeur = zone_1
    - clé = url_image | valeur = dossier_zone_1/fichier_zone_1.jpg

    et ça en même temps :
    - clé = zone | valeur = zone_2
    - clé = url_image | valeur = dossier_zone_2/fichier_zone_2.jpg

    il faudrait que je passe par une boucle mais je sais pas trop comment m'y prendre et où l'insérer !

    voici mon code modifié en utilisant le système des sessions :

    FICHIER index.php (fenêtre parent) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
    	session_start();
     
    	$url_image = $_SESSION['url_image'];
     
    	foreach($_SESSION as $cle => $valeur) {
    		echo '- <strong>clé = </strong>'.$cle.' | <strong>valeur = </strong>'.$valeur.'<br />';
    	}
     
    	echo '<br />';
    ?>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     
    <script language="JavaScript" src="popup.js"></script>
     
    </head>
     
    <body>
     
    <form action="<?php //echo basename(__FILE__); ?>" method="post">
     
    	Ins&eacute;rez un lien image 01 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_1','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_1" size="50" value="<?php if (isset($_GET['zone_1'])) { echo $url_image; } elseif (!empty($_GET['zone_1'])) { echo $url_image; } ?>">
     
        <br />
        <br />
     
    	Ins&eacute;rez un lien image 02 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_2','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_2" size="50" value="<?php if (isset($_GET['zone_2'])) { echo $url_image; } elseif (!empty($_GET['zone_2'])) { echo $url_image; } ?>">
     
    </form>
     
    </body>
     
    </html>
    FICHIER lien_image.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    	session_start();
     
    	$_SESSION['zone'] = $_GET['zone'];
    	echo $_SESSION['zone'].'<br />';
    ?>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     
    </head>
     
    <body>
     
    <?php  
     
    	// construction de l'url de l'image
    	$url_image = 'dossier_'.$_SESSION['zone'].'/fichier_'.$_SESSION['zone'].'.jpg';
     
    	// affichage du lien
    	echo '<a href="javascript:com_fenetre_parent();">envoyer ce lien image</a>';
     
    	echo '<br />';
     
    	$_SESSION['url_image'] = $url_image;
    	echo $_SESSION['url_image'].'<br />';
     
    ?>
     
    <!-- JAVASCRIPT -->
     
    <script language="JavaScript">
     
    	function com_fenetre_parent() {
     
    		/* recuperation des variables PHP */
    		var zone='<?php echo $_SESSION['zone']; ?>';
    		var url_image='<?php echo $_SESSION['url_image']; ?>';
     
    		/* re-affichage de la fenetre parente avec passage de la variable dans l'url */
    		window.opener.location.href="index.php?"+zone+"="+url_image;
     
    		/* fermeture de la popup */
    		window.close();
     
    	}
     
    </script>
     
    </body>
     
    </html>
    en tout cas merci de te pencher sur mon problème

  7. #7
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Dans ce cas, il te faut utiliser un tableau associatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $cle['zone1'] = 'dossier_zone_1/fichier_zone_1.jpg';
    $cle['zone2'] = 'dossier_zone_2/fichier_zone_2.jpg';
    Z.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut ENFIN TROUVÉ !
    j'arrive enfin à passer successivement des variables de ma fenêtre popup vers ma fenêtre parent tout en conservant leur affichage

    voici mon code :

    FICHIER index.php (fenêtre parent) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    	session_start();
    ?>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     
    <script language="JavaScript" src="popup.js"></script>
     
    </head>
     
    <body>
     
    <form action="<?php echo basename(__FILE__); ?>" method="post">
     
    	Ins&eacute;rez un lien image 01 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_1','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_1" size="50" value="<?php if (isset($_GET['zone_1'])) { echo $_SESSION['url_image_1']; } elseif (!empty($_GET['zone_1'])) { echo $_SESSION['url_image_1']; } ?>">
     
        <br />
        <br />
     
    	Ins&eacute;rez un lien image 02 : 
    	<br />
    	<a href="javascript:popup('lien_image.php?zone=zone_2','','650','650','yes','no','no','no','no','no')"> cliquez ici</a>
    	<br />
    	<input type="text" name="zone_2" size="50" value="<?php if (isset($_GET['zone_2'])) { echo $_SESSION['url_image_2']; } elseif (!empty($_GET['zone_2'])) { echo $_SESSION['url_image_2']; } ?>">
     
    </form>
     
    </body>
     
    </html>
    FICHIER lien_image.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <?php
    	session_start();
     
    	$_SESSION['zone'] = $_GET['zone'];
    	echo $_SESSION['zone'].'<br />';
    ?>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     
    </head>
     
    <body>
     
    <?php 
     
    	if ($_SESSION['zone'] == 'zone_1') {
     
    		// construction de l'url de l'image
    		$url_image_1 = 'dossier_'.$_SESSION['zone'].'/fichier_'.$_SESSION['zone'].'.jpg';
     
    		// affichage du lien
    		echo '<a href="javascript:com_fenetre_parent();">envoyer ce lien image</a>';
     
    		echo '<br />';
     
    		$_SESSION['url_image_1'] = $url_image_1;
    		echo $_SESSION['url_image_1'].'<br />';
     
    	} elseif ($_SESSION['zone'] == 'zone_2') {
     
    		// construction de l'url de l'image
    		$url_image_2 = 'dossier_'.$_SESSION['zone'].'/fichier_'.$_SESSION['zone'].'.jpg';
     
    		// affichage du lien
    		echo '<a href="javascript:com_fenetre_parent();">envoyer ce lien image</a>';
     
    		echo '<br />';
     
    		$_SESSION['url_image_2'] = $url_image_2;
    		echo $_SESSION['url_image_2'].'<br />';
    	}
     
    ?>
     
    <!-- JAVASCRIPT -->
     
    <script language="JavaScript">
     
    	function com_fenetre_parent() {
     
    		/* recuperation des variables PHP */
    		var url_image_1='<?php echo $_SESSION['url_image_1']; ?>';
    		var url_image_2='<?php echo $_SESSION['url_image_2']; ?>';
     
    		/* re-affichage de la fenetre parente avec passage de la variable dans l'url */
    		window.opener.location.href="index.php?zone_1="+url_image_1+"&zone_2="+url_image_2;
     
    		/* fermeture de la popup */
    		window.close();
     
    	}
     
    </script>
     
    </body>
     
    </html>

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    j'viens de m'apercevoir que ce que je voulais à l'identique c'est comme le système d'ajout des smileys de ce forum.

    quand on clique sur le bouton "plus" de la zone "Smileys" ça ouvre une popup qui propose d'autres smileys.

    au clic sur un des smileys, ça ajoute le smileys dans le champ du message sans recharger la fenêtre parent !

    c'est ça que j'aurais voulu faire...

    j'vais encore m'creuser la tronche pour voir si je peux reproduire ça...
    mais si vous avez des tuyaux j'suis également preneur

  10. #10
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Sur le forum, c'est pas un popup, mais un calque (div) qui s'affiche ou se cache via du javascript.
    Le smiley est aussi ajouté dans le champ de texte avec du javascript. Aucune page n'est chargée ou rechargée.
    Z.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2015, 16h46
  2. Contenu d'une variable devenant lui même une variable
    Par Copyright83 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 14/11/2012, 18h24
  3. Réponses: 2
    Dernier message: 04/12/2011, 18h02
  4. Réponses: 1
    Dernier message: 26/12/2010, 22h20
  5. [Free Pascal] [2.2] Impossible d'assigner une variable de type T à une variable de type T
    Par Hibou57 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 12/10/2007, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo