
Filtrar datos de una tabla MySQL
Publicado por Carlos (20 intervenciones) el 13/06/2014 01:57:30
Buenas, primero que nada disculpas por volver a crear el tema. Estuve probando e intentando hacer el sistema de filtrar pero no he podido lograr hacerlo.
Para los que no conocen el tema, paso a comentar mi problema:
Tengo una tabla en una base de datos la cual consta de 3 columnas y una de ellas es 'url'. Bueno, yo quiero hacer que en mi search engine antes de buscar, si el usuario selecciona Filtrar Busqueda, pueda elegir entre "youtube" y "taringa" (formulario comun y corriente). Si elije taringa, cuando le de al boton de buscar que se devuelvan solo los links que empiezen en la columna 'url' con "http://taringa.net" o con "https://taringa.net" y lo mismo para youtube.
El formulario es el siguiente:
Y las funciones (en mi archivo functions.php) son:
Yo se que esta mal, no se porque supongo que no tendría que hacer 2 funciones por separado, si no todo en la misma función (en la de getResults) pero no se como.
El formulario se envía a search.php, si. Pero search.php solo se encarga de mostrar los resultados que se obtienen de la función getResults. Por eso es que creo que debería hacer todo en la misma función.
Espero respuesta y realmente agradezco su ayuda, nuevamente disculpen que vuelva al tema pero no pude solucionarlo.
Si alguien quiere o necesita verlo en vivo para ayudarme, tengo un host. Lo puedo subir sin problema, muchas gracias.
Para los que no conocen el tema, paso a comentar mi problema:
Tengo una tabla en una base de datos la cual consta de 3 columnas y una de ellas es 'url'. Bueno, yo quiero hacer que en mi search engine antes de buscar, si el usuario selecciona Filtrar Busqueda, pueda elegir entre "youtube" y "taringa" (formulario comun y corriente). Si elije taringa, cuando le de al boton de buscar que se devuelvan solo los links que empiezen en la columna 'url' con "http://taringa.net" o con "https://taringa.net" y lo mismo para youtube.
El formulario es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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 las funciones (en mi archivo functions.php) son:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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(){
if(isset($_GET["filtroBusqueda"])){
$sql = "SELECT 'url' FROM search";
$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);
}
Yo se que esta mal, no se porque supongo que no tendría que hacer 2 funciones por separado, si no todo en la misma función (en la de getResults) pero no se como.
El formulario se envía a search.php, si. Pero search.php solo se encarga de mostrar los resultados que se obtienen de la función getResults. Por eso es que creo que debería hacer todo en la misma función.
Espero respuesta y realmente agradezco su ayuda, nuevamente disculpen que vuelva al tema pero no pude solucionarlo.
Si alguien quiere o necesita verlo en vivo para ayudarme, tengo un host. Lo puedo subir sin problema, muchas gracias.
Valora esta pregunta


0