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

JavaScript Discussion :

[AJAX] Changer critere de recherche d'une requete


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut [AJAX] Changer critere de recherche d'une requete
    Bonjour à tous,

    Je vous explique mon problème :

    Actuellement j'ai un tableau qui me compte les commandes pour l'année 2008.
    Avec des flèches sous forme d'image, j'ai fait un lien sur la même page.
    Par la méthode GET j'ajoute à l'année plus ou moins 1.
    Cela me permet de naviguer entre les années sans passer par un formulaire.

    Le problème c'est que ma page se recharge à chaque fois.

    Est il possible de passer par de l'Ajax pour solutionner ce problème, c'est à dire changer mon critère de recherche de ma requête (c'est à dire la variable année) en cliquant sur la flèche sans recharger ma page ?


    Merci d'avance de votre aide !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Normalement oui, les paramètres que tu envoies lors d'une requête sont créés au moment de l'envoi...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Merci,

    Alors j'ai commencé mais bon je suis un peu bloqué...

    Sur ma page PHP j'ai mis un lien de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="vente.php?vente=y" onclick="go2()">test</a>
    Avec mon code ajax dans le haut :

    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
    function getXhr(){
            var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
    	 xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
     
     
    			function go2(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('sous_famille').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("GET","ajax_famille.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				sel = document.getElementById('vente');
    				vente = sel.options[sel.selectedIndex].value;
    				xhr.send("vente="+vente);
    			}

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Oups le message est parti trop vite...

    Je disais donc que j'essay d'adapter ce code mais dans mon code ajax je ne vois pas comment m'y prendre avec ma fonction go2()

    Si quelqu'un à un début de solution ?

    Merci d'avance !

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="vente.php?vente=y" onclick="go2();return false">test</a>
    Pour inhiber l'action du href.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ok, je vais essayer merci de ton aide.

    En revanche ma fonction go2() te semble t'elle correcte car je ne comprend pas certaine ligne :

    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
     
    function go2(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
    leselect = xhr.responseText;
     
    // A partir de la je pense qu'il faut changer des choses mais je ne vois pas quoi ?
    // En effet c'est le script d'une liste liée en menu deroulant
     
    document.getElementById('sous_famille').innerHTML = leselect;
    					}
    				}
     
    // Ici on va voir comment faire du post
    xhr.open("GET","ajax_famille.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    sel = document.getElementById('vente');
    vente = sel.options[sel.selectedIndex].value;
    xhr.send("vente="+vente);
    }
    Merci d'avance de ton aide.

  7. #7
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Dans ta fonction go2, tu utilises les méthodes de traitement qui correspondent à une requete en POST (le header "application/x-www-form-urlencoded", le xhr.send) mais pourtant dans ton open tu déclares ta requete en GET.

    Essaie de la passer en POST et dis nous ce que ca donne, le code me semblant correct à part ca.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ben en fait ça ne donne rien...
    Quand je clique sur mon lien je souhaiterais faire apparaitre un texte (dans un premier temps ensuite je ferai ma requête) et il n'apparaît pas.

    Voilà ce que j'ai mis dans la page ajax_famille.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_POST["vente"]))
    { echo 'test'; }
    Et ma fonction Go2() :

    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
    function go2(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
    leselect = xhr.responseText;
     
    // A partir de la je pense qu'il faut changer des choses mais je ne vois pas quoi ?
    // En effet c'est le script d'une liste liée en menu deroulant
     
    document.getElementById('sous_famille').innerHTML = leselect;
    					}
    				}
     
    // Ici on va voir comment faire du post
    xhr.open("POST","ajax_famille.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    sel = document.getElementById('vente');
    vente = sel.options[sel.selectedIndex].value;
    xhr.send("vente="+vente);
    }
    Mais je pense qu'elle est beaucoup trop longue pour simplement faire ce que je veux non ?

    Merci de votre aide !

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu as pensé à faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="vente.php?vente=y" onclick="go2();return false">test</a>
    ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Oui monsieur.

    Mais rien n'y fait.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    // A partir de la je pense qu'il faut changer des choses mais je ne vois pas quoi ?
    // En effet c'est le script d'une liste liée en menu deroulant
    Ah... j'avais pas lu les commentaires... Tu n'as pas de select ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Exact !

    En fait j'ai juste un lien a href.
    Dès que je clique sur ce lien, je souhaite sans recharger ma page, faire appel à ma page ajax_famille en lui disant d'afficher test.

    Après dans un second temps j'aurai deux lien qui me permettront de jongler entre les années et donc de modifier l'année dans ma page ajax_famille qui changera le résultat de ma requête.

    Actuellement je le fait par un GET cela fonctionne mais bon je pense que cela serait mieux avec un petit script ajax, mais comme je suis pas bien doué...

    Merci d'avance de ton aide.

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vente = new Date();
    xhr.send("vente="+vente);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Oki oki,

    Alors je viens de tester et au niveau de mon code ça donne :

    Page PHP :
    Fonction Ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function go2()
    {
    vente = new Date();
    xhr.send("vente="+vente);
    }
    Code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="vente.php?vente=y" onclick="go2();return false">Quand je clique Hi ! dois apparaître</a>

    Et ensuite dans ma page Ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(isset($_POST["vente"]))
    {
    echo 'Hi !';
    }
    Bon autant dire que quand je clique rien ne se passe...
    Je ne suis pas obligé de mettre le ?vente=y dans mon lien ?
    Vu que quand je clique il doit faire appel à la fonction go2() ?
    C'est sur cette dernière que je patoge...

    Merci de ton aide.

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si, il vaut mieux, cela peut servir d'alternative si JavaScript (et donc Ajax) est désactivé !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function go2()
    {
    vente = new Date();
    xhr.send("vente="+vente);
    }
    Non, le morceau de code que je t'ai donné, c'est juste pour remplacer les dernières lignes de ta fonction, pas toute la fonction !
    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
    function go2(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
    leselect = xhr.responseText;
     
    // A partir de la je pense qu'il faut changer des choses mais je ne vois pas quoi ?
    // En effet c'est le script d'une liste liée en menu deroulant
     
    document.getElementById('sous_famille').innerHTML = leselect;
    					}
    				}
     
    // Ici on va voir comment faire du post
    xhr.open("POST","ajax_famille.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    vente = new Date();
    xhr.send("vente="+vente);
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  17. #17
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ok bon ben je vais regarder ce qui ne va pas dans ma fonction go2().

    Si entre temps quelqu'un à une idée ?

    Merci d'avance !

Discussions similaires

  1. [AC-2003] Criteres sur Calcul dans une requete
    Par beamer dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/07/2009, 13h24
  2. limiter la recherche dans une requete
    Par adiltyane dans le forum SQL
    Réponses: 2
    Dernier message: 25/12/2007, 16h41
  3. recherche dans une requete
    Par Willygramme dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/08/2007, 14h28
  4. à la recherche d'une requete sql
    Par medmen dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2006, 14h18
  5. Réponses: 9
    Dernier message: 25/01/2006, 14h29

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