Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/12/2011, 08:06
Avatar de charlyalegret
charlyalegret
 
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: buscador nosensitivo a tildes y demás

Bueno, finalmente he hecho los siguiente.
Creo que es un poco burrada pero lo posteo por si le puede servir a alguien y sobretodo, por si alguien me pude comentar alternativas más limpias

Código PHP:
Ver original
  1. // $itmf es una condicion extra que depende del formulario de búsqueda
  2. // $ordf depende también del formulario de búsqueda
  3. // $tipf es AND o OR dependiendo de si se selecciona búsqueda que contengan todas las palabras o no
  4. // para más de 5 palabras, la idea era enviar a la ... pero al final, he decidido que no...
  5. $paraules = explode(" ", $frase);
  6.                 if (count($paraules) == 1){
  7.                     $sqlBuscar = mysql_query("SELECT * FROM items
  8.                                 WHERE $alt LIKE '%$paraules[0]%'
  9.                                  AND sec1+0 > 0
  10.                                  $itmf
  11.                                  OR $texto LIKE '%$paraules[0]%'
  12.                                  AND sec1+0 > 0
  13.                                  $itmf
  14.                                  ORDER BY $ordf")
  15.                                  or die(mysql_error());                              
  16.                     $totalRows = mysql_num_rows($sqlBuscar);
  17.                     }
  18.                 elseif (count($paraules) == 2){
  19.                     $sqlBuscar = mysql_query("SELECT * FROM items
  20.                                 WHERE $alt LIKE '%$paraules[0]%'
  21.                                  AND sec1+0 > 0
  22.                                  $itmf
  23.                                  $tipf $alt LIKE '%$paraules[1]%'
  24.                                  AND sec1+0 > 0
  25.                                  $itmf
  26.                                  OR $texto LIKE '%$paraules[0]%'
  27.                                  AND sec1+0 > 0
  28.                                  $itmf
  29.                                  $tipf $texto LIKE '%$paraules[1]%'
  30.                                  AND sec1+0 > 0
  31.                                  $itmf
  32.                                  ORDER BY $ordf")
  33.                                  or die(mysql_error());                              
  34.                     $totalRows = mysql_num_rows($sqlBuscar);
  35.                     }
  36.                 elseif (count($paraules) == 3){
  37.                     $sqlBuscar = mysql_query("SELECT * FROM items
  38.                                 WHERE $alt LIKE '%$paraules[0]%'
  39.                                  AND sec1+0 > 0
  40.                                  $itmf
  41.                                  $tipf $alt LIKE '%$paraules[1]%'
  42.                                  AND sec1+0 > 0
  43.                                  $itmf
  44.                                  $tipf $alt LIKE '%$paraules[2]%'
  45.                                  AND sec1+0 > 0
  46.                                  $itmf
  47.                                  OR $texto LIKE '%$paraules[0]%'
  48.                                  AND sec1+0 > 0
  49.                                  $itmf
  50.                                  $tipf $texto LIKE '%$paraules[1]%'
  51.                                  AND sec1+0 > 0
  52.                                  $itmf
  53.                                  $tipf $texto LIKE '%$paraules[2]%'
  54.                                  AND sec1+0 > 0
  55.                                  $itmf
  56.                                  ORDER BY $ordf")
  57.                                  or die(mysql_error());                              
  58.                     $totalRows = mysql_num_rows($sqlBuscar);
  59.                     }
  60.                 elseif (count($paraules) == 4){
  61.                     $sqlBuscar = mysql_query("SELECT * FROM items
  62.                                 WHERE $alt LIKE '%$paraules[0]%'
  63.                                  AND sec1+0 > 0
  64.                                  $itmf
  65.                                  $tipf $alt LIKE '%$paraules[1]%'
  66.                                  AND sec1+0 > 0
  67.                                  $itmf
  68.                                  $tipf $alt LIKE '%$paraules[2]%'
  69.                                                                  AND sec1+0 > 0
  70.                                  $itmf
  71.                                  $tipf $alt LIKE '%$paraules[3]%'
  72.                                  AND sec1+0 > 0
  73.                                  $itmf
  74.                                  OR $texto LIKE '%$paraules[0]%'
  75.                                  AND sec1+0 > 0
  76.                                  $itmf
  77.                                  $tipf $texto LIKE '%$paraules[1]%'
  78.                                  AND sec1+0 > 0
  79.                                  $itmf
  80.                                  $tipf $texto LIKE '%$paraules[2]%'
  81.                                  AND sec1+0 > 0
  82.                                  $itmf
  83.                                  $tipf $texto LIKE '%$paraules[3]%'
  84.                                  AND sec1+0 > 0
  85.                                  $itmf
  86.                                  ORDER BY $ordf")
  87.                                  or die(mysql_error());                              
  88.                     $totalRows = mysql_num_rows($sqlBuscar);
  89.                     }
  90.                 elseif (count($paraules) == 5){
  91.                     $sqlBuscar = mysql_query("SELECT * FROM items
  92.                                 WHERE $alt LIKE '%$paraules[0]%'
  93.                                  AND sec1+0 > 0
  94.                                  $itmf
  95.                                  $tipf $alt LIKE '%$paraules[1]%'
  96.                                  AND sec1+0 > 0
  97.                                  $itmf
  98.                                  $tipf $alt LIKE '%$paraules[2]%'
  99.                                  AND sec1+0 > 0
  100.                                  $itmf
  101.                                  $tipf $alt LIKE '%$paraules[3]%'
  102.                                  AND sec1+0 > 0
  103.                                  $itmf
  104.                                  $tipf $alt LIKE '%$paraules[4]%'
  105.                                  AND sec1+0 > 0
  106.                                  $itmf
  107.                                  OR $texto LIKE '%$paraules[0]%'
  108.                                  AND sec1+0 > 0
  109.                                  $itmf
  110.                                  $tipf $texto LIKE '%$paraules[1]%'
  111.                                  AND sec1+0 > 0
  112.                                  $itmf
  113.                                  $tipf $texto LIKE '%$paraules[2]%'
  114.                                  AND sec1+0 > 0
  115.                                  $itmf
  116.                                  $tipf $texto LIKE '%$paraules[3]%'
  117.                                  AND sec1+0 > 0
  118.                                  $itmf
  119.                                  $tipf $texto LIKE '%$paraules[4]%'
  120.                                  AND sec1+0 > 0
  121.                                  $itmf
  122.                                  ORDER BY $ordf")
  123.                                  or die(mysql_error());                              
  124.                     $totalRows = mysql_num_rows($sqlBuscar);
  125.                     }
  126.                 else {
  127.                     $sqlBuscar = mysql_query("SELECT * FROM items
  128.                                 WHERE $alt LIKE '%$frase%'
  129.                                  AND sec1+0 > 0
  130.                                  $itmf
  131.                                  OR $texto LIKE '%$frase%'
  132.                                  AND sec1+0 > 0
  133.                                  $itmf
  134.                                  ORDER BY $ordf")
  135.                                  or die("Error, pruebe más tarde");                            
  136.                     $totalRows = mysql_num_rows($sqlBuscar);
  137.                     }
  138.                    
  139.                 }