[Devel] r424 - trunk

svn at agendadulibre.org svn at agendadulibre.org
Lun 23 Fév 22:27:42 CET 2009


Author: thomas
Date: Mon Feb 23 22:27:41 2009
New Revision: 424

Log:
Correction de la recherche par tag dans la base de données. Jusqu'à
maintenant, on utilisait un simple :

	where tags like '%VALEURDUTAG%'

pour faire une recherche. Ce qui veut dire qu'en spécifiquant le tag
"plug", on se retrouvait avec tous les évènements dont la liste des
tags contenait "plug", comme par exemple les évènements taggés
"epplug". Ce commit modifie ces requêtes pour utiliser :

	where concat(' ', tags, ' ') like '% VALEURDUTAG %'

qui fait a priori correctement le travail.

Merci à Gregory Colpart <reg at evolix.fr> d'avoir reporté l'anomalie.

Modified:
   trunk/ical.php
   trunk/listevents.php
   trunk/rss.php
   trunk/textlist.php
   trunk/xmllistevents.php

Modified: trunk/ical.php
==============================================================================
--- trunk/ical.php	Mon Feb 23 22:25:21 2009	(r423)
+++ trunk/ical.php	Mon Feb 23 22:27:41 2009	(r424)
@@ -41,7 +41,7 @@
     $sql .= " AND ((region=" . $region . ") OR (locality=1))";
 
   if ($tag != "")
-    $sql .= " AND (tags like '%" . $tag . "%')";
+    $sql .= " AND (concat(' ', tags, ' ') like '% " . $tag . " %')";
 
   return $db->query ($sql);
 }

Modified: trunk/listevents.php
==============================================================================
--- trunk/listevents.php	Mon Feb 23 22:25:21 2009	(r423)
+++ trunk/listevents.php	Mon Feb 23 22:27:41 2009	(r424)
@@ -60,7 +60,7 @@
 $hasevent = FALSE;
 
 $sql = "select id, title, city, start_time, end_time from events " .
-       "where (tags like '%" . $_GET['tag'] . "%') and (start_time > NOW()) and (moderated=1) order by start_time ";
+       "where (concat(' ', tags, ' ') like '% " . $_GET['tag'] . " %') and (start_time > NOW()) and (moderated=1) order by start_time ";
 $events = $db->query($sql);
 if (! $events)
 {
@@ -83,7 +83,7 @@
 }
 
 $sql = "select id, title, city, start_time, end_time from events ".
-       "where (tags like '%" . $_GET['tag'] . "%') and (start_time < NOW()) and (moderated=1) order by start_time desc";
+       "where (concat(' ', tags, ' ') like '% " . $_GET['tag'] . " %') and (start_time < NOW()) and (moderated=1) order by start_time desc";
 $events = $db->query($sql);
 if (! $events)
 {

Modified: trunk/rss.php
==============================================================================
--- trunk/rss.php	Mon Feb 23 22:25:21 2009	(r423)
+++ trunk/rss.php	Mon Feb 23 22:27:41 2009	(r424)
@@ -55,7 +55,7 @@
     $sql .= " AND ((region=" . $region . ") OR (locality=1))";
 
   if ($tag != "")
-    $sql .= " AND (tags like '%" . $tag . "%')";
+    $sql .= " AND (concat(' ', tags, ' ') like '% " . $tag . " %')";
 
   $sql .= " ORDER BY start_time ASC";
 

Modified: trunk/textlist.php
==============================================================================
--- trunk/textlist.php	Mon Feb 23 22:25:21 2009	(r423)
+++ trunk/textlist.php	Mon Feb 23 22:27:41 2009	(r424)
@@ -14,7 +14,7 @@
 }
 
 echo "===============================================================\n";
-$events = $db->query ("select * from events where tags like '%" . $_GET['tag'] . "%' order by start_time");
+$events = $db->query ("select * from events where concat(' ', tags, ' ') like '% " . $_GET['tag'] . " %' order by start_time");
 while ($event = mysql_fetch_object($events))
 {
   echo $event->city  . "\n";

Modified: trunk/xmllistevents.php
==============================================================================
--- trunk/xmllistevents.php	Mon Feb 23 22:25:21 2009	(r423)
+++ trunk/xmllistevents.php	Mon Feb 23 22:27:41 2009	(r424)
@@ -24,18 +24,18 @@
 
 if (! $_GET['tag'] || !ereg("^[a-z0-9\-]*$", $_GET['tag']))
 {
-  echo "Aucun tag sélectionné, ou tag invalide.";
+  echo "Aucun tag sélectionné, ou tag invalide.";
   exit;
 }
 
 $db = new db();
 
-$sql = "select * from events where (tags like '%" . $_GET['tag'] . "%') " .
+$sql = "select * from events where (concat(' ', tags, ' ') like '% " . $_GET['tag'] . " %') " .
        "and (moderated=1) order by start_time";
 $events = $db->query($sql);
 if (! $events)
 {
-  echo "Erreur lors de la requête SQL.";
+  echo "Erreur lors de la requête SQL.";
   exit;
 }
 


Plus d'informations sur la liste de diffusion Devel