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

jQuery Discussion :

Afficher dans la div d'une autre page le résultat d'une requete


Sujet :

jQuery

  1. #1
    Membre habitué
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Points : 131
    Points
    131
    Par défaut Afficher dans la div d'une autre page le résultat d'une requete
    Bonjour
    J'ai 3 pages.php:

    La 1ere est "1_test.php": elle contient une "liste groupée avec des liens " (BOOTSTRAP).
    Quand on clic sur un lien de cette liste, une fonction AJAX récupère l'id_theme et l'envoie au
    au fichier "2_test.php" dans lequel une requête édite un texte html.
    Je veux qu'au final ce texte html se retrouve dans la div d'id box_1 de la page "3_test.php":

    $('#box_1 de la page 3_test.php').html(texthtml);

    Je ne voix pas comment faire.
    Pouvez vous m'aider?

    Cordialement

    1_test.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
    <!DOCTYPE html>
     
    <html lang="fr">
     
    <head>
     
    	<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
     
    </head>
     
    <body>
     
    <div class="col-lg-4">
    	<div class="list-group">
    		<a href="#" class="list-group-item active">Recherche par thème</a>
    		<?php
     
                    include_once('./connexion.php');
     
                    //Preparer la requete
                                            
                    $sql = 'SELECT themes,COUNT(*) AS comptage FROM liste_image GROUP BY themes';
                                            
                    $requete2 = $connexion_bdd ->prepare($sql);
                                            
                    //Compiler et executer la requete
                    $requete2->execute();
                    //Recuperer toutes les donnees retournees
                    foreach($requete2->fetchAll() as $donnee)
                    {
                            echo ('<a href="3_test.php" class="list-group-item clic_theme" data-theme="' . $donnee['themes'] . '">' . $donnee['themes'] . ' (' . $donnee['comptage'] . ' )</a>');
                    }
                    //Clore la requete preparee
                    $requete2 -> closeCursor();
                    $requete2 = NULL;
     
                    ?>
    	</div>
    </div>
     
    <script src="jquery.js"></script>
    <script>
    // Affichage des photos par theme
    jQuery(function($){
     
    	// on affecte au click des liens de classe "clic_theme" 
    	$('.clic_theme').on('click', function(){
     
    		// 1/ on récupère l'id_theme
    		var id_theme = $(this).attr('data-theme');
    		// -----------------
    		// 2/ appel au fichier de récupération de données
    		var texthtml 	= '';							
    		$.ajax({										
    		type:			'post',							
    		url:			'./3_test.php',	
    		data:			'themeId='+id_theme,			
    		dataType:		'html',							
    		success:		function( texthtml ){			
    			texthtml 	= jQuery.trim(texthtml);		
    			if( texthtml!='' ){						
    				// -----------------
    				// 3/ Je veux afficher dans la div d'id box_1 de la page "3_test.php" le code html
    				$('#box_1 de la page 3_test.php').html(texthtml);		
    				}
    			return false;
    		 }
    		});
    	});
    });
    </script>
     
    </body>                                         
     
    </html>
    2_test.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
    <?php // AJAX
    // -------------------------------------------------
    if( !empty($_POST['themeId']))		// si la variable est non vide, non nulle ou definie
    {
    	// -----------------
    	// connexion a la Bdd
    	include_once('./connexion.php');
    	// -----------------
    	$themeId = $_POST['themeId'];
    	// -----------------
    	// requete de recuperation des donnees, a partir de l id theme
     
    	//Preparer la requete
    	$photo_query 	= 'SELECT * FROM liste_image WHERE themes=? AND taille=? ';
    	$requete3 = $connexion_bdd ->prepare($photo_query);
    	//Associer des valeurs aux place holders
    	$requete3->bindValue(1, 'themeId', PDO::PARAM_STR);
    	$requete3->bindValue(2, 'petit', PDO::PARAM_STR);			
    	//Compiler et executer la requete
    	$requete3->execute();	
    	//Recuperer les donnees retournees
    	//Recuperer toutes les donnees retournees
    	foreach($requete2->fetchAll() as $donnee)
    		{
    		echo ('<img	src="' . $donnee['type'] . '' . $donnee['numero'] . 'petit.jpg" class="petit' . $donnee['format'] . ' ' . $donnee['type'] . '" data-identifiant="' . $donnee['id_photo'] . '" alt="' . $donnee['intitule'] . '" title="' . $donnee['intitule'] . '" />');
    		}
    	//Clore la requete preparee
    	$requete3 -> closeCursor();
    	$requete3 = NULL;
    ?>
    3_test.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html>
    <head>
    </head>
     
    <body>
     
    <div id="box_1"></div>
     
    </body>                                         
     
    </html>

  2. #2
    Membre habitué
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Points : 131
    Points
    131
    Par défaut
    Y pas moyen de faire un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('window.location.href="3_test.php":#box_1').html(texthtml);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('window.location.href="3_test.php"[#box_1]').html(texthtml);
    ???

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 089
    Points : 44 660
    Points
    44 660
    Par défaut
    Bonjour,
    regarde du coté de la méthode jQuery.load(), mais il te faudra rester sur la même page.

  4. #4
    Membre habitué
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Points : 131
    Points
    131
    Par défaut
    Merci pour ton aide ... j y suis presque!

    J'ai utilisé ta méthode mais il y a un truc qui cloche
    Je pense que le paramètre id_theme n'est pas envoyé à la page 2_test
    J'ai beaux relire le code ...
    Peux tu jeter un coup d’œil?

    Cordialement

    Résumé: 3 pages
    1_test.php: en cliquant sur un lien on récupère le paramètre du lien (data-theme) que l'on envoie avec une fonction ajax à 2_test.php
    2_test_php: on récupère ce paramètre et on exécute une requête pour afficher un certain nombre d'images dans une div d'id="contenu"
    3_test.php: .load() nous permet au chargement de la page d'affecter à la div(id="box_1") le contenu de la div(id="contenu") située dans la page 2_test.php


    1_test.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
    <!DOCTYPE html>
     
    <html lang="fr">
     
    <head>
     
    	<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
     
    </head>
     
    <body>
     
    <div class="col-lg-4">
    	<div class="list-group">
    		<a href="#" class="list-group-item active">Recherche par thème</a>
    		<?php
     
                    include_once('./connexion.php');
     
                    //Preparer la requete
     
                    $sql = 'SELECT themes,COUNT(*) AS comptage FROM liste_image GROUP BY themes';
     
                    $requete2 = $connexion_bdd ->prepare($sql);
     
                    //Compiler et executer la requete
                    $requete2->execute();
                    //Recuperer toutes les donnees retournees
                    foreach($requete2->fetchAll() as $donnee)
                    {
                            echo ('<a href="javascript:multiOpen()" class="list-group-item clic_theme" data-theme="' . $donnee['themes'] . '">' . $donnee['themes'] . ' (' . $donnee['comptage'] . ' )</a><br>');
                    }
                    //Clore la requete preparee
                    $requete2 -> closeCursor();
                    $requete2 = NULL;
     
                    ?>
    	</div>
    </div>
     
    <script src="jquery.js"></script>
    <script>
     
    // ouverture de plusieurs pages avec un lien
    function multiOpen(){
    	window.open("2_test.php");
    	window.open("3_test.php");
    }
     
    // Envoie de donnee: parametre "data-theme"
    jQuery(function($){
     	// on affecte au click des liens de classe "clic_theme" 
    	$('.clic_theme').on('click', function(){
     		// 1/ on récupère l'id_theme
    		var id_theme = $(this).attr('data-theme');
    		// -----------------
    		// 2/ Envoie de donnee
     
    		$.ajax({										
    		type:			'post',							
    		url:			'./2_test.php',	
    		data:			'themeId='+id_theme			
    		});
    	});
    });
    </script>
     
    </body>                                         
     
    </html>
    2_test_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
    <!DOCTYPE html>
    <html>
    <head>
    </head>
     
    <body>
     
    <div id="contenu">
     
    <?php // AJAX
    // -------------------------------------------------
    if( !empty($_POST['themeId']))		// si la variable est non vide, non nulle ou definie
    {
    	// -----------------
    	// connexion a la Bdd
    	include_once('./connexion.php');
    	// -----------------
    	$themeId = $_POST['themeId'];
    	// -----------------
    	// requete de recuperation des donnees, a partir de l id theme
     
    	//Preparer la requete
    	$photo_query 	= 'SELECT * FROM liste_image WHERE themes=? AND taille=? ';
    	$requete3 = $connexion_bdd ->prepare($photo_query);
    	//Associer des valeurs aux place holders
    	$requete3->bindValue(1, $themeId, PDO::PARAM_STR);
    	$requete3->bindValue(2, 'petit', PDO::PARAM_STR);			
    	//Compiler et executer la requete
    	$requete3->execute();	
    	//Recuperer les donnees retournees
    	//Recuperer toutes les donnees retournees
     
    	foreach($requete3->fetchAll() as $donnee)
    		{
    		echo ('<img	src="' . $donnee['type'] . '' . $donnee['numero'] . 'petit.jpg" class="petit' . $donnee['format'] . ' ' . $donnee['type'] . '" data-identifiant="' . $donnee['id_photo'] . '" alt="' . $donnee['intitule'] . '" title="' . $donnee['intitule'] . '" />');
    		}
     
    	//Clore la requete preparee
    	$requete3 -> closeCursor();
    	$requete3 = NULL;
    }
    ?>
     
    </div>
     
    </body>                                         
     
    </html>

    3_test.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
    <!DOCTYPE html>
    <html>
    <head>
    </head>
     
    <body>
     
    <div id="box_1"></div>
     
     
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
    // au chargement de ma page on affecte à la div(id: box_1) le contenu de la div(id: contenu) située dans la page 2_test.php
    $(document).ready(function(){
            $("#box_1").load("2_test.php #contenu");
    });
     
    </script>
    </body>                                         
     
    </html>

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 089
    Points : 44 660
    Points
    44 660
    Par défaut
    Prévenu qu'avec la techno Ajax
    (...) il te faudra rester sur la même page.
    Si non une façon simple de passer des paramètres d'une page à une autre est d'utiliser l'URL.

  6. #6
    Membre habitué
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Points : 131
    Points
    131
    Par défaut
    Merci No Smoking j'ai opté pour l’envoi du paramètre via URL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. charger une page à la place d'une autre page
    Par edzodzinam dans le forum Flash
    Réponses: 0
    Dernier message: 23/06/2008, 13h29
  2. Réponses: 7
    Dernier message: 26/03/2008, 17h20
  3. Chercher dans une table selon le résultat d'une autre
    Par AIexis dans le forum Requêtes
    Réponses: 6
    Dernier message: 24/03/2008, 23h09
  4. Appel à une fonction qui se trouve sur une autre page
    Par pierrot10 dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2007, 12h36
  5. Réponses: 5
    Dernier message: 28/04/2005, 10h38

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