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.


Mensajes - CarloSher

Páginas: [1]
1
el search.php lo único que hace es mostrar los resultados que se obtienen del functions.php específicamente de la función getResults. El problema debe basarse en estas funciones. Luego iré probando como me dijiste por partes y ver si me devuelve $link, entre todas las cosas

Pero entonces ya me saque la duda que el codeo de la función filtrarBusqueda lo hice bien  por más que por ahora no funcione.

Cuando haga las pruebas te comento como me fue, muchas gracias por la ayuda!

2
Luego hago esas comprobaciones, tenés razón. Me olvide de ir haciendolas

Pero entonces la función getResults no debería tener que afectar a la función filtrarBusqueda?

Muchas Gracias.


3
Los tengo en claro, ahí te dejo bien el esquema.

Localhost (base de datos)
|
|--> search (tabla)
       |
       |---> id (columna de search) // Tipo: int
       |---> title (columna de search) // Tipo: varchar
       |---> url (columna de search) // Tipo: text
       |---> descripcion (columna de search) // Tipo: varchar
       

4
Si sabía que tenía que aclararlo, y me confundí no es fila es columna, claro. Tengo una base de datos llamada "search" (estoy probando en localhost) en la cuál tengo 3 columnas, 'title' , 'url' , 'descripcion'. Las columnas title y descripción no vienen al tema ya que no importan para el filtro que quiero hacer.

Cuando digo "solo busque en mi base de datos las filas que empiezen con "http://youtube.com" " Si, me refiero a eso que pensaste.

Perdón por no expresarme del todo bien. Y no, no hice esas comprobaciones que dices que haga. Las haré pero.. ¿el código de la función filtrarBusqueda esta bien hecho de todas formas?

Muchas Gracias.

5
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".