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 :

Requête Ajax avec conditions multiples


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2018
    Messages : 25
    Par défaut Requête Ajax avec conditions multiples
    Bonjour ,

    Je me permets de poster car j'ai une question par rapport à Ajax .
    Voici une partie du code et les explications :

    La partie jQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     $('#section').change(function(){  
               var section = $(this).val();
               $('#cours').show();
               $.ajax({  
                    url:"load_ajax.php",
                    dataType: "html",
                    method:"GET",  
                    data:{section:section},  
                    success:function(data){  
                         $('#cours').html(data);
                    }  
               });  
          });
    La partie 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
    <?php
    include 'bsd.php';
    if (isset($_GET['section']))
    {
        $sql = 'SELECT DISTINCT Cours FROM attentes_fondamentales WHERE Section = ?';
        $req = $bdd->prepare($sql);
        $req->execute(array($_GET['section']));
     
        $options='';
        while($donnees = $req->fetch())
        {
            $options .='<option value="'.htmlspecialchars($donnees["Cours"]).'">'.htmlspecialchars($donnees["Cours"]).'</option>';
        }
    $req->closeCursor();
    echo $options;
    }
     
    ?>

    Il s'agit d'un formulaire avec une sélection type Région -> Département -> Ville -> Rue -> Numéro .
    Mon programme est sur 6 niveaux d'arborescence et voici ma question :

    Je cherche à mettre une condition suivante ( en reprenant l'exemple au dessus ) :
    Si je choisis ma région mais qu'il n'y a pas de département défini , cela ouvre directement le sélecteur Ville ou Rue .

    Est ce que je dois modifier le php avec une vérification de variable si NULL -> envoi d'une autre requete SQL ( Dans la base de données , il n'y a rien de défini ) ?
    Ou dois-je modifier le retour Ajax avec la fonction error ?

    Je demande pas de code tout fait , juste que l'on m'oriente sur le meilleur choix

    Merci d'avance !

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    a mon avis, le traitement doit être fait en php, et le fichier php doit retourner du json et pas du html.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    Si je choisis ma région mais qu'il n'y a pas de département défini , cela ouvre directement le sélecteur Ville ou Rue .
    je ne comprend pas l’absence de département pour une ville.

    Si tu veux chainer directement tu peux le faire au niveau de ta réception, si un seul retour, donc pas de choix possible, alors tu relances ta requête.

    Tu peux même aller jusqu'à te passer d'Ajax, Créer des listes déroulantes liées entre elles sans utiliser Ajax.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2018
    Messages : 25
    Par défaut
    En fait j'ai 6 niveaux de choix , pour faire plus simple niveau 1 , 2 ... jusqu'a 6 , je voudrais mettre une condition à partir du moment ou aucune données n'est rempli à un niveau :
    Exemple : 1 - 2 - 3 - 4 - 5 - 6 c'est le cheminement normal en sachant que le choix 6 est celui qui tout le temps remplit .
    Exemple2 : 1 - 2 - 3 - 6 , il n'y a pas de données dans le 4 et dans le 5 donc on passe directement en 6 .
    Exemple 3 : 1 - 2 - 6 ( même principe qu'au dessus en sachant que j’interagis avec une base de données et pas avec un tableau )

    J'ai regarder vite fait ton lien mais il est plus optimisé pour de petites selections , dans mon cas j'ai "750 choix numéro 6 possibles" d’où l'arborescence que je dois effectuer .

    Dans mon cas , j'envois ma requete Ajax et je l'a traite en PHP , dans la requete préparée PHP j'interoge ma BDD en lui demandant de me selectionner les éléments qui correspondent et de me les retourner dans un nouveau menu de choix . Je dois à ce niveau là , faire un if else ?
    Mais du coup comment le mettre en oeuvre avec l'Ajax ?

    C'est cela ma question en espérant que j'ai été plus clair que mon premier post

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Pour moi quoiqu'il arrive tu devrais avoir une liaison
     1 -> 2 -> 3 -> 4 -> 5 -> 6
    sinon comment veux tu faire la liaison entre 1 et 6 si il y a des « trous » ?

    Lorsque tu reçois un « trou » comment fais tu pour relancer une recherche et sur base de quoi ?

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2018
    Messages : 25
    Par défaut
    Justement c'est le but de la question initiale , en sachant que dès qu'il y a un "trou" , il n'y a que le champ numéro 6 qui a une valeur .
    Est ce que en Ajax dans le retour on a une partie sucess mais aussi error , est ce que je peux relancer un autre appel Ajax à partir de là ?

    En sachant que si je recherche les parties numéro 6 à partir du numéro 2 ca me retourne quoi qu'il arrive une valeur ( je sais pas si je suis très clair )

    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
    <?php
    include 'bsd.php';
    if (isset($_GET['section']))
    {
        $sql = 'SELECT DISTINCT Cours FROM attentes_fondamentales WHERE Section = ?';
        $req = $bdd->prepare($sql);
        $req->execute(array($_GET['section']));
     
        $options='';
        while($donnees = $req->fetch())
        {
            $options .='<option value="'.htmlspecialchars($donnees["Cours"]).'">'.htmlspecialchars($donnees["Cours"]).'</option>';
        }
    $req->closeCursor();
    echo $options;
    // Est ce que faire un else à ce niveau là est judicieux ?
    }
     
    ?>

    Ou alors :

    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
    $('#section').change(function(){  
               var section = $(this).val();
               $('#cours').show();
               $.ajax({  
                    url:"load_ajax.php",
                    dataType: "html",
                    method:"GET",  
                    data:{section:section},  
                    success:function(data){  
                         $('#cours').html(data);
                    }
                    error:function(){
    /* Un autre appel pour la catégorie 6 ?? */
     
               });  
          });

Discussions similaires

  1. Requête avec conditions multiples (OR/AND) sur le même champ
    Par GueloSuperStar dans le forum Langage SQL
    Réponses: 31
    Dernier message: 05/03/2013, 10h42
  2. Requête avec conditions multiples sur le même champ
    Par skerdreux dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/06/2008, 19h15
  3. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45
  4. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18
  5. [SQL] Requête complexe avec appel multiple à la même table
    Par Julien Dufour dans le forum Langage SQL
    Réponses: 9
    Dernier message: 14/04/2005, 14h12

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