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

AJAX Discussion :

[AJAX] Remplacer FORM par des liens AJAX


Sujet :

AJAX

  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut [AJAX] Remplacer FORM par des liens AJAX
    Bonjour.

    Le formulaire fonctionne et me donne le contenu de ma base de données
    en passant par AJAX. Mais je souhaite plus utiliser des liens en vu de faire
    un menu.

    Les liens ne fonctionnent pas et je crois que c'est du coté javascript mon
    problème.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <a href="" Onclick="JavaScript:users.ShowUser(this.url)" name="peinture">peinture</a>
    <a href="" Onclick="JavaScript:users.ShowUser(this.url)" name="dessin">dessin</a>
     
    <form action="" method="GET">
        <select name="users" onchange="showUser(this.value)">
            <option value="peinture">peinture</option>
            <option value="dessin">dessin</option>
        </select>
    </form>
     
    <div id="txtHint"></div>
    Mon AJAX incluant me formulaire et les liens:
    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
    <html>
    <head>
    <script>
            function showUser(str)
            {
            if (str=="")
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            { // code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","pratique4.php?catalog="+str,true);
            xmlhttp.send();
            }
    </script>
    </head>
    <body>
     
            <!-- ?php     // ne sert pas pour le moment:
                $dbh = new PDO("mysql:host=localhost;dbname=philgalerie", 'root', '');
                $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
                $formulaire = $dbh->query("SELECT categorie FROM categorie");
                $formresultat = $formulaire->fetchAll();
                foreach($formresultat as $rowform)
                {
                }
            ?-->
     
    <a href="" Onclick="JavaScript:users.ShowUser(this.url)" name="peinture">peinture</a>
    <a href="" Onclick="JavaScript:users.ShowUser(this.url)" name="dessin">dessin</a>
     
    <form action="" method="GET">
        <select name="users" onchange="showUser(this.value)">
            <option value="peinture">peinture</option>
            <option value="dessin">dessin</option>
        </select>
    </form>
     
    <div id="txtHint"></div>
     
    </body>
    </html>
    Je veux éliminer le formulaire.

    note: j'utilise code sans =html à cause d'un probleme d'affichage dans
    mon post.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="showUser(this.name)" name="peinture">

    A+.

  3. #3
    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
    Onclick="JavaScript:users.ShowUser(this.url)"
    Dis-moi, c'est un festival cette instruction !

    A quoi sert 'javascript:' dans une balise HTML ?
    A quoi correspond users ?
    A quoi correspond this.url ?
    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

  4. #4
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    La partie FORM est le code qui marche bien. La partie url (lien) est une tentative pour remplacer la partie FORM.

    Donc, ce sont des essaies que j'ai tenter.

    Usuer correspond à name="users" du select du formulaire et (this.url) le url c'est une tentative pour essayer. mais, c'est this.value qui est dans le formulaire.

    Je vais essayer ce que je viens de recevoir pour voir.

    Oui,oui, ça marche comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <a href="#" onclick="showUser(this.name)" name="peinture">peinture</a>
    <a href="#" onclick="showUser(this.name)" name="dessin">dessin</a>
    merci...

    Je dois juste que l'un d'eux soit affiché sans que clique dessus par défaut.

  5. #5
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Au final ce que cela me donne, c'est ceci :

    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
     
    <html>
    <head>
    <script>
            function showUser(str)
            {
            if (str=="")
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            { // code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","pratique4.php?catalog="+str,true);
            xmlhttp.send();
            }
    </script>
    </head>
    <body>
     
    <?php
        $dbh = new PDO("mysql:host=localhost;dbname=philgalerie", 'root', '');
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     
        $formulaire = $dbh->query("SELECT categorie FROM categorie");
        $formresultat = $formulaire->fetchAll();
     
      if (!$formulaire->rowCount() == 0)
      {
                echo '<ul>';
                foreach($formresultat as $rowform)
                {
                    echo '<li><a href="#" onclick="showUser(this.name)" name="'.$rowform['categorie'].'">'.ucfirst($rowform['categorie']).'</a></li>';
                }
                echo '</ul><br>';
      }
      else
      {
          echo 'Aucune catégorie trouvée.';
      }
     
    ?>
    <div id="txtHint"><b>Veuillez cliquer sur une catégorie</b></div>
     
    </body>
    </html>
    Il va me rester à mettre une catégorie par défaut ou bien mettre une catégorie aléatoire. Et ensuite placer une pagination. Je laisse ouvert
    le topic au cas où.

  6. #6
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Bonjour. J'ai réussi à inclure ma pagination mais je suis incapable
    de passer un deuxième paramètre dans le ajax, Sans AJAX, ça marche bien mais avec non.

    fichier principal contenant ce code:
    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 showUser(str,str2)
            {
            if (str=="")
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            { // code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","pratique_1.php?catalog="+str+"&page="+str2,true);
            xmlhttp.send();
            }
    le deuxième paramètre du fichier PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo " <a href=\"?page=$i\">$i</a> ";
    J'ai tenté quelque chose mais ça ne fonctionne pas.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     echo " <a href=\"?page=$i\">$i</a> ";
    Tu n'appelles même pas la fonction dans ton lien

  8. #8
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    OK, j'ai modifié le AJAX pour ceci :

    Voici ce qui se passe.

    Quand je clique sur les no de page, ça va bien changer la page
    mais je dois absolument cliquer à nouveau sur le menu de la page
    pour faire apparaitre la page.

    Si j'enleve à pratique_1.php ça
    va pas fonctionner. si je le laisse, ça va ajouter un paramètre
    dans le url du fichier ajax alors que c'est supposé ne rien avoir.

    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 showUser(str)
    {
            if (str=="")
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            { // code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","pratique_1.php?catalog="+str + "&page=" + <?php echo $_GET['page']; ?> ,true);
            xmlhttp.send(null);
    }
    et le fichier appelé par AJAX pratique_1.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo '<p>[ Page :';
    // Boucle sur les pages
    for ($i = 1 ; $i <= $nb_pages ; $i++) {
        if ($i == $page )
            echo " $i";
        else
            echo " <a href=\"?page=$i\">$i</a> ";
    }
    echo ' ]</p>';

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlhttp.open("GET","pratique_1.php?catalog="+str + "&page=" + <?php echo $_GET['page']; ?> ,true);
    Php s'exécute coté serveur et javascript coté client, donc à ne pas mélanger.
    2- Tu dois aussi tester dans le onreadystatechange si le status n'est pas à 200 ou 0, en cas d'erreur.

    3- Tu ne nous montre pas comment tu appelles la fonction (page html généré).

    A+.

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

Discussions similaires

  1. [RegEx] Remplacer URL par des liens sauf dans les balises
    Par raph37 dans le forum Langage
    Réponses: 7
    Dernier message: 19/10/2013, 19h31
  2. Remplacer des boutons par des liens cliquables
    Par voyageurdumonde dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/04/2011, 04h26
  3. [AJAX] Remplacer PseudoFrame par appel AJAX
    Par Invité dans le forum AJAX
    Réponses: 0
    Dernier message: 08/01/2011, 16h14
  4. [RegEx] Remplacements href par des liens différents
    Par thierry232323 dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2009, 08h38
  5. str_replace remplace les " par des '
    Par Dsphinx dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2006, 09h04

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