Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2009, 05:51
Vendetta
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 5
Problema con array_shift

Buenas!

Estoy preparando una web y no se me ha podido ocurrir un diseño mas dificil xD necesito imprimir la ultima noticia en un sitio, y el resto mas abajo...un amigo me dijo que podia usar el array_shift que cogia el primer resultado de un array pero ordenando por DESC en la consulta pues me cogeria el "ultimo".

Hasta aqui bien e incluso al principio me funcionaba pero meti la lista en un while para imprimir las 3 ultimas noticias y el array_shift ahora no me funciona.

Código sql:
Ver original
  1. SELECT
  2.             n.titulo tit_not,
  3.             n.content,
  4.             n.autor,
  5.             n.fecha,
  6.             n.views,
  7.             n.category,
  8.             nc.imagen,
  9.             COALESCE(COUNT(c.id), 0) total
  10.         FROM fan_noticias n
  11.         JOIN fan_categorias nc ON n.category = nc.titulo
  12.         LEFT JOIN fan_comentarios c ON n.id = c.not_id
  13.         GROUP BY n.id
  14.         ORDER BY n.fecha DESC
  15.         LIMIT 4

He puesto LIMIT 4, imagino que si array_shift quita 1 resultado del array, el while deberia imprimir 3, no 4, no? Aunque esto ultimo es mas bien algo que supongo yo, porque no me funciona xD Dejo la parte del codigo hecho:

Código php:
Ver original
  1. if( $res !== false ) {
  2.     $noticias = array();
  3.     while( $row = mysql_fetch_assoc($res) ) {
  4.         $noticias[] = $row;
  5.     }
  6.     $ultima = array_shift($res);
  7. } else {
  8.     $vacio = "No hay noticias.";
  9. }

La variable $noticias si es un array con resultados ya que el while si que me funciona, imprime las 3 unicas noticias que tengo creadas, lo unico que no funciona es la funcion array_shift, que no devuelve nada. He hecho un print_r de la variable que contiene este resultado y esta vacio. Solo me muestra un error al principio de la pagina:

Tambien dejare la parte del codigo que muestra la ultima noticia por si acaso hago mal ahí o yo que se..

Código html:
Ver original
  1. <!-- Top Story -->
  2.             <div id="topstory" class="box">
  3.                
  4.                 <div id="topstory-img"><img src="<?=$ultima['imagen']?>" width="250" height="180" alt="" /></div> <!-- /topstory-img -->
  5.                
  6.                 <div id="topstory-desc">
  7.                
  8.                     <div id="topstory-title">
  9.                    
  10.                         <h2><a href="#"><?=$ultima['tit_not']?></a></h2>
  11.                    
  12.                         <p class="info"><strong>Autor:</strong> <a href="#"><?=$ultima['autor']?></a> &nbsp;&nbsp;
  13.                         <strong>Fecha:</strong> <?=$ultima['fecha']?> &nbsp;&nbsp;
  14.                         <strong>Categoria:</strong> <a href="#"><?=$ultima['category']?></a>
  15.                         </p>
  16.                        
  17.                     </div> <!-- /topstory-title -->
  18.  
  19.                     <div id="topstory-desc-in">                    
  20.                    
  21.                         <p><?=$ultima['content']?></p>                        
  22.  
  23.                     </div> <!-- /topstory-desc-in -->
  24.                    
  25.                     <div id="topstory-title">
  26.                         <p class="info">
  27.                             <strong><a href="#"><?=$ultima['total']?> Comentarios</a></strong> &nbsp;&nbsp;
  28.                             <strong><?=$ultima['views']?> Visitas</strong></p>
  29.                     </div> <!-- /topstory-title -->
  30.                    
  31.                 </div> <!-- /topstory-desc -->
  32.                
  33.             </div> <!-- /topstory -->

Espero que podais ayudarme...si falta algo por especificar, avisadme. He probado poniendo la variable $ultima dentro de while (si por probar que no quede xD) pero me decia lo mismo.

Saludos y Gracias (:

Última edición por Vendetta; 30/04/2010 a las 16:35