Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - CarloSher

Páginas: [1]
1
Buenas a todos, como dice el asunto, estoy teniendo problemas al intentar filtrar valores de mi database. Me baje un search engine (motor de búsqueda) y estoy intentando agregarle modificaciones pero me cuesta horrores. Paso a comentar, lo que quiero hacer yo es que antes de realizar una búsqueda los usuarios puedan filtrar que buscar. Por ejemplo, si solo quieren buscar videos,  cuando se seleccione la opción del formulario de "vídeos" al darle click al buscar solo busque en mi base de datos las filas de mi columna 'url' que empiezen con "http://youtube.com".

Paso a dejar mi código a ver si alguien me puede ayudar.

Este es el formulario:

Código: [Seleccionar]
    <form class="searchForm" action="search.php" method="GET">
     <input type="text" autocomplete="off" name="q" id="query"/>
     <div>
      <button>
       <svg class='shape-search' viewBox="0 0 100 100" class='shape-search'><use xlink:href='#shape-search'></use></svg>
      </button>
     </div>
<input type="checkbox" name="filtroBusqueda" />
<label for="filtro">Filtrar Busqueda</label><br/>
<label for="youtube">youtube</label>
<input type="radio" name="link" value="youtube"/><br/>
<label for="taringa">taringa</label>
<input type="radio" name="link" value="taringa"/>
</form>

Y así tengo las funciones:

Código: [Seleccionar]
function getResults(){
 $q=$GLOBALS['q'];
 $p=$GLOBALS['p'];
 $start=($p-1)*10;
 if($q!=null){
  $starttime = microtime(true);
  $sql=$GLOBALS['dbh']->prepare("SELECT `title`, `url`, `description` FROM search WHERE `title` LIKE :q OR `url` LIKE :q OR `description` LIKE :q ORDER By id");
  $sql->bindValue(":q", "%$q%");;
  $sql->execute();
  $endtime = microtime(true);
  if($sql->rowCount()==0 || $start>$sql->rowCount()){
   return 0;
  }else{
   $duration = $endtime - $starttime;
   $res=array();
   $res['count']=$sql->rowCount();
   $res['time']=round($duration, 4);
   $limitedResults=$GLOBALS['dbh']->prepare("SELECT `title`, `url`, `description` FROM search WHERE `title` LIKE :q OR `url` LIKE :q OR `description` LIKE :q ORDER BY id LIMIT :start,:limit");
   $limitedResults->bindValue(":q", "%$q%");
   $limitedResults->bindValue(":start", $start, PDO::PARAM_INT);
   $limitedResults->bindValue(":limit", 10, PDO::PARAM_INT);
   $limitedResults->execute();
   while($r=$limitedResults->fetch()){
    $res["results"][]=array($r['title'], $r['url'], $r['description']);
   }
   return $res;
  }
 }
}

function filtrarBusqueda(){

$sql = "SELECT 'url' FROM search";

if(isset($_GET["filtroBusqueda"])){

$link = $_GET["link"];

switch($link){

case "youtube": $sql = $sql."WHERE 'url' LIKE 'https://youtube.com%' or 'url' LIKE 'http://youtube.com%'"; break;
case "taringa": $sql = $sql."WHERE 'url' LIKE 'https://taringa.net%' or 'url' LIKE 'http://taringa.net%'"; break;
}
}
else
{
$sql = "SELECT 'url' FROM search";
}
$resultado = $mysqli->query($sql);
}


Espero que alguien me pueda ayudar. Lo que estoy pensando es que tendría que hacer lo que hago en la función filtrarBusqueda dentro de la función getResults, pero no se.

Aclaración: Lo que estoy intentando agregar yo al search engine que me baje es la función filtrarBusqueda. La función getResults ya venía y funciona bien. Y el problema que tengo únicamente es que no me devuelve los resultados filtrados, pero si me devuelve todos los resultados que yo busque normal.

Muchas Gracias!

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".