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 :

Contenu Ajax qui n'affiche rien au refresh de la page principale


Sujet :

AJAX

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Contenu Ajax qui n'affiche rien au refresh de la page principale
    Comment je peux faire en sorte que lorsque je rafraichi la page le titre du contenu puisque correspondre à la sélection du menu déroulant au moment que je rafraichi ma page avec le bouton du navigateur?

    Admettons que je sélection au menu déroulant JAVASCRIPT, mon fichier getuser va afficher les sujets concernant Javascript. Mais, si je rafraichi
    la page, Javascript au menu va resté mais le contenu Ajax va disparaitre puisque je n'aurai plus sélectionner le sujet au menu.

    Je pourrait mettre showUser(1) pour afficher par défaut le sujet 1 mais ce n'est pas ce que je veux. Je veux afficher le sujet qui corresponds au
    sujet choisi du menu. Je pensais placer en session dans showUser() mais ce que j'ai testé, ça ne fonctionne pas.

    Une idée?


    Fichier index.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
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Triage par catégories</title>
      <script src="http://code.jquery.com/jquery-2.1.1.js"></script>
     
        <style>
                table                          {border-collapse:collapse;width:50%}
                th                              {height:66px;background-color:darkblue;color:white;font-size:1.75em}
                td                           {width:50%;font-size:1.5em}
                tr:nth-of-type(odd) {background-color:#eee}
                form                       {width:50%;margin-left:auto;margin-right:auto}
                select,option           {width:25%}
        </style>
     
      <script>
                function showUser(str) {
                        if (str == "") {
                                document.getElementById("txtHint").innerHTML = "";
                                return;
                        } else {
                                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","getuser.php?q="+str,true);
                                xmlhttp.send();
                        }
                }
                showUser(1);
      </script>
     
    </head>
    <body>
     
    <?php
    $VALEUR_hote='localhost';
    $VALEUR_port='3306';
    $VALEUR_nom_bd='bdd';
    $VALEUR_user='root';
    $VALEUR_mot_de_passe='';
     
    $connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
     
    ?>
    <form method="post">
            <fieldset>
                    <legend>Les catégories</legend>
                                            <select name="categoryid" onchange="showUser(this.value)">
                                                                        <?php
                                                                        $ResultCategory = $connexion->query('SELECT * FROM    category');
                                                                        while (list($category_id, $category_name) = $ResultCategory->fetch(PDO::FETCH_NUM)) {
                                      ?>
                                      <option value="<?=$category_id?>"><?=$category_name?></option>
                                                                        <?php
                                                                        }
                                                                        ?>
                                            </select>
            </fieldset>
    </form>
     
    <div id="txtHint"></div>
     
    </body>
    </html>
    Le fichier de requête (getuser.php) :

    Code php : 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
    <?php
    $id = isset($_GET['q']) ? intval($_GET['q']) : '';
     
    $VALEUR_hote='localhost';
    $VALEUR_port='3306';
    $VALEUR_nom_bd='bdd';
    $VALEUR_user='root';
    $VALEUR_mot_de_passe='';
     
    $connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
     
    $ResultUsers = $connexion->prepare('
                SELECT *
                FROM    post AS p
                RIGHT JOIN category AS c ON p.category_id = c.category_id
                WHERE c.category_id = :category_id
    ');
     
    $ResultUsers->bindParam(':category_id', $id, PDO::PARAM_INT);
    $ResultUsers->execute();
     
    $category = '';
     
    echo '<table align="center">';
    while( $ResultUserWhile = $ResultUsers->fetch(PDO::FETCH_OBJ) ) {
     
            if ( $category != $ResultUserWhile->category_id ) {
                                echo '<tr><th align="center" colspan=2>' . $ResultUserWhile->category_name . '</td></tr>';
                                $category = $ResultUserWhile->category_id;
            }
                    echo '<tr><td><img src="image.jpeg" height="50" align="middle"> Titre: <strong>' . $ResultUserWhile->post_title . '</strong> par utilisateur ' . $ResultUserWhile->post_id . '</td></td></tr>';
    }
    echo '</table>';
     
    $ResultUsers->closeCursor();
    ?>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 531
    Points
    3 531
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je pense que ton approche avec la session est la bonne, fait un appel showUser() sans paramètre, dans ton code PHP, tu aura en session le dernier menu sélectionné, dans ta fonction showUser() si elle est appelée sans paramètre tu regarde si tu as quelque chose en session, si oui, tu ramène la page en question.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Merci Golgotha pour votre intervention, j'ai cependant tenté une petite expérience et ça marché. J'ai ajouté à la fin:

    Au code javascript dans l'index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function showUser(str).... 
     
    showUser(1);
    var q = (showUser(q)  == undefined ) ? showUser(1) : <?php echo $_SESSION["q"]; ?>;
    Dans le code getuser.php, j'ai mis ceci:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id = isset($_REQUEST['q']) ? intval($_REQUEST['q']) : 1;
    $_SESSION["q"] = $id;

    Ce que ça fait:

    Lors de la première visite, avant, j'avais l'item 1 au menu et rien dans le contenu. Maintenant, j'ai l'item 1 au menu et au contenu. Au refresh, ça retourne à 1 au menu et au contenu. C'est le mieux que j'ai été capable de faire. Au getuser.php,
    j'ai mis pour que ça retourne toujours au 1 si ce n'est pas défini au niveau PHP. Il fallait que en Javascript et en PHP que
    ça soit défini à un item en particulier et j'ai pensé à l'item 1 par défaut.

    Ça aurait pu être que lorsque je rafraichi la page, que ça conserve là où le menu en était ou le contenu mais ça ne me permettait pas d'entrer par défaut à 1 au deux places. Je vais tout de même essayer un autre cas de figure. Cependant, showUser() sans
    paramètre, ça n'a pas fonctionné (à moins que j'ai mal compris votre idée dans la réponse).

    Je mets résolu; cependant, je reste attentif si d'autres idées émergent dans ce topique, je demeure intéressé.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    mm, je n'ai pas résolu le problème. Je croyais l'avoir fait.

    ça me donne ceci dans la partie ajax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(size=1) 'q' => string 'undefined'(length=9)
    J'ai supprimé les sessions et les tests pour recommencer. Je n'ai pas d'idée, je cherche toujours dans la recherche..
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut c'est ok là
    Ça marche parfaitement avec cette solution afin que lorsqu'on rafraichi la page ou lorsqu'on entre, ça va afficher l'item 1 par défaut.
    Si on sélectionne l'item, ça va afficher ce que vous avez choisi. Alors, vous aurez un choix à l'entrée. Les autres commandes précédentes
    sont supprimées de ce que j'ai mis comme solutions précédentes. Ça peut aider quelqu'un.

    Tout dans index.php:

    -dans select du formulaire ajouter le nom du ID:
    -Pour sélectionner 1 par défaut dans Ajax :
    - Pour sélectionner 1 par défaut dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script>
        $(document).ready(function() {
                $('#q').val("1");
        });
    </script>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  6. #6
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 531
    Points
    3 531
    Billets dans le blog
    1
    Par défaut
    Normalement la solution que je t'ai proposé devrait marcher.

    Le première appel dans ta page, tu appel la fonction sans paramètre.
    en PHP :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($_REQUEST['q']))
      $id = intval($_REQUEST['q']);
    else
      $id = isset($_SESSION["q"]) ? intval($_SESSION["q"]) : 1;
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

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

Discussions similaires

  1. ImageList qui n'affiche rien
    Par blastou dans le forum C#
    Réponses: 5
    Dernier message: 28/08/2007, 18h16
  2. Créer un environnement qui n'affiche rien
    Par xiourf dans le forum Mise en forme
    Réponses: 5
    Dernier message: 27/05/2007, 17h59
  3. Programme qui n'affiche rien
    Par Premium dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/12/2006, 21h43
  4. SplashScreen qui n'affiche rien ?
    Par Baptiste Wicht dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 26/06/2006, 14h15
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

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