Sistema de busqueda!!! no me da!!!!! (Cerrado)

Iniciado por Zeroql, 27 Junio 2011, 22:09 PM

0 Miembros y 1 Visitante están viendo este tema.

Zeroql

Buenas
bueno estoy ahora haciendo un sistema de busqueda para la pagina web, con un sistema de multipaginas para mostrar solo 10 resultados por pagina, bueno eso es lo que esta en la configuracion de la base de datos. (el valor se puede cambiar)

pero no me muestra los resultados. aqui dejo el code que estoy haciendo para ver k problema es el k tengo....


Código (php) [Seleccionar]

<?
//if (!isset($_POST['s'])) { $msg="error no se ha encontrado el meotod get"; exit(); }

include ('adm/conexion.php');
include ('adm/rconfig.php');

$itemv=readconfig('search'); //saber cuantos resultados se van a ver.

//TODO ESTA ZONA ES PARA SABER CUANTOS RESULTADOS SE VAN A MOSTRAR
$page=0; $N=0; $numrows=0; $msg="ninguno";$cont=0;
if (isset($_GET['p'])) { $page=trim($_GET['p']); }
else { $page=1; }

//Mostrar desde que resultados dependiendo del numero de pagina en la que se encuentre
switch ($page) {
case 1: $N=1; break;
case 2: $N=11; break;
case 3: $N=21; break;
case 4: $N=31; break;
case 5: $N=41; break;
case 6: $N=51; break;
case 7: $N=61; break;
case 8: $N=71; break;
case 9: $N=81; break;
case 10: $N=91; break;
}

//Un sistema para el contador de los numeros mostrados
//*************************************************************************
$resultN=($N-1)+$itemv;
trim($_GET['s']);
if ($_GET['s']!=NULL) {
$link=conectarse();
mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
$result=mysql_query("SELECT * FROM items WHERE search LIKE '%" .$_GET['s']. "%'");
if (mysql_fetch_array($result)){
$numrows=mysql_num_rows($result);
$idx=0;
$codigo=array(); $txtsearch=array();
while ($row=mysql_fetch_assoc($result)){
echo $row['codigo']; echo $row['search'];
$codigo[$idx]=$row['codigo'];
$txtserach[$idx]=$row['search'];
$cont=$idx+1;
$idx++;
}
} else {
$msg="No hay coincidencias en la palabra buscada.";
}
}
?>

<h2>Resultados de la busqueda</h2>
     <?
  if ($msg!="") {
$final=($cont % $resultN);
for($idx=0;$idx<$final;$idx++) {
    echo "<div class='marker'><div class='wrapper'>";
        echo "<p class='pad_bot2'><a href='showitem.php?cod=".$codigo[$idx]."'>".$txtsearch[$idx]."</a></p>";
                echo "</div></div>";
}
echo "<p class='pad_bot2'>";
if ($page>1) { echo "Anterior "; }
$numpages=($numrows % $itemv);
for ($idx=1;$idx<=$numpages;$idx++) {
echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'> <strong>".$idx."</strong> </a>";
}
if ($page<$numpages) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page+1)."'>Siguiente</a>"; }
echo "</p>";
} else { echo "<p class='pad_bot2'>".$msg."</p>"; }
 ?>



no he podido saber cual es el problema pero no me imprime $msg, asi que pienso que si hace la consulta y trae resultados.

alguien le ve el problema???

les agradezco la ayuda
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


Nakp

jeje que desmadre xD no seria mas sencillo usar una consulta con limit y offset? y el offset seria el numero de pagina*limit :)
Ojo por ojo, y el mundo acabará ciego.

Zeroql

Nakp estuve investigando el limit y el offset y solo encuentro errores ocasionados, no veo ni informacion en php.net
me podrias dar n ejemplo pequeño o un lugar donde encuentre info???

te lo agradezco
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


EFEX

Se usa de la siguiente forma en una consulta:

CitarSELECT * FROM `user` WHERE 1=1 LIMIT 0,10

Donde LIMIT 0(Offset),10(Limite), cuando pensas en paginaciòn esta es la consulta que tenes que utilizar.
Prueba haciendo consultas desde phpmyadmin, para entenderlo mejor  :)
GITHUB 

Zeroql

Bueno ya implemente el code que uds me dieron por cierto muchas gracias por el limit, no lo conocia en SQL.
el problema es que ahora no me muestra ningun resultado de la busqueda

bueno dejo el code completo de la pagina y me digan que tengo mal.

Código (php) [Seleccionar]

<?

$msg=NULL; $page=0; $rowtot=NULL;$total=0;

if (!isset($_GET['s'])) { $msg="Error no se ha encontrado el metodo get"; exit(); }

include ('adm/conexion.php');
include ('adm/rconfig.php');

$limit=(int)readconfig('search'); //saber cuantos resultados se van a ver.

if (isset($_GET['p'])) {
$page=(int)trim($_GET['p']);
}
else {
$page=1;
}
$offset = ($page-1) * $limit;
//La consulta SQL y paginacion
//*************************************************************************
trim($_GET['s']);
if ($_GET['s']!=NULL) {
$link=conectarse();
mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
$rs = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM items WHERE search LIKE '%".$_GET['s']."%' LIMIT ".$offset.",".$limit);
$sqlrt=mysql_query("SELECT FOUND_ROWS() as total");
if ($rs){
$rowtot = mysql_fetch_assoc($sqlrt);
$total = $rowtot["total"];
} else { $msg="No hay coincidencias para la palabra buscada."; }
} else {
$msg="No se ha definido un texto para buscar.";
}
?>

<h2>Resultados de la busqueda</h2>
      <?
  if ($msg!="") {
while ($row=mysql_fetch_assoc($rs))
          {
      echo "<div class='marker'><div class='wrapper'>";
          echo "<p class='pad_bot2'><a href='showitem.php?cod=".$row['codigo']."'>".$row['search']."</a></p>";
                 echo "</div></div>";
}
echo "<p class='pad_bot2'>";
if ($page>1) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page-1)."'>Anterior</a>"; }
$npages=ceil($total/$limit);
for ($idx=1;$idx<=$npages;$idx++) {
if ($page==$idx) {
echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'><strong><font color='#0033FF'> ".$idx."</font></strong> </a>";
}else {
echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'> <strong>".$idx."</strong> </a>";
}
}
if ($page<$npages) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page+1)."'>Siguiente</a>"; }
echo "</p>";
} else { echo "<p class='pad_bot2'>".$msg."</p>"; }
  ?>


ejecute la consulta en mysql bajo phpmyadmin y me da perfectamente...
el problema es que tampoco me imprime lo de la numeracion de las paginas...

que tengo mal ahora????
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


Zeroql

ok ya corregi el error.
radicaba cuando se comprobaba la variable $msg

Código (php) [Seleccionar]

if ($msg!="")


resulta que la varible no se estaba tomando en cuenta, asi que la saque aparte e hice esto:

Código (php) [Seleccionar]
if ($msg!="" or $msg!=NULL){ echo "<p class='pad_bot2'>".$msg."</p>"; exit(); }

algo mas que tenia malo era el paso de la variable p
lo hacia con una coma cuando al pasar variables con GET se dede separar con &

Código (php) [Seleccionar]

echo "&laquo;<a href='search.php?s=".$_GET['s']."&amp;p=".($page-1)."'>Anterior</a> ";

GRACIAS A TODOS POR SU COLABORACION.

:xD  :D
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


Nakp

es mas efectivo comprobar la variable con la funcion empty? Si es un array vacio, false, null, 0, '' devolvera true
Ojo por ojo, y el mundo acabará ciego.