bufff no me ayuda demasiado a ver el codigo que tengo ahora mismo es este:
<?php $connect = mysql_connect('localhost', 'usuario', 'cotraseña'); mysql_select_db('sensei_blog', $connect); $result = mysql_query("SELECT entrada, imagen, autor, title FROM blog WHERE seccion='principal' ORDER BY id DESC", $connect); echo '<table>'; while($row = mysql_fetch_array($result)) { echo '<tr><td><center> <span style="font-weight:bold; font-size:20px; color:#FFFFFF;">'.$row['title'].'</span><br/><br/> <img alt=cabezera src='.$row['imagen'].'></br></br> <div style="color:#FFFFFF;">'.nl2br($row['entrada']).'</div></center> </br> </br><p align="right" style="color:#FFFFFF;"> autor: '.$row['autor'].'</p></td></tr>'; } echo '</table>';?>
con esto las entradas se me muestran en la web, pero se me muestran todas me gustaría que solo se mostraran 5 o 10 y en caso de haber mas en la parte inferior apareciese un botón para ver las siguientes. quizá ahora puedas decirme mejor que hacer
Como te comento mi compañero shakaran, es sencillo usando la función mysql_num_rows para obtener el número total de entradas, y si por ejemplo quieres limitar a las 5 primeras entradas en tu bucle, basta con poner una variable $i que sea un contador y que muestre solo las solicitadas. Aunque de esta forma esta poco optimo ya que se recorrería el bucle para todas las entradas (si tuvieras 3000 sería muy lento) por eso he añadido una variable booleana para que el bucle se detenga una vez pase de las entradas seleccionadas.
El código adaptado sería:
<?php $connect = mysql_connect('localhost', 'usuario', 'cotraseña'); mysql_select_db('sensei_blog', $connect); $result = mysql_query("SELECT entrada, imagen, autor, title FROM blog WHERE seccion='principal' ORDER BY id DESC", $connect); $total_post = mysql_num_rows($result); echo '<table>'; $i = 0; $continue = true; while($row = mysql_fetch_array($result) && $continue) { if($i >0 or $i < 5) { echo '<tr><td><center> <span style="font-weight:bold; font-size:20px; color:#FFFFFF;">'.$row['title'].'</span><br/><br/> <img alt=cabezera src='.$row['imagen'].'></br></br> <div style="color:#FFFFFF;">'.nl2br($row['entrada']).'</div></center> </br> </br><p align="right" style="color:#FFFFFF;"> autor: '.$row['autor'].'</p></td></tr>'; } else $continue = false; } echo '</table> <br /> Número total de entradas: '.$total_post;?>
he usado el metodo de SixLima, ya que si parecia mas sencillo aun que no se si tambien e usado ideas de ernestmego total que no funciona... he puesto mediante un if los botones para que se muestren solo en caso de ser necesarios el codigo es el siguiente.
<?php $connect = mysql_connect('localhost', 'user', 'pass'); mysql_select_db('sensei_blog', $connect); if ($_get["start"]=="") { $start=1;} else {$start=$_get["start"];} $end = 5; $result = mysql_query("SELECT entrada, imagen, autor, title FROM blog WHERE seccion='TEST' ORDER BY id DESC LIMIT $start , $end", $connect); $total = mysql_num_rows($result); echo '<table>'; while($row = mysql_fetch_array($result)) { echo '<tr><td><center> <span style="font-weight:bold; font-size:20px; color:#FFFFFF;">'.$row['title'].'</span><br/><br/><img alt=cabezera src='.$row['imagen'].'></br></br><div style="color:#FFFFFF;">'.nl2br($row['entrada']).'</div></center></br></br> <p align="right" style="color:#FFFFFF;"> autor: '.$row['autor'].'</p></td></tr>'; } echo '</table>'; if ($start != 1) { echo '<div style="float:left>'; echo '<a href="http://sensei.quijost.com/?start='.$start += 5 .'">ENTRADAS RECIENTES</a> </div>'; } if (($start += 5) <= $total) { echo '<div style="align:right">'; echo '<a href="http://sensei.quijost.com/?start='.$start -= 5 .'">ENTRADAS ANTERIORES</a> </div>'; }?>
Si llevas razón, no recordaba como funcionaba el LIMIT (es algo que lo usas un par de veces y luego copias y pegas):
http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
<?php $dbh = mysql_connect('localhost', 'user', 'pass'); mysql_select_db('sensei_blog', $dbh); $start = (empty($_get["start"]) ? 0 : $_REQUEST["start"]); $end = 5; $res = mysql_query("SELECT entrada, imagen, autor, title FROM blog WHERE seccion='TEST' ORDER BY id DESC LIMIT $start,$end", $dbh); $n = mysql_num_rows($res); echo '<table>'; while($row = mysql_fetch_array($res)) { echo '<tr> <td> <center> <span style="font-weight:bold; font-size:20px; color:#FFFFFF;"> '.$row['title'].' </span> <br /> <br /> <img alt="cabezera" src="'.$row['imagen'].'"> <br /> <br /> <div style="color:#FFFFFF;"> '.nl2br($row['entrada']).' </div> </center> <br /> <br /> <p align="right" style="color:#FFFFFF;"> autor: '.$row['autor'].' </p> </td> </tr>'; } echo '</table>'; if($start > 0) { echo '<div style="float:left> <a href="?start='.($start + 5).'">ENTRADAS RECIENTES</a> </div>'; } if(($start + 5) <= $total) { echo '<div style="align:right"> <a href="?start='.($start - 5).'">ENTRADAS ANTERIORES</a> </div>'; }?>
Hay va el código bien corregido, identando, y con muchas cosas que tenias mal, no haga un $start += 5 que sino estas aumentando en 5 la variable, y hacías unas cosa muy raras. No te hace falta poner el nombre del dominio en los href y los <br> llevan la / al final, no al principio <br /> y bueno mas cosas que por no perder tiempo puedes comparar en los dos pedazos de código.
Tras el sufrimiento la recompensa. Ya que estaba puesto aproveche para asignar la sección del foro mediante una variable y así tener que estar pendiente de un solo index y no tener uno por sección.
<?php $dbh = mysql_connect('localhost', 'usuario', 'contraseña'); mysql_select_db('sensei_blog', $dbh); $start = (empty($_REQUEST["start"]) ? 0 : ($_REQUEST["start"])); $section = (empty($_REQUEST["seccion"]) ? principal : ($_REQUEST["seccion"])); $end = 5; $res = mysql_query("SELECT entrada, imagen, autor, title FROM blog WHERE seccion='".$section."' ORDER BY id DESC LIMIT ".$start.",".$end."", $dbh) or die('Error select_blog: '.mysql_error()); $n = mysql_num_rows($res); echo '<table>'; while($row = mysql_fetch_array($res)) { echo '<tr> <td> <center> <span style="font-weight:bold; font-size:20px; color:#FFFFFF;"> '.$row['title'].' </span> <br /> <br /> <img alt="cabezera" src="'.$row['imagen'].'"> <br /> <br /> <div style="color:#FFFFFF;"> '.nl2br($row['entrada']).' </div> </center> <br /> <br /> <p align="right" style="color:#FFFFFF;"> autor: '.$row['autor'].' </p> </td> </tr>'; } echo '</table>'; if($start > 0) { echo '<div style="float:left"> <a href="?start='.($start - 5).'">ENTRADAS RECIENTES</a> </div>'; } if(($start + 5) <= $n) { echo '<div style="align:right"> <a href="?start='.($start + 5).'">ENTRADAS ANTERIORES</a> </div>'; }?>
Hernesto, SixLima, Shakaran gracias a todos una vez mas veloces y precisos.
Este finde intentare sacar un rato y hacer un tutorial de esto, que una vez lo consigues parece fácil pero he sudado sangre para llegar a esto.