Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/05/2004, 16:00
Avatar de senioman
senioman
 
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 20 años
Puntos: 1
siento decierte que el link no me funcionó, por eso no comenté nada. Os adjunto aquí el código definitivo. La página que quería hacer consistía en una lista donde se mostraban las 10 últimas entradas a la base de datos en orden invertido, y así de 10 en 10.
A su derecha aparecen los 200 primeros caracteres del ultimo añadido. El problema es que si se borra algun texto dejará de mostrarse el ultimo porque como no sabía decir "el último" puse que mostrara aquel cuya id era igual a la suma de todas la entradas. Se que me explico mal, si os puedo ayudar preguntáis. El código no es mío, es adaptación de varios sitios. Me gustaría incluir el nombre del autor pero no lo sé. Un saludo.



Parte primera:
Código PHP:
///muestra los resultados correspondientes a cada página
$image '<href="mostraroracion.php?tema_id=$tema_id"><img src="../imagenes/pastoral/icono' $row['icono'] . '.gif" width="14" height="14" border="0" /></a>';
$link mysql_connect("localhost""senioman"); 
mysql_select_db("foro"$link); 
$pag = ($_GET['pag']); // esta linea hay que añadir
if (!isset($pag)) $pag=1// Si la variable no está definida mostrar la página 1
$tampag 10;
$reg1 = ($pag-1) * $tampag// resta 1 del número de página y lo multiplica por el número de entradas por página. En relación con mysql_data_seek
$result mysql_query("SELECT tema_id, tema_titulo, tema_creador FROM temas_foro order by tema_id desc"$link); // después de temas_foro añadir "order by tema_id desc" para invertir orden
$total mysql_num_rows($result); //número total de entradas
if (mysql_num_rows($result)){ 
  echo 
"<table border = '0'> \n"
  for (
$i=$reg1$i<min($reg1+$tampag$total); $i++) { //
    
mysql_data_seek($result$i); //sitúa el puntero interno en la primera entrada de la serie que toca muestrar
    
$row mysql_fetch_array($result); // muestra las entradas seleccionadas en funcion del tampag y de la situacion del puntero interno
    
echo "<br><a href=\"mostraroracion.php?tema_id=".$row["tema_id"]."\">$image <font size='2' face='Verdana'>".$row["tema_id"]. "<font size='2' face='Verdana'>. <strong>".$row["tema_titulo"].
      
"</strong><br><font size='1' face='Verdana'>Puesto por ".$row["tema_creador"]."</td></tr> \n"
  }
  
  echo 
"</table> \n"
}
else
  echo 
"¡ No se ha encontrado ninguna oración !"
Parte segunda


Código PHP:
/******************************************************/
/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($pag, $total, $tampag, $enlace) {
  $total_paginas = ceil($total/$tampag);
  $anterior = $pag - 1;
  $posterior = $pag + 1;
  if ($pag>1)
    $texto = "<a href=\"$enlace$anterior\" class='Estilo20'>&laquo;</a> ";
  else
    $texto = "<b>&laquo;</b> ";
  for ($i=1; $i<$pag; $i++)
    $texto .= "<a href=\"$enlace$i\" class='Estilo20'>$i</a> ";
  $texto .= "<b>$pag</b> ";
  for ($i=$pag+1; $i<=$total_paginas; $i++)
    $texto .= "<a href=\"$enlace$i\" class='Estilo20'>$i</a></font> ";
  if ($pag<$total_paginas)
    $texto .= "<a href=\"$enlace$posterior\" class='Estilo20'>&raquo;</a>";
  else
    $texto .= "<b>&raquo;</b>";
  return $texto;
}
echo paginar($pag, $total, $tampag, "oracion.php?pag=");
?>
<?php print $display_block;?>
Parte tercera: Para mostrar los primeros caracteres de la ultima entrada, auqnue ya digo que mal formulado:
Código PHP:
 <?php




///muestra la ultima entrada
//verify the topic exists
$verify_topic "select tema_titulo from temas_foro where tema_id = $total";
$verify_topic_res mysql_query($verify_topic$link) or die(mysql_error());

if (
mysql_num_rows($verify_topic_res) < 1) {
    
//this topic does not exist
    
$display_block "<P><font size='2' face='Arial, Helvetica, sans-serif'><b>Ha seleccionado un tema incorrecto. Por favor <a href=\"listatemas.php\">vuelva a intentarlo</a>.</b></font></p>";
} else {
    
//get the topic title
   
$tema_titulo stripslashes(mysql_result($verify_topic_res,0'tema_titulo'));

   
//gather the posts
   
$get_posts "select tema_titulo, tema_autor, LEFT(tema_oracion,200) as resumentema_oracion, tema_fecha, date_format(tema_fecha, '%b %e %Y at %r') as fmt_tema_fecha, tema_creador from temas_foro where tema_id = $total"///el comando LEFT sirve para seleccionar el numero de caracteres que queremos hacer visibles de una variable
   
$get_posts_res mysql_query($get_posts,$link) or die(mysql_error());


   while (
$posts_info mysql_fetch_array($get_posts_res)) {
       
$tema_titulo $posts_info['tema_titulo'];
       
$tema_id $posts_info['tema_id'];
       
$tema_autor $posts_info['tema_autor'];
       
$tema_oracion stripslashes($posts_info['resumentema_oracion']); 
       
$tema_fecha $posts_info['tema_fecha'];
       
$tema_creador stripslashes($posts_info['tema_creador']);
       

       
//add to display
       
$display_block "
       <font size='4' face='Verdana'color='#009900'>$tema_titulo</strong></font><br>
   <font size='2' face='Verdana'><em>$tema_autor</em></p></p></font><font size='3' face='Times New Roman' align='centre'><div align='justify'><em>$tema_oracion [...]</div></em>
   <table width=100% cellpadding=0 cellspacing=0 border=0>
   <tr height='26' bgcolor='#CCCCCC'>
   </tr>"
;
   }

  
}
?>                  <?php print $display_block;?>