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] liste lié et affichage dynamique


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut [AJAX] liste lié et affichage dynamique
    bonjour a vous tous

    je ne sais pas trop si je post au bon endroit car je ne sais si mon soucis est ajax ou php

    cependant j ai essayer de crée une liste lier pour un catalogue de piece informatique avec l aide de mes cours car je debute

    j ai reussi a crée mon select1 qui affiche dynamique les resultat trouver en dessous et en meme temps met a jours mon select2 avec les marque associer

    un exemple http://www.sauvetage-informatique.eu/cat/bis/catiframe

    cependant je me retrouvre bloquer pour afficher le trie des marque par mon select2

    je sais pas si c est via mon ajax ou mon fichier php qu il manque quelque chose

    je vous met mon code ajax qui gere lie mes select
    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
     
    <script type="text/javascript">
     
     
       //FONCTION AJAX  
     
          function MAJ_marque(Nsouscategorie)
    {
        //declaration d'une variable
       var xmlhttp;
     
        //test si un code postale a été choisi
           if (Nsouscategorie.length==0)
        {
    		document.getElementById("liste_marques").innerHTML="";
    		return;
       }
       // test le type de navigateur pour créer l'objet adapté
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     
      // appel et exécution d'une fonction permettant la mise a jour dynamique
      xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
    		//remplisage de la zone dynamique marque avec les resultats trouvés en base de données
    		document.getElementById("liste_marques").innerHTML=xmlhttp.responseText;
        }
      }
     
     
      xmlhttp.open("GET","principal.php?num="+Nsouscategorie,true);
       xmlhttp.send();
     
     
      } 
     
     
     
      </script>
    ensuite mon code 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
     
     if(isset($_GET['num']))
     
           {
     
     
     
           // si on reçois un parametre num c'est que on veux mettre a jour la liste des marques
     
           //sélection des marques qui utilisent la categorie reçu en parametre num
     
              $requete = "SELECT DISTINCT Nmarque FROM Nproduct
                       WHERE 	Nsouscategorie ='".$_GET['num']."'" ;
     
     
     
             // execution de la requete et recuperation les resultats dans une variable
     
             $resultats = mysql_query($requete) ;
     
             //construire la chaine de marques a afficher
     
     
             //commencement de la liste déroulante des marques
     
            $res = "&nbsp;<select name=\"marque\" onchange=\"submit()\">";
     
            $res=$res."<option value=>choisissez une marque</option>";
     
             while($tempo = mysql_fetch_assoc($resultats) )
                  {
     
                    //répétition des marques trouvées
        			       $res = $res ."<option value=".$tempo['N_ID'].">".$tempo['Nmarque']."</option>";
     
                  }
     
             //fin de la liste déroulante
            $res = $res ."</select>";
     
     
    	     	echo $res;  
     
     
     
     
    	 }   
     
     
            	 if(isset($_POST['CATEGORIE']))
     
            	 {
     
     
                                        //création un nouvel objet tbs
                                        $tbs = new clsTinyButStrong;
     
                                        //modèle html dynamique à utiliser
                                        $tbs -> LoadTemplate("cat.html"); 
     
                                        //création de la requete
                                       $requete = "SELECT* ,round((Nnet_ttc * 1.396),2) as net FROM Nproduct
                                        where Nsouscategorie='".$_POST['CATEGORIE']."'";
     
                                 //execute la requete,recupere les resultats et fusionne avec le modele html
                                        $tbs -> MergeBlock('blk',$connexion,$requete);
     
                                        //affiche le fichier html
                                        $tbs -> Show(); 
     
                   }
     
              if(isset($_POST['marque']))
            	 {
     
     
                                        //création un nouvel objet tbs
                                        $tbs = new clsTinyButStrong;
     
                                        //modèle html dynamique à utiliser
                                        $tbs -> LoadTemplate("cat.html");
     
                                        $marque= $_POST['marque'];
     
                                        //création de la requete
                                        $requete = "SELECT* ,round((Nnet_ttc * 1.396),2) as net FROM Nproduct
                                        where Nmarque='".$_POST['marque']."'";
     
                                          echo ($marque);
     
     
                                 //execute la requete,recupere les resultats et fusionne avec le modele html
                                        $tbs -> MergeBlock('blk',$connexion,$requete);
     
                                        //affiche le fichier html
                                        $tbs -> Show();
     
     
              }
    je souhaiterai pouvoir trier par marque ce que j affiche au select1


    merci d avance a ceux qui pouront m aider

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    Bonjour,

    As-tu une erreur qui apparaît sur ta page ?

    Pour tester ton code PHP, accède directement à ta page principal.php?num=1 pour voir les erreurs.

    Pour tester le javascript, ajoute des alert() ou console.debug() à des lignes stratégiques de tes fonctions pour situer le problème.

    Quoiqu'il en soit, je peux déjà te conseiller de sécuriser ton appel SQL avec la fonction mysql_real_escape_string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "SELECT DISTINCT Nmarque FROM Nproduct
                       WHERE 	Nsouscategorie ='".mysql_real_escape_string($_GET['num'])."'" ;

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    bonsoir et merci de ta reponse

    alors j ai pas d erreur sur ma page

    j ai tester le principal.php?num=1

    ca m affiche mon 2 eme select et c est tout avec la seul option par defaut "choisissez votre marque

    j ai rajouté le mysql_real_escape_string mais avec ca j ai plus d affichage dynamique dans ma frame

    et pour java ben je sait pas trop ou mettre les alert

    cependant tout fonctionne actuellement sauf pour trie si tu as essayé mon lien tu a pu voir que mon deuxieme select affiche bien les marque associer a mon select1

    c est pour afficher lors de la selection par marque que je sais pas comment faire

    edit: cest pas 1 que je doit mettre
    j ai essayé ceci principal.php?num=Tapis souris

    et ca me retourne bien mes marques associer sans erreur

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    En fait, tu as besoin d'appeler la fonction lorsqu'on change la valeur de select1, c'est ça ?

    Si c'est le cas, faudra voir du coté de l'évènement onchange.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    dans mon ajax j ai qu une seule fonction qui sert a mettre a jour mon select2

    mais maintenant je sais pas comment faire pour afficher dynamiquement quand je clik sur une des marques dans mon select2

    il me manque quelque chose je pense peut etre une autre fonction lier a mon php

    mon premier select etant dans mon formulaire du fichier html mais mon 2 eme select lui est dans mon fichier php par un echo

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    Mon javascript (sans jquery) est un peu rouillé mais ça devrait donner :

    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
     
    <select id="souscategorie">
    ...
    </select>
    <script>
    document.getElementById("souscategorie").onchange = function()
    {
    var Nsouscategorie = document.getElementById("souscategorie").selectedValue;
    MAJ_marque(Nsouscategorie);
    };
    function MAJ_marque(Nsouscategorie)
    {
        //declaration d'une variable
       var xmlhttp;
     
        //test si un code postale a été choisi
           if (Nsouscategorie.length==0)
        {
    		document.getElementById("liste_marques").innerHTML="";
    		return;
       }
       // test le type de navigateur pour créer l'objet adapté
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     
      // appel et exécution d'une fonction permettant la mise a jour dynamique
      xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
    		//remplisage de la zone dynamique marque avec les resultats trouvés en base de données
    		document.getElementById("liste_marques").innerHTML=xmlhttp.responseText;
        }
      }
     
     
      xmlhttp.open("GET","principal.php?num="+Nsouscategorie,true);
       xmlhttp.send();
     
     
      }

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2010, 16h22
  2. [AJAX] Listes déroulantes et affichages.
    Par maximation dans le forum AJAX
    Réponses: 2
    Dernier message: 15/01/2010, 15h42
  3. [AJAX] Affichage dynamique en AJAX
    Par damdam94 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/12/2006, 19h24
  4. [AJAX] listes dynamiques liées a la premiere avec XMLhttpRequest
    Par metatron dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 09/10/2006, 09h30
  5. Problème d'affichage dynamique d'une liste
    Par bor1s dans le forum ASP
    Réponses: 2
    Dernier message: 18/11/2005, 16h18

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