Bonjour
J'essaie d'améliorer un système d'autocompletion (villes) trouvé ici, pour ça je modifie le fichier PHP appelé par JQuery et plus particulièrement la chaine de la requête SQL.
Mon problème est que rien ne marche, alors je me demande si c'est la bonne méthode...
Voici la portion initiale :
Voici mes tentatives sur la requête (je les mets toutes, bien que je les teste une par une) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $sql = "SELECT code_postal, nom_ville FROM villes WHERE code_postal LIKE :q1 OR nom_ville LIKE :q2"; $condition = array("q1" => $q.'%', "q2" => $q.'%'); $sth = $db->prepare($sql); $sth->execute($condition); //Réception des résultats while($data=$sth->fetch(PDO::FETCH_OBJ)) { //mise en forme du retour pour l'interprétation de JQUERY echo $data->code_postal.' '.utf8_encode($data->nom_ville)."|".$data->code_postal.':'.utf8_encode($data->nom_ville)."\n"; }
Et voici ce que je cherche à faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $sql = "SELECT code_postal, nom_ville FROM villes WHERE code_postal LIKE :q1 OR nom_ville LIKE :q2'%' OR nom_ville COLLATE Latin1_general_CI_AI LIKE :q2 COLLATE Latin1_general_CI_AI OR nom_ville LIKE REPLACE(:q2, 'st', 'saint') ORDER BY population";
- ligne3 : le but est que l'autocomplete ne sorte que les villes commençant par l'entrée (si j'entre par exemple 'saint' il renvoie 'Saâne Saint Just') > ça marche avec les 'saint' mais l'autocomplete ne renvoie plus aucune entrée à 1 mot
- ligne5 : rendre le SELECT insensible aux accents > l'autocomplete ne marche plus
- ligne7 : permettre l'entrée 'st' au lieu de 'saint' > idem
- ligne8 : dans la table j'ai une colonne 'population' et j'aimerais qu'elle serve à trier les résultat afin qu'il propose les plus grosses villes en tête de liste > marche pour certaines mais pas pour toutes (?)
Voilà, j'essaie de modifier la requête SQL mais je ne sais pas si j'ai un problème de syntaxe, ni même si c'est la bonne méthode ..
Merci pour votre aide
Partager