Conexión con bases de datos

Hola:
Tengo que conectar una web con una base de datos de unos 7.000 artículos y el cliente quiere que según se vaya eligiendo el articulo se vayan filtrando para ver al final los productos que se ajustan a sus necesidades.
¿Me podría alguien ayudar?
Gracias

1 respuesta

Respuesta
1
Lo más lógico seria paginar los resultados...
Aquí te explico más o menos una de las formas de hacerlo
La paginación de resultados es la única solución adecuada para poder mostrar al usuario los 4281 resultados que ha devuelto su búsqueda... ¿pero cómo hacerlo? Bien, ya sabes lo que quieres. Quieres paginar resultados. ¿Pero cómo hacerlo? ¿Cuántos resultados por página? ¿Cuántas páginas? ¿Y si resultan que me salen 1000 páginas... muestro un enlace a cada una de ellas? ¿Solo muestro enlaces a las primeras 10 páginas? Y al cambiar de página... ¿qué hago? ¿Debo volver a hacer la búsqueda? Este artículo pretende dar respuesta a todas estas preguntas.
En realidad, paginar resultados es tan fácil como seguir los siguientes 3 pasos:
1) Hacer una llamada a la base de datos para obtener el número total de resultados de la búsqueda y asignar el resultado a una variable que llamaremos $total. Con MySQL la llamada debería ser algo así:
$get = mysql_query('select count(*) from mitabla where ...');
$total = mysql_result($get,0);
2) Hacer otra llamada que devuelva los resultados de la búsqueda, limitando los resultados devueltos mediante las variables $pp y $st. $Pp define el número de resultados por páginas. $St define el número, del total de resultados, desde donde empezar a mostrar los resultados en la página actual.
Usando MySQL la llamada será algo así:
// obtener el valor de $st
if(isset($_GET['st'])) {
$st = $_GET['st'];
} else {
$st = 0;
}
// la llamada a base de datos
$get = mysql_query('select * from mitabla where ... limit '.$st.','.$pp);
while($row=@mysql_fetch_row($get)) {
// imprimir resultados
echo $row[0].'<br>';
}
La variable $st se obtiene de la dirección de la página actual, por lo que su valor se debe obtener de la variable $_GET['st']. En la primera página de resultados $_GET['st'] no esta definida, por lo que como puedes observar en el código superior tendremos que comprobarlo, y si resulta que no esta definida, tendremos que asignarle el valor 0.
3) Aplicar la función paginación() que se muestra a continuación. Esta función se encarga de imprimir una serie de enlaces a las páginas resultantes de la búsqueda.
<?php
// resultados por pagina
$pp = 10;
// la función
function paginacion($total,$pp,$st,$url) {
if($total>$pp) {
$resto=$total%$pp;
if($resto==0) {
$pages=$total/$pp;
} else {
$pages=(($total-$resto)/$pp)+1;
}
if($pages>10) {
$current_page=($st/$pp)+1;
if($st==0) {
$first_page=0;
$last_page=10;
} else if($current_page>=5 && $current_page<=($pages-5)) {
$first_page=$current_page-5;
$last_page=$current_page+5;
} else if($current_page<5) {
$first_page=0;
$last_page=$current_page+5+(5-$current_page);
} else {
$first_page=$current_page-5-(($current_page+5)-$pages);
$last_page=$pages;
}
} else {
$first_page=0;
$last_page=$pages;
}
for($i=$first_page;$i<$last_page;$i++) {
$pge=$i+1;
$nextst=$i*$pp;
if($st==$nextst) { $page_nav .= '<b>['.$pge.']</b> '; } else { $page_nav .=
'<a href="'.$url.''.$nextst.'">'.$pge.'</a> '; }
}
if($st==0) { $current_page = 1; } else { $current_page = ($st/$pp)+1; }
if($current_page<$pages) {
$page_last = '<b>[<a
href="'.$url.''.($pages-1)*$pp.'">>>></a>]</b>';
$page_next = '[<a href="'.$url.''.$current_page*$pp.'">></a>]';
}
if($st>0) {
$page_first = '<b>[<a
href="'.$url.'0"><<<</a>]</b>';
$page_previous = '[<a
href="'.$url.''.($current_page-2)*$pp.'"><</a>]';
}
}
return $page_first.' '.$page_previous.' '.$page_nav.' '.$page_next.' '.$page_last;
}
// mostrar resultado de la funcion
echo paginacion($total, $pp, $st, 'http://tudominio.com/mostrar.php?st=');
?>
A continuación una explicación de cada una de las variables que recibe la función paginación():
La variable $total contiene en número total de resultados que ha devuelto la búsqueda. La forma de obtener este valor se ha explicado en el paso 1).
La variable $pp contiene el número de resultados que queremos mostrar por en cada página.
La vairbale $st contiene el número del primer resultado de la página actual. $St vale 0 en la primera página, en la siguientes valdrá 10, 20, 30, ...
La variable $url contiene la dirección completa de las páginas de resultados pero sin el valor de $st. Es decir, si la dirección de una página de resultados es http://tudominio.com/mostrar.php?st=30 el valor de $url debe ser http://tudominio.com/mostrar.php?st=
Ojo esto es código php y base de datos SQL
Si necesitas alguna ayuda extra no dudes en contactarme... o agregarme a tus expertos favoritos...
No olvides cerrar y valorar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas