| Por: Miguel Anguita | | 21/5/2004
|
Sería muy útil que se ampliara el artículo con la explicación de cómo hacer una búsqueda avanzada. El usuario escribe diversas palabras en varios campos y el programa busca en la BD los registros aque cumplen las condiciones, se podría usar AND, OR y > o bien < para los campos numéricos. Gracias.
Este scrip esta excelente !!! No solo funciona perfectamente sino que es sencillo y además tiene un buscador muy bueno...
si ta bueno el articulo ,, pero deberian corregir la parte del sql ...
donde co_id no debe ser de campo (varchar) si no de campo " int "(entero)
bueno.,porque tuve problemas al subir...menos mal me di cuenta :D jejje...saludos (y)
Funciona Por: Manuel | | 13/6/2009
|
Funciona perfectamente; me ha venido genial. Gracias.
juan_ju... | no funciona
| 30/10/2009 |
a mi no me funciona para nada
edith_v... | Excelente artículo
| 22/11/2009 |
¡Muy buen artículo! Gracias!
innovar... | cogido
| 27/12/2009 |
debes corregir esta linea
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
sine | separar el formulario de los resultados
| 10/2/2010 |
Me gustaría que los resultados no se muestren hasta que el usuario introduzca el "criterio" de búsqueda (tal como está configurado ahora, se muestran todos los registros de la tabla y se indica el total de registros sin haber buscado nada) ¿Alguien puede ayudarme en esto?
Excelente!!! justo lo que buscaba Por: MABM | | 18/2/2010
|
Amigo buen dia, realmente me sirvio este articulo, solo que se deben realizar unos cambios en el para que cuando ejecutemos el archivo busqueda.php no se generen errores al inicio.
1.- Antes que nada debemos colocar bien el codigo de apertura de php, en el archivo aparece como: <? solamente, lo que debemos hacer es colocarlo asi <?php y listo.
2.- Undefined index: criterio in http://localhost/busqueda.php on line 104 o en la 62 cuando quitan los comentarios. Este error se presenta al cargar busqueda.php, esto se produce porque estamos capturando el valor de la variable criterio ($_GET["criterio"]) y esta variable lleva valor una vez que damos clic en el boton buscar. Entonces que hacer? cuando llamen al archivo busqueda.php agreguen ?criterio, quedando asi: http://localhost/busqueda.php?criterio y listo eliminamos ese error.
3.- Con el problema que no nos funciona la paginacion, es decir si damos clic en la pag. 2 el resultado es el mismo de la pagina en que nos encontramos, entonces debemos cambiar el codigo que se encuentra en la linea 130 y 136 que dice:
//pagina actual si no esta definida y limites
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
este codigo lo debemos cambiar por:
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
else
{
$pagina = $_GET["pagina"];
}
4.- Por ultimo, debemos eliminar las siguientes lineas:
<?
mysql_close();
?>
Estas cierran la conexion a la base de datos y son las ultimas 3 lineas del codigo, las quitamos y ya no deberian de presentarnos problemas.
Les agradezco que compartieran este codigo con nosotros, por lo mismo me vi obligado a realizar mis comentarios.
Saludos, desde Honduras.
No funciona el tutorial....lo probe copiandolo y descargandolo.....cueck!!!
| payuda con la paginacion
| 09/3/2010 |
para aquellos q le funciono correctamente me podrian pasar el codigo, todavia no la tengo tan clara con el php ,, pero lo probre le modifique el Get y funciona la primera paginacion pero cuando utilizo el buscador no pasa de la primera pagina aparecen las siguiente paginas pero cuando quiero ir a ellas directamente no pasa nada ,por favor a aquellos webmaster URGENTE AYUDA les paso el codigo ta basado en el ejemplo adaptado a mi tabla, me pueden corregir el error no lo encuentro y no se como hacerlo.
<?php
mysql_connect("localhost","root","");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Consultas Sobre Productos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
<!--
a.p:link {
color: #0066FF;
text-decoration: none;
}
a.p:visited {
color: #0066FF;
text-decoration: none;
}
a.p:active {
color: #0066FF;
text-decoration: none;
}
a.p:hover {
color: #0066FF;
text-decoration: underline;
}
a.ord:link {
color: #000000;
text-decoration: none;
}
a.ord:visited {
color: #000000;
text-decoration: none;
}
a.ord:active {
color: #000000;
text-decoration: none;
}
a.ord:hover {
color: #000000;
text-decoration: underline;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
function muestra(queCosa)
{
alert(queCosa);
}
</script>
<div align="center" class=
"Estilo4">
<strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br>
</font></strong><font color="#000000">
<p><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.insitegroup.com.ar">www.insitegroup.com.ar</a></font></strong></p>
</font> </div>
<hr noshade style="color:6699ff;height:1px">
<br>
<?
//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
$txt_criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where co_id like '%" . $txt_criterio . "%' or co_nombre like '%" . $txt_criterio . "%' or co_descrip like '%" . $txt_criterio . "%'";
}
$sql="SELECT * FROM tpv.comercios ".$criterio;
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
if($numeroRegistros<=0)
{
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
echo "</div>";
}else{
//////////elementos para el orden
if(!isset($orden))
{
$orden="co_nombre";
}
//////////fin elementos de orden
//////////calculo de elementos necesarios para paginacion
//tamaño de la pagina
$tamPag=10;
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}
if ($final>$numPags){
$final=$numPags;
}
}
//////////fin de dicho calculo
//////////creacion de la consulta con limites
$sql="SELECT * FROM tpv.comercios ".$criterio." ORDER BY ".$orden.",co_nombre ASC LIMIT ".$limitInf.",".$tamPag;
$res=mysql_query($sql);
//////////fin consulta con limites
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
echo "ordenados por <b>".$orden."</b>";
if(isset($txt_criterio)){
echo "<br>Valor filtro: <b>".$txt_criterio."</b>";
}
echo "</font></div>";
echo "<table align='center' width='100%' border='0' cellspacing='1' cellpadding='0'>";
echo "<tr><td colspan='3'><hr noshade></td></tr>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_id&criterio=".$txt_criterio."'>Código</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_nombre&criterio=".$txt_criterio."'>Producto</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_descript&criterio=".$txt_criterio."'>Descripcion</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_precios=".$txt_criterio."'>Precio</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=Imagen&criterio=".$txt_criterio."'>Imagen</a></th>";
while($registro=mysql_fetch_array($res))
{
?>
<!-- tabla de resultados -->
<tr bgcolor="#6699ff" onMouseOver="this.style.backgroundColor='#33CC33';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#6666ff'"o"];" onClick="javascript:muestra('<? echo "[".$registro["co_id"]."] ".$registro["co_nombre"]." - ".$registro["co_descrip"]; ?>');">
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_id"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_nombre"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_descrip"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_precios"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["Imagen"]; ?></b></font></td>
</tr>
<!-- fin tabla resultados -->
<?
}//fin while
echo "</table>";
}//fin if
//////////a partir de aqui viene la paginacion
?>
<br>
<table border="0" cellspacing="1" cellpadding="0" align="center">
<tr><td align="center" valign="top" bgcolor="#FFFFFF">
<?
$pagina = $_GET["pagina"];
if($pagina>1)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>anterior</font>";
echo "</a> ";
}
for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='verdana' size='-2'><b>".$i."</b> </font>";
}else{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>".$i."</font></a> ";
}
}
if($pagina<$numPags)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>siguiente</font></a>";
}
//////////fin de la paginacion
?>
</td>
</tr>
</table>
<hr noshade style="color:#6699ff;height:1px">
<div align="center"><font face="verdana" size="-2"><a class="p" href="index.php">::Inicio::</a></font></div>
<form action="busqueda.php" method="get">
Criterio de búsqueda:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
</body>
</html>
paginador Por: ose Miguel | | 06/4/2010
|
Nesesito ayuda nesesito un paginador para esta base de datos:
/*
MySQL Data Transfer
Source Host: localhost
Source Database: web
Target Host: localhost
Target Database: web
Date: 06/04/2010 11:29:19 a.m.
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for maguicta
-- ----------------------------
CREATE TABLE `maguicta` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(40) collate latin1_general_ci default NULL,
`mail` varchar(50) collate latin1_general_ci default NULL,
`filen` varchar(20) collate latin1_general_ci default NULL,
`vercion` varchar(20) collate latin1_general_ci default NULL,
`Seanson` varchar(15) collate latin1_general_ci default NULL,
`tipofile` varchar(15) collate latin1_general_ci default NULL,
`lick` text collate latin1_general_ci NOT NULL,
`server` varchar(25) collate latin1_general_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- ----------------------------
-- Records
-- ----------------------------
y me gustaria mostrar los datos en un paginador si me pueden ayudar se los agradeceria mucho....
de antemano gracias...
abccorp | Muy Bueno
| 06/5/2010 |
Esta exelente tu script gracias....y con modificaciones es mucho mas potente
de lujo Por: mjesore | | 27/7/2010
|
gracias por este script me funciono muy bien
sujerencia Por: alvaro | | 30/7/2010
|
me parece excelente labor mostrar el codigo pero sabes q se podria hacer
comentar por modulos para q un aprendiz lo entienda mucho mejor aunque es muy claro solo era eso cuitae cualquier cosita me escriben al correo q les dejo
enrique... | correccion
| 08/9/2010 |
el script es EXCELENTE! un buen ejemplo para comenzar! Pero el error de la paginacion q no slata es que deben inicializar la variable pagina en valor no en 1, ya q al empezar con valor 1 menos 1 (o sea cero) y multiplicar por tampag, siempre su valor sera CERO y no avanzara, por q liminf es CERO, lo estoy probando.... pero en principio asi lo solucioné, Gracias a su Autor y estamso en contacto....
ASI es como me funciona
//pagina actual si no esta definida y limites
if(!isset($_POST["pagina"]))
{
===========================
en esta linea el error (el original dice que el valor es 1)
$pagina=2;
===========================
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_POST["pagina"];
}
enrique... | disculpas
| 09/9/2010 |
no hagan caso a mi correccion anterior, la solucion fue puntillosamente tomar el fuente y anduvo ok. Seguira evolucionandolo y si lo mejoro lo subo. Muchas Gracias y te felicito!!! Saludos
giancar... | falta seleccionar la base de datos
| 14/9/2010 |
en este codigo aun falta chekar que base de datos se conecta por lo visto solo dice la tabla comercios y en el buscador es imprescindible colocar la base de datos a que se desea buscar
JoDiego | GRACIASS!!!
| 15/2/2011 |
Excelente articulo, muchas gracias.....funciona a la perfeccion.....hora de adaptarlo
bryan_c... | No Me funciona del todo
| 05/3/2011 |
Por mas que qlo e intentado no me funciana correctamente este es el erroe que meda
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xampphtdocsBitacoraBDSusBCS.php on line 69
Y la verdad nose que hacer si alguie m epuede ayudar llevo dias trabajando y solo ocupo el buscador gracias
fersuas | paginacion
| 13/4/2011 |
Sres. he implementado este codigo de paginacion en mi tienda virtual, y cierto que me pagina todos los articulos, pero me esta volviendo loco el hecho que cuando esta tienda virtual no esta paginada, en cada articulo yo puedo ir a la eleccion de cantidad, y sobre todo caracteristicas, asi como stock etc., pero al paginarlo, no puedo redirigir el articulo, en su lugar me sale la ventanita windows con las caracteristicas que hay en el onclick, como hago para que me redireccione cada articulo a su imagen y diferentes caracteristicas particulares de cada articulo.
Gracias
| paginación y soluciones simples
| 17/5/2011 |
Leer otras referencias sobre paginación, también publicadas en desarrolloweb, para cubrir la mayoría de las necesidades sin esfuerzo, por medio de scripts ya realizados.
Por ejemplo tienes el paginator ese y otra serie de scripts potentes que ya hacen la paginación por ti.
Saludos!
| error comun por no haber hecho bien el recorsert
| 17/5/2011 |
Hola pogesma,
Está claro, por el error que te sale, que no tienes un recordset en la variable $res.
Tu consulta debe dar algún error.
Bergman... | Muy bueno
| 17/5/2011 |
Excelente
Krimen | problema
| 24/5/2011 |
hola bueno mi problema es ya cree la base de datos con su respectiva tabla "comercios" ya cree los insert como dice la tarea.
ahora donde encuentro este paso??? 1:Copiar el fichero busqueda.php en cualquier directorio del servidor web.
no aparece el link de descarga
muchas gracias
| Elementos para el orden
| 19/6/2011 |
//->Bueno excelente ejemplo de paginacion, muy bueno.
//->solo quiero complementar en la LINEAS 118 HASTA LAS 128, CAMBIEN POR ESTO :
//////////elementos para el orden
if(!isset($_GET["orden"]))
{
$orden='cod_personal';//'cod_personal' lo pueden cambiar por el q deseen.
}
else {
$orden=$_GET["orden"];
}
//////////fin elementos de orden
//->y tambien tienen q cambiar en LA LINEA: 174 Y DEJARLO ASI:
$sql="SELECT * FROM hospital.personal ".$criterio." ORDER BY ".$orden. " ASC LIMIT ".$limitInf.",".$tamPag;
gabriel... | NO FUNCIONA PAGINACION
| 15/7/2011 |
Hola, la busqueda la realiza de manera excelente, pero cuando quiero mostrar la informacion de la sig. página, no pasa nada. Mi version de php es la 6.0.0-dev que viene con el appserv. Será que esta version genera alguna incompatibilidad?
AnaCM | cual es la mejor opcion para paginación
| 22/8/2011 |
Se trata sobre paginación en web.
Quiero saber que método resulta más óptimo en cuanto a tiempo de carga, cual es recomendable.
Si tengo n registros en una BD (por ejemplo trabajadores), llamar al total de estos registros al cargar la página y mostrarlos en un grid (usando javascript) según el tamaño de página que quiero usar, por ejemplo 10 registros en la primera página y al clickear en la 2da página mostrar los siguientes 10 y ocultar los 10 primeros y el resto, y asi por el resto de páginas.
En este primer caso la llamada a la BD es una sola vez, la primera vez que carga la página y para mostrar los datos los oculto o los hago visibles, usando javascript, según crea necesario.
La segunda opción sería la siguiente: la primera vez que carga la página cargo en un grid el número de registros que indica mi tamaño de página, por ejemplo 20, es decir hago la consulta a la BD por los primeros 20 registros, y si clickean en la página 2 hago nuevamente la consulta a la BD por los siguientes 20 registros y así con el resto de páginas.
En este segundo caso se estaría accediendo a la base de datos por cada consulta a cada página, pero la cantidad de información que cargaría sería menor.
¿Cual resulta más óptimo?.
También deseo saber cómo realiza la paginación el GridView del ASP, y el RADGridView del Telerik, ya que estos son objeto del servidor, si por cada vez que se hace click en un nro de página van al servidor, o es que hacen inicialmente la carga total de los datos y usan javascript para mostrar y ocultar datos.
De antemano gracias por aclarar mis dudas.
Ana.
CLuiz10... | duda
| 31/8/2011 |
Disculpa las molestias pero he echo todo lo que indicas pero me tira un error
"; echo "No se encontraron resultados"; echo ""; }else{ //////////elementos para el orden if(!isset($orden)) { $orden="co_id"; } //////////fin elementos de orden //////////calculo de elementos necesarios para paginacion //tamaño de la pagina $tamPag=3; //pagina actual si no esta definida y limites if(!isset($pagina)) { $pagina=1; $inicio=1; $final=$tamPag; } //calculo del limite inferior $limitInf=($pagina-1)*$tamPag; //calculo del numero de paginas $numPags=ceil($numeroRegistros/$tamPag); if(!isset($pagina)) { $pagina=1; $inicio=1; $final=$tamPag; }else{ $seccionActual=intval(($pagina-1)/$tamPag); $inicio=($seccionActual*$tamPag)+1; if($pagina<$numPags) { $final=$inicio+$tamPag-1; }else{ $final=$numPags; } if ($final>$numPags){ $final=$numPags; } } //////////fin de dicho calculo //////////creacion de la consulta con limites $sql="SELECT * FROM proyecto.comercios ".$criterio." ORDER BY ".$orden.",co_id ASC LIMIT ".$limitInf.",".$tamPag; $res=mysql_query($sql); //////////fin consulta con limites echo "
"; echo "encontrados ".$numeroRegistros." resultados
"; echo "ordenados por ".$orden.""; if(isset($txt_criterio)){ echo "
Valor filtro: ".$txt_criterio.""; } echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; while($registro=mysql_fetch_array($res)) { ?> ');"> "; }//fin if //////////a partir de aqui viene la paginacion ?>
Código Nombre País
1) { echo ""; echo "anterior"; echo " "; } for($i=$inicio;$i<=$final;$i++) { if($i==$pagina) { echo "".$i." "; }else{ echo ""; echo "".$i." "; } } if($pagina<$numPags) { echo " "; echo "siguiente"; } //////////fin de la paginacion ?>
ya le he movido pero no le encuentro tienes alguna sugerencia=?