Acerca de despliegue de resitros

Hola experto... Aqui te adjunto una pagina que he hecho. Es un sitema de búsqueda. El problema es que los registros de la tabla 'algo' no aparecen, no se despliegan. Hay datos en ella pero no comprendo porque sucede esto.
<?
// búsqueda o despliegue normal de registros
$que = $_POST["que"];
if (isset($que)){
$whe=" WHERE usuario LIKE '$que%'";
}
else{
$whe="";
}
// filas por pagina
$rowsPerPage = 20;
// por defecto mostramos pagina 1
$pageNum = 1;
// si $_GET['page'] esta definido, lo usamos como numero de pagina
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;
if (isset($whe)) {
$sql = "SELECT * FROM algo" . $whe . " LIMIT $offset, $rowsPerPage";
}else{
$sql = "SELECT * FROM algo LIMIT $offset, $rowsPerPage";
}
// vincular sentencia sql
$result = mysql_query($sql, $link);
// cuantas filas hay en la bd
if (isset($whe)) {
$sql = "SELECT COUNT(id) AS numrows FROM algo" . $whe;
}else{
$sql = "SELECT COUNT(id) AS numrows FROM algo";
}
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];
?>
... LUEGO EN EL BODY imprimo el los supuestos registros y los vinculos de navegación...
<?
while ($row = mysql_fetch_row($result)){?>
<tr>
<td><? Echo $row[0] ?> </td>
<td><? Echo $row[1] ?></td>
</tr>
<? }?>
<? // creating 'previous' and 'next' link
// plus 'first page' and 'last page' link
// print 'previous' link only if we're not
// on page one
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"$self?page=$page\">[Prev]</a> ";
$first = " <a href=\"$self?page=1\">[First Page]</a> ";
}
else
{
$prev = ' [Prev] '; // we're on page one, don't enable 'previous' link
$first = ' [First Page] '; // nor 'first page' link
}
// print 'next' link only if we're not
// on the last page
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"$self?page=$page\">[Next]</a> ";
$last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
}
else
{
$next = ' [Next] '; // we're on the last page, don't enable 'next' link
$last = ' [Last Page] '; // nor 'last page' link
}
// print the page navigation link
echo $first . $prev . " Showing page <strong>$pageNum</strong> of <strong>$maxPage</strong> pages " . $next . $last;
?>
QUE ESTOY HACIENDO MAL?
trabajo con php y mysql.
DESDE YA MUCHISIMAS GRACIAS.
JUAN

1 Respuesta

Respuesta
1
Por lo que puedo ver en tu código no muestras en ningún sitio el resultado de la tabla algo. Ejecutas el siguiente código:
if (isset($whe)) {
$sql = "SELECT * FROM algo" . $whe . " LIMIT $offset, $rowsPerPage";
}else{
$sql = "SELECT * FROM algo LIMIT $offset, $rowsPerPage";
}
// vincular sentencia sql
$result = mysql_query($sql, $link);
En result obtendrias todos los datos de la tabla algo, pero acto seguido ejecutas lo siguiente:
// cuantas filas hay en la bd
if (isset($whe)) {
$sql = "SELECT COUNT(id) AS numrows FROM algo" . $whe;
}else{
$sql = "SELECT COUNT(id) AS numrows FROM algo";
}
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
Con lo que sobreescribes los datos que tenias en $resutl por los nuevos, que no es mas que un 'select count'.
Te propongo que intercambies esas dos partes de código.
Por cierto, al hacer los SELECT no necesitas comprobar "if (isset($whe))" ya que whe estará vacío si no tienes que usarlo. Basta con poner:
$sql = "SELECT * FROM algo" . $whe . " LIMIT $offset, $rowsPerPage";
Y su correspondiente en el siguiente SELECT.
HE PROBADO EL SIGUIENTE CODIGO INTERCAMBIANDO LAS SENTENCIAS PERO SIGUE SUCEDIENDO LO MISMO:
// sentencia sql
$sql = "SELECT COUNT(id) AS numrows FROM algo LIMIT $offset, $rowsPerPage";
if (isset($que)) {
$sql = "SELECT COUNT(id) AS numrows FROM algo" . $whe . " LIMIT $offset, $rowsPerPage";
}
GRACIAS POR TU PRONTA RESPUESTA.
SALU2
JUAN
Te pongo una parte del código para que veas cómo creo que debería quedar.
<?
$que = $_POST["que"];
if (isset($que)) {
$whe=" WHERE usuario LIKE '$que%'";
} else {
$whe="";
}
$rowsPerPage = 20;
if(isset($_GET['page'])) {
$pageNum = $_GET['page'];
} else {
$pageNum = 1;
}
$offset = ($pageNum - 1) * $rowsPerPage;
$sql = "SELECT COUNT(id) AS numrows FROM algo" . $whe;
$result = mysql_query($sql, $link) or die(mysql_error());
$numrows = mysql_result($result,0,'numrows');
$maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];
$sql = "SELECT * FROM algo" . $whe . " LIMIT $offset, $rowsPerPage";
$result = mysql_query($sql, $link);
// Aqui no debes poner nada que modifique la variable $result antes de usarla en mysql_fetch_row
// En algun sitio tendrás que poner el resto de código html, la etiqueta <table>, etc.
while ($row = mysql_fetch_row($result)) {
echo "<tr> <td> {$row[0]} </td> <td> {$row[1]} </td> </tr>";
}
// aqui o donde corresponda tienes que poner la etiqueta </table>
// El resto no afecta a la hora de mostrar el contenido de la tabla algo.
?>
Pruebalo, parece estar todo bien y debería funcionar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas