Vous n'êtes pas identifié(e).
Pages : 1
Bonjour tout le monde. Je suis entrain de développer une barre de recherche qui est ""autocomplete". Pour se faire, je récupère les données de la liste des suggestions à partir de ma base de données Postgresql. Le problème que j'ai rencontré c'est que j'ai fait l'union de mes quatre tables et j'intègre une variable php dans la requête. Cette variable dont je stocke le mot entré par l'utilisateur. Donc après que j'ai fait ça, j'ai remarqué que la syntaxe de la requête est bizar. Je sais pas comment je dois intégrer cette variable pour chaque "select". Pour être plus clair, voilà une portion de ma requête:
$query='SELECT
initcap(coalesce(name,\' \') || \' \' ||coalesce(highway,\' \') || \' \' ||
coalesce(amenity,\' \') || \' \' || coalesce(construction,\' \') || \' \' ||
coalesce(leisure,\' \') || \' \' || coalesce("natural",\' \') || \' \' ||
coalesce(operator,\' \') || \' \' || coalesce(place,\' \')) AS address,
a.gid AS gid,
a.way AS geom,
ts_rank_cd(a.ts_road, query) AS rank
FROM planet_osm_roads AS a,
to_tsquery_partial(\' ' . $userSerach . '\') AS query
WHERE ts_road @@ query
--ORDER BY rank DESC
UNION
SELECT
initcap(coalesce(name,\' \') || \' \' || coalesce(amenity,\' \') || \' \' ||
coalesce(aerialway,\' \') || \' \' || coalesce(barrier,\' \') || \' \' ||
coalesce(building,\' \') || \' \' || coalesce(construction,\' \') || \' \' ||
coalesce(highway,\' \') || \' \' || coalesce(leisure,\' \') || \' \' ||
coalesce(man_made,\' \') || \' \' || coalesce("natural",\' \') || \' \' ||
coalesce(operator,\' \') || \' \' || coalesce(place,\' \') || \' \' ||
coalesce(service,\' \') || \' \' || coalesce(sport,\' \')) AS address,
a.gid AS gid,
a.way AS geom,
ts_rank_cd(a.ts_line, query) AS rank
FROM planet_osm_line AS a,
to_tsquery_partial(\' ' . $userSerach . '\') AS query
WHERE ts_line @@ query
--ORDER BY rank DESC
LIMIT 5
';
Merci d'avance. Toute aide est apprécie
Dernière modification par Jessika555 (03/05/2016 11:59:00)
Hors ligne
Bonjour,
Quelle est votre question exactement ?
Quelques remarques :
dans la première partie il semble que vous oubliez de rouvrir votre chaîne
vous devriez utiliser des requêtes préparées. Cela permettra aussi d'éviter les injections SQL. Voir http://php.net/manual/en/function.pg-prepare.php
Julien.
https://rjuju.github.io/
Hors ligne
D'abord, merci pour votre réponse. Comme j'ai dit le problème c'est avec la syntaxe de la requête lorsque j'ai intégré la variable php "$userserach". La deuxième partie après l'expression "Union" change sa syntaxe, c'est-à-dire que j'ai pas bien intégré la variable. J'espère que vous avez bien compris.
Hors ligne
Pas du tout.
Je ne vois pas de différence entre
to_tsquery_partial(\' ' . $userSerach . '\') AS query
et
to_tsquery_partial(\' ' . $userSerach . '\') AS query
Ou vous parlez d'autre chose ?
Julien.
https://rjuju.github.io/
Hors ligne
Vous m'avez pas bien compris, le problème c'est que lorsque j'intègre cette variable, la syntaxe de la requête se change, j'aimerai vous montrer une capture d'écran mais je peux pas l'intégrer dans le post, si vous voulez bien sûr de me donner votre adresse email pour que je puise vous envoyer la capture. Merci
Hors ligne
Il suffit de copier l'erreur que vous obtenez.
Julien.
https://rjuju.github.io/
Hors ligne
Non y a pas d'erreur, juste les résultats que j'ai obtenu sont bizarres, c'est pour ça je vous dit je dois vous montrer le code php qui contient la requête
Hors ligne
Pages : 1