Foros del Web » Programando para Internet » PHP »

Miren este codigo y ayudenme, por favor!!

Estas en el tema de Miren este codigo y ayudenme, por favor!! en el foro de PHP en Foros del Web. <?PHP $datos = file('noticias.dat'); $datos = array_reverse($datos); $total = count($datos); // Cuenta las lineas existentes. foreach($datos as $elementos) { $elementos = trim($elementos); $parte = explode("|", ...
  #1 (permalink)  
Antiguo 16/11/2003, 21:03
 
Fecha de Ingreso: abril-2001
Ubicación: Santa Cruz - Bolivia
Mensajes: 25
Antigüedad: 23 años
Puntos: 0
Miren este codigo y ayudenme, por favor!!

<?PHP

$datos = file('noticias.dat');
$datos = array_reverse($datos);
$total = count($datos); // Cuenta las lineas existentes.



foreach($datos as $elementos) {
$elementos = trim($elementos);
$parte = explode("|", $elementos);
echo "<b>" . $parte[2] . "</b>" . "<BR>" . $parte[3] . "<BR>" ." Escrita por " . "<b>" . $parte[1] . "</b>" . " el " . "<b>" . $parte[0] . "</b>" . "<BR>"."<BR>";
}

?>

<?PHP
echo "Noticias en total: " . $total;
?>

Estoy aprendiendo php y esto he llegado ha hacer un simple y facil script de noticias, pero ahora tengo un problema, como le hago para paginarlo o para mostrar de 5 en 5 o la cantidad que sea?
Como la base de datos es .dat no Mysql no encuentro la manera de hacerlo. Por favor alquien que me lo corrija o me mustre lo que me hace falta!
Gracias.
  #2 (permalink)  
Antiguo 17/11/2003, 00:56
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Ya sea que uses dase de datos o archivos de texto, el proceso sera mas o menos lo mismo. Deberás propagar de alguna manera (la URL generalmente) dos variables: el numero de noticias que se veran por pagina, y la pagina que actualmente quieres ver.
Quedaria asi:
Código PHP:
$porpagina $_GET['porpagina']; // se toma el valor de $porpagina de la URL
$pagina $_GET['pagina'];       // lo mismo para $pagina

if (!isset($porpagina)) {        // si el valor es nulo, qiere devir que no se envio nada por la URL
    
$porpagina 5;              // y entonces se define el valor predeterminado
}
if (!isset(
$pagina)) {           // aca pasa lo mismo
    
$pagina 1;
}

/* esto es como vos lo tenias */
$datos file('noticias.dat');
$datos array_reverse($datos);
$total count($datos); // Cuenta las lineas existentes.

/* ahora lo importante */
$datos array_slice($datos$pagina*$porpagina-$porpagina$porpagina);
/* utilizas array_slice para tomar solo una porcion de la matriz*/


/* y esto es como vos lo tenias */
foreach($datos as $elementos) {
    
$elementos trim($elementos);
    
$parte explode("|"$elementos);
    echo 
"<b>" $parte[2] . "</b>" "<BR>" $parte[3] . "<BR>" ." Escrita por " "<b>" $parte[1] . "</b>" " el " "<b>" $parte[0] . "</b>" "<BR>"."<BR>";
}

/* ahora creas los links con las variables que se propagarán */
$link_siguiente "<a href='?pagina=".($pagina+1)."&porpagina=$porpagina'>Siguiente</a>";
$link_anterior "<a href='?pagina=".($pagina-1)."&porpagina=$porpagina'>Anterior</a>";

echo 
"$link_siguiente<br>$link_anterior<br>";
echo 
"Noticias en total: " $total
Lo mas importante aqui es el uso de array_slice(), asi que te convendria revisar su documentacion: http://www.php.net/array_slice

Ahora tienes algo mas o menos armado coma para adaptar.

Saludos y suerte!

Última edición por fran86; 17/11/2003 a las 01:02
  #3 (permalink)  
Antiguo 17/11/2003, 18:07
 
Fecha de Ingreso: abril-2001
Ubicación: Santa Cruz - Bolivia
Mensajes: 25
Antigüedad: 23 años
Puntos: 0
Okay, funciono, gracias fran86, otra pregunta si esta por ahi!!

Ahora como le hago para limitar lo que muestra osea: el link siguiente y anterior, no tiene limite, llega al final y seguis presionando y sigue aumentando, como le haria para que al llegar al final de los datos ya no avance, o al estar en el inicio no se retroceda?

No se si me hago entender!

Gracias.

Última edición por ditof; 17/11/2003 a las 18:09
  #4 (permalink)  
Antiguo 17/11/2003, 22:00
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Antes de mostrar los links, o crearlos incluso, tendrias que establecer una condicion de modo que si $pagina*$porpagina-$porpagina es mayor que el total de las entradas de la matriz, el link siquiente no se muestre.
Para el de anterior, el asunto es mas facil: fijate que valor toma la variable pagina en la URL cuando haces clic por primera vez en el link, y te daras cuenta de la condicion que debes usar.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.