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

PHP & Base de données Discussion :

Recherche en AJAX [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 24
    Par défaut Recherche en AJAX
    Bonjour à tous,

    J'ai un soucis lors de ma recherche en AJAX, elle fonctionne bien grâce à l'aide de "ma5t3r", encore merci à lui

    En fait, j'utilise plusieurs 'like' pour faire ma recherche, mais j'ai besoin de trouver tous les enregistrements en bdd qui seraient plus petits ou égal à la variable $km_max.

    J'ai vu que le like ne supportait pas les opérateurs, j'ai donc changé le like en where, mais je n'arrive pas à récupérer les cars qui ont moins de x km ou qui y sont égaux.

    Est-ce que quelqu'un aurait une idée? Je vous remercie d'avance pour l'aide apportée

    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
    <?php
    class Ajaxsearch_model extends CI_Model
    {
     function fetch_data($km_max, $type, $carburant, $color, $mark)
     {
     
     
      $this->db->select("*");
      $this->db->from("cars");
     
      $this->db->like('visible', 1);
     
      echo $carburant;
      echo $color;
      echo $mark;
      echo $km_max;
      echo $type;
     
      if(($carburant != '') or ($type != '') or ($color != '') or ($mark != '') or ($km_max != ''))
      {
          echo "rechercheOK";
    //      echo "Testtesttest";
    //      echo $color;
    //      echo $mark;
    //      echo $carburant;
    //      $type = "hybride";
          echo $type;
          echo $mark;
       $this->db->group_start();
       $this->db->where('km >=', 14);
       $this->db->like('type', $type);
       $this->db->like('carburant', $carburant);
       $this->db->like('mark', $mark);
    //   $this->db->like('price', $query);
       $this->db->like('color', $color);
    //   $this->db->like('constructionMonth', $query);
    //   $this->db->like('constructionYear', $query);
    //   $this->db->like('cylindree', $query);
    //   $this->db->like('remark', $query);
    //   $this->db->like('photo', $query);
    //   $this->db->like('visible', $query);
       $this->db->group_end();   
     
      }
      return $this->db->get();
     }
    }
    Edit: J'ai également un soucis avec 2 autres variables qui ne me renvoient rien à savoir "carburant" et "type". Ce qui est bizarre, c'est qu'on dirait que les 2 variables se "vident" avant de faire la recherche, mais je ne vois pas où elles pourraient faire ça, car mes echo me montrent bien la valeur de la variable avant de rentrer dans le IF

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Par défaut
    Je suis loin d’être un expert en PHP mais je vais faire de mon mieux pour te filer un coup de main.

    J'aimerais bien t'aider mais il y a des éléments de ton code que je ne comprends pas.

    Tout d'abord que fait cette méthode : $this->db->group_start() ?

    Ensuite question bête mais as tu essayé d'afficher ta requete SQL brute pour voir si la syntaxe est bonne ?

    Autre chose que je ne comprends pas sur cette ligne : $this->db->like('visible', 1);
    Pourquoi ne pas faire un WHERE au lieu du LIKE si tu souhaites connaitre toutes les "cars" visibles ?

    Tu dis que certaines variables sont vides mais que renvoient tous tes différentes instruction ECHO ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 24
    Par défaut
    Bonjour,

    En fait certains de mes echos me montrent bien les variables (color et mark), et les recherches pour ces 2 là fonctionnent sans soucis, par contre pour type et carburant, les echos hors du IF me montrent bien les valeurs, mais dès qu'ils passent dans le IF, il ne m'affiche plus rien.

    Et si je ne passe que type ou carburant, il ne passe même pas dans le IF, alors qu'il m'affiche bien le echo.

    Concernant le like pour le visible à 1, cela fonctionne également avec un where (et également avec le like), je viens de tester à l'instant.

    En ce qui concerne le group_start, voici sa définition par codeigniter
    Starts a group expression, using ANDs for the conditions inside it.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 24
    Par défaut
    Bonjour à tous,

    Je me permets de me répondre à moi-même, on ne sait jamais que quelqu'un se retrouve dans la même situation un jour.

    J'ai fini par trouver avec l'aide d'une autre personne mon erreur.

    Le problème des variables qui n'étaient pas trouvées venait du fait que lorsque j'ai passé mes variables dans le fetch_data(), je n'étais pas très bien réveillé, car je les avais mises dans le désordre, donc je me retrouvais avec le type qui arrivait dans la variable des km par exemple (j'aurai dû faire du copier coller, ça m'apprendra pour la prochaine fois)

    Concernant la recherche du <= (plus grand ou égal), je m'étais déjà trompé de signe, car j'avais mis un >= (j'arrive jamais à m'en rappeler ), et ensuite, j'avais un autre soucis qui était que lorsque je ne remplissais pas ma variable, il cherchait dans la table un champ vide, ce qui a été réglé en rajoutant un IF pour chaque envoi à la table, ce qui évite s'il n'est pas rempli de l'appeler.

    Voici le code fonctionnel au cas où
    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
    <?php
    class Ajaxsearch_model extends CI_Model
    {
     function fetch_data($carburant, $km_max, $type, $color, $mark, $annee_max, $price)
     {
      $this->db->select("*");
      $this->db->from("cars");
     
      $this->db->where('visible', 1);
     
      if(($carburant != '') or ($type != '') or ($color != '') or ($mark != '') or ($km_max != '') or ($annee_max != '') or ($price != ''))
      {
       $this->db->group_start();
       if($km_max != ''){
            $this->db->where('km <=', $km_max);
       }
       if($price != ''){
            $this->db->where('price <=', $price);
       }
       if($annee_max != ''){
            $this->db->where('constructionYear', $annee_max);
       }   
       $this->db->like('type', $type);
       $this->db->like('carburant', $carburant);
       $this->db->like('mark', $mark);
       $this->db->like('color', $color);
       $this->db->group_end();   
      }
      return $this->db->get();
     }
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Par défaut
    Simple suggestion : as tu essayé d'affecter une valeur a ton $carburant en dehors et voir si tu retrouves bien la bonne valeur dans ton bloc IF ?

    Sinon je dis peut être une connerie mais dans la mesure ou tu as besoin de tout tes paramètres pour faire ta requête, il ne serait pas mieux d'ajouter les propriétés attendues directement dans ta classe Ajaxsearch_model ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 24
    Par défaut
    Bonjour double-m,

    Je te remercie pour ta réponse, j'ai réussi à le faire fonctionner entre-temps avec l'aide d'une connaissance (voir mon message précédent)

    Bonne journée à toi

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Par défaut
    Content de voir que tu as pu trouvé ou étaient tes erreurs.

    Tu as fait un bon vieux code 40.
    Définition du code 40 : cela signifie que l'erreur se situe à 40 cms de l'écran

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

Discussions similaires

  1. [1.x] module de recherche avec ajax
    Par undercrash dans le forum Symfony
    Réponses: 1
    Dernier message: 22/02/2010, 10h01
  2. Moteur de recherche PHP - Ajax - Jquery - SQL
    Par visual3d dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/05/2009, 15h45
  3. [AJAX] Recherche tutoriels AJAX / PHP
    Par pierre24 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 07/04/2008, 09h47
  4. [AJAX] recherche ouvrage ajax ?
    Par skwunky dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2007, 19h08
  5. [AJAX] recherche source ajax
    Par ebadmail dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/12/2006, 17h08

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