Ver Mensaje Individual
  #10 (permalink)  
Antiguo 12/06/2007, 21:39
makeitslow
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Mostrar contenido en Varias Paginas Con Indice

Hola Blackmen10, antes de explicarte un poco mas del del codigo de mostrar Contenido Paginado, te dejo la parte del mio que funciona de pelos. El archivo se llama listarcarnets.php y lo comento un poco:

Código PHP:
<?
function conectar() 

    
//Funcion para conectarnos a nustra BD
        
$base_de_datos "usa";
    
$db_usuario "root"
    
$db_password ""
   
    if (!(
$link mysql_connect("localhost"$db_usuario$db_password))) 
    { 
        echo 
"Error conectando a la base de datos."
        exit(); 
    } 
    if (!
mysql_select_db($base_de_datos$link)) 
    { 
        echo 
"Error seleccionando la base de datos."
        exit(); 
    } 
    return 
$link


$db conectar();

//Variable para la cantidad de registros a mostrar por pagina
$registros 20;

if (@!
$pagina=$_GET[pagina]) { 
    
$inicio 0
    
$pagina 1

else { 
    
$inicio = ($pagina 1) * $registros



?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style>
    body { font-family: arial; font-size:12px}
</style>
</head>

<body>
    <?
        
//Seleccionamos todos los elementos de HISTORIA_CLINICA mediante el ID 
    
$resultados mysql_query("SELECT ID_CS FROM historia_clinica");
    
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM historia_clinica ORDER BY ID_CS ASC LIMIT $inicio, $registros");    
    
$total_paginas ceil($total_registros $registros);                       

    if(
$total_registros) {
?>
<div align="center">
  <p><font color="#CCCCCC"><font color="#003366" size="5" face="Berlin Sans FB">LISTA 
    DE CARNETS SANITARIOS</font></font></p>

//En esta tabla muestro el contenido de las consultas en su respectiva columna y fila
  <table width="85%" border="1" cellspacing="0" bordercolor="#003366">
    <tr> 
      <td width="6%" bgcolor="#003366"> <div align="center"> 
          <p><font size="2" face="Berlin Sans FB"><font color="#FFFFFF">N&ordm; 
            de Carnet Sanitario</font></font></p>
        </div></td>
      <td width="5%" bgcolor="#003366"><div align="center"><font size="2" face="Berlin Sans FB"><font color="#FFFFFF" size="1">N&ordm; 
          de Fotografia</font></font></div></td>
      <td width="7%" bgcolor="#003366"><div align="center"><font size="2" face="Berlin Sans FB"><font color="#FFFFFF">N&ordm; 
          de Historia Clinica</font></font></div></td>
      <td width="21%" bgcolor="#003366"> <div align="center"><font face="Berlin Sans FB"><font color="#FFFFFF">Apellidos</font></font></div></td>
      <td width="21%" bgcolor="#003366"> <div align="center"><font face="Berlin Sans FB"><font color="#FFFFFF">Nombres</font></font></div></td>
      <td width="10%" bgcolor="#003366"> <div align="center"> 
          <p><font face="Berlin Sans FB"><font color="#FFFFFF" size="3">Fecha 
            de Registro</font></font></p>
        </div></td>
      <td width="9%" bgcolor="#003366"><div align="center"><font face="Berlin Sans FB"><font color="#FFFFFF" size="2">Carnet 
          Sanitario </font></font></div></td>
      <td width="11%" bgcolor="#003366"><div align="center"><font face="Berlin Sans FB"><font color="#FFFFFF" size="2">Fecha 
          de Caducidad</font></font></div></td>
      <td width="10%" bgcolor="#003366"><div align="center"><font face="Berlin Sans FB"><font color="#FFFFFF" size="2">Imprimir 
          Documento </font></font></div></td>
    </tr>
    <?php    
        
while($reg=mysql_fetch_array($resultados)) {
            
            
?>
    <tr> 
      <td> <div align="center"><font face="Berlin Sans FB"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo $reg["ID_CS"]; ?></font></font></font><font color="#003366"></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo $reg["NUMERO_FOTO"]; ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo $reg["ID_HC"]; ?></font></font></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="3"><? echo $reg["APELLIDOS_CS"]; ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="3"><? echo $reg["NOMBRES_CS"]; ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo nl2br($reg["FECHA_REGISTRO"]); ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo $reg["CARNET_SANITARIO_CS"]; ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB"><font color="#003366"><font size="1"><? echo $reg["FECHA_CADUCIDAD"]; ?></font></font></font></div></td>
      <td><div align="center"><font face="Berlin Sans FB" size="2"><a href="#" onClick="javascript:window.open(
'imprimirDOC.php?cod=<?php echo $reg['ID_CS'];?>','','toolbars=0,titlebars=0,statusbars=0,menubars=0,resizable=0,directories=0,location=0,width=450,height=400');">IMPRIMIR</a></font></div></td>
    </tr>
    <?php            
        
}
?>
  </table>
  <br></div>
<?php
        
    
} else {
        
?><font face="Berlin Sans FB" color="#003366" size="3"><div align="center"><br><br><?php echo "No se encontro ningun Carnet Sanitario<br>";?></div></font><?php
    
}
    
    
mysql_free_result($resultados);                
    
    if(
$total_registros) {
        
        echo 
"<center>";
        
        if((
$pagina 1) > 0) {
            
                
//Mostramos el enlace los siguientes N elementos de nuestro contenido
                
echo "<a href='listarcarnets.php?pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
        for (
$i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='listarcarnets.php?pagina=$i'>$i</a> "
        }
      
        if((
$pagina 1)<=$total_paginas) {
            echo 
" <a href='listarcarnets.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    }
    
?>

Ahora bien, para definir la cantidad de elementos a mostrar, tenemos la variable:

$registros=NUMERO;

Debes considear que estos valores siempre sean 0 y 1 respectivamente:

$inicio = 0;
$pagina = 1;


En tu consulta que me comentas:

$resultados = mysql_query("select * from soin where id_orden ORDER BY ASC LIMIT $inicio, $registros");

Tienes demas la condicion WHERE, anteriormente ya deberias haber declarado un valor para $resultados considerando condiciones que tu necesites:

$resultados = mysql_query("SELECT id_orden FROM soin WHERE lo_que_quieras");

De tal forma que esa parte te quede asi:

Código PHP:
$resultados mysql_query("SELECT id_orden FROM soin");
    
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM soin ORDER BY id_orden ASC LIMIT $inicio, $registros");    
    
$total_paginas ceil($total_registros $registros); 
Y despues de esta parte, muestras los resultados como tu desees dentro del IF:

(En mi caso dentro de una tabla)
Código PHP:
if($total_registros) {
?>
<div align="center">
  <p><font color="#CCCCCC"><font color="#003366" size="5" face="Berlin Sans FB">LISTA 
    DE CARNETS SANITARIOS</font></font></p>
  <table width="85%" border="1" cellspacing="0" bordercolor="#003366">
.
.
.
.

Ahora si tienes el siguiente error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\paginas.php on line 54

Considerando que en la linea 54 tienes:

$resultados = mysql_query("select * from soin where id_orden ORDER BY ASC id_orden $inicio, $registros");

Es que $resultados esta con valor nulo (0), tu consulta retorna un valor vacio y por eso myswl_num_rows() retorna ese error por que no puede tener dicho valor.

Por que tienes 0 en tu consulta??? Posiblemente por alguna de estas razones:

1. No tienes datos para esa consulta, o sea que no hay resultados para la consulta.

2. Estas utilizando la condicion WHERE que no es necesaria.

3. Estas los nombres de tus variables y campos con mayusculas en lugar de minusculas o visceversa (Revisa los nombres de los campos y escribelos tal cual estas en la BD)

Espero te sirva, cualquie duda vuelve a preguntar aqui mismo, tal vez alguien sepa algo mas concreto y correcto. Por lo pronto es todo.

Saludos!