Foros del Web » Programando para Internet » PHP »

Ordenar foreach de manera inversa

Estas en el tema de Ordenar foreach de manera inversa en el foro de PHP en Foros del Web. Buenas a todos; Veréis, tengo este código que me saca un listado de noticias relacionadas con un evento. Eso lo hace perfecto, pero me aparecen ...
  #1 (permalink)  
Antiguo 23/09/2011, 03:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Ordenar foreach de manera inversa

Buenas a todos;

Veréis, tengo este código que me saca un listado de noticias relacionadas con un evento. Eso lo hace perfecto, pero me aparecen primero las noticias más antiguas, y en último lugar las más recientes.

¿Alguien sabe cómo puedo modificar este script para que muestre primero las más nuevas?


Código PHP:
 <?php if ( $evento->countNoticiass() != ): ?>
            <div id="noticias_eventos" class="tab_content">
                <p class="rojo_contacto_titulo_seccion"><?php echo __('Noticias'); ?></p>
                <?php foreach( $evento->getNoticiass() as $noticia ): ?>
                    <?php include_partial'noticias/breveNoticia', array( 'noticia' => $noticia'class' => '' ) ); ?>
                <?php endforeach; ?>
            </div><!--cerramos noticias-->
Muchas gracias a todos y un saludo!
  #2 (permalink)  
Antiguo 23/09/2011, 03:42
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 1 mes
Puntos: 31
Respuesta: Ordenar foreach de manera inversa

Proba con arsort antes del foreach
Código:
arsort($evento->getNoticiass());
  #3 (permalink)  
Antiguo 23/09/2011, 03:48
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Respuesta: Ordenar foreach de manera inversa

Gracias Cachusan;

Lo he probado pero nada, lo sigue ordenando igual que antes...

A ver si lo sacamos.

Saludos!
  #4 (permalink)  
Antiguo 23/09/2011, 03:53
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 1 mes
Puntos: 31
Respuesta: Ordenar foreach de manera inversa

podes mostrarnos la salida de $evento->getNoticiass() para ver la estructura, asumí que era un array.
  #5 (permalink)  
Antiguo 23/09/2011, 03:57
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Respuesta: Ordenar foreach de manera inversa

Muy buenas;

Este es el código completo de la página, no se si será esto a lo que te refieres

Código PHP:
<div id="informacion">
<div id="slider1" class="nivoSlider">
    <img src="<?php echo image_path'/uploads/eventos/' $evento->getImagen3() ); ?>" alt="<?php echo $evento->getTitulo()  ?>" />
</div><!--cerramos slider-->
<div id="contenido_submenus">
    <ul class="tabs">
        <?php if ( trimstrip_tags$evento->getResultados() ) ) != '' && $evento->getEstadoEventoId() == ): ?><li id="resultados_ajax"><a href="#resultados" title="<?php echo __('Resultados'); ?>" class="botonera_zona_eventos"><?php echo __('Resultados'); ?></a></li><?php endif; ?>
        <?php if ( trimstrip_tags$evento->getFechasHorarios() ) ) != '' ): ?><li id="fecha_horarios_eventos_ajax"><a href="#fecha_horarios" title="<?php echo __('Fecha y horarios'); ?>" class="botonera_zona_eventos"><?php echo __('Fecha y horarios'); ?></a></li><?php endif; ?>
        <?php if ( $evento->countNoticiass() != ): ?><li id="noticias_eventos_ajax"><a href="#noticias_eventos" title="<?php echo __('Noticias'); ?>" class="botonera_zona_eventos"><?php echo __('Noticias'); ?></a></li><?php endif; ?>
        <?php if ( trimstrip_tags$evento->getInformacion() ) ) != '' ): ?><li id="mas_info_ajax"><a href="#mas_info" title="<?php echo __('+ Información'); ?>" class="botonera_zona_eventos"><?php echo __('+ Información'); ?></a></li><?php endif; ?>
        <?php if ( trimstrip_tags$evento->getVentaEntradas() ) ) != '' && $evento->getEstadoEventoId() == ): ?><li id="entradas_ajax"><a href="#entradas" title="<?php echo __('Venta de entradas'); ?>" class="botonera_zona_eventos"><?php echo __('+ Información'); ?></a></li><?php endif; ?>
    </ul>

<div class="tab_container">
    
    <?php if ( trimstrip_tags$evento->getResultados() ) ) != '' && $evento->getEstadoEventoId() == ): ?>
        <div id="resultados" class="tab_content"><?php echo $evento->getResultados() ?></div>
    <?php endif; ?>

    <?php if ( trimstrip_tags$evento->getFechasHorarios() ) ) != '' ): ?>
    <div id="fecha_horarios" class="tab_content"><?php echo $evento->getFechasHorarios() ?></div>
    <?php endif; ?>

    <?php if ( $evento->countNoticiass() != ): ?>
            <div id="noticias_eventos" class="tab_content">
                <p class="rojo_contacto_titulo_seccion"><?php echo __('Noticias'); ?></p>
                <?php foreach( $evento->getNoticiass() as $noticia ): ?>
                    <?php include_partial'noticias/breveNoticia', array( 'noticia' => $noticia'class' => '' ) ); ?>
                <?php endforeach; ?>
            </div><!--cerramos noticias-->
    <?php endif; ?>

    <?php if ( trimstrip_tags$evento->getInformacion() ) ) != '' ): ?>    
        <div id="mas_info" class="tab_content"><?php echo $evento->getInformacion() ?></div>
    <?php endif; ?>

    <?php if ( trimstrip_tags$evento->getVentaEntradas() ) ) != '' && $evento->getEstadoEventoId() == ): ?>    
        <div id="entradas" class="tab_content"><?php echo $evento->getVentaEntradas() ?></div>
    <?php endif; ?>
    
</div><!--cerramos tab_container-->


</div><!--cerramos contenido submenus-->
<?php include_partial'default/patrocinadores', array( 'class' => 'patrocinadores2' ) ) ?>
</div><!--cerramos informacion-->
  #6 (permalink)  
Antiguo 23/09/2011, 04:24
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Ordenar foreach de manera inversa

Ese NO es el código completo de la página... xD

Básicamente, se refiere a la clase "evento"... probablemente, para comprobar el método getNoticiass para ver como las obtiene :)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 23/09/2011, 04:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Respuesta: Ordenar foreach de manera inversa

Disculpas, como habréis podido ver mis conocimientos de php no son muy avanzados, solo alguna cosa que trasteo.

Es una página hecha en symfony, si puedes concretarme algo más que es lo que necesitas estaré encantado de buscarlo.

Un saludo y muchas gracias;
  #8 (permalink)  
Antiguo 23/09/2011, 04:42
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Ordenar foreach de manera inversa

Que tal mnieto,

Postea el código de Evento::getNoticias(o como se llame la clase), seguramente tengas que agregar/cambiar el order by al dql.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 23/09/2011, 04:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Respuesta: Ordenar foreach de manera inversa

Espero sue sea ésto a lo que os referís.

Gracias de nuevo y disculpad por la ignorancia.

Código PHP:
<?php

/**
 * eventos actions.
 *
 * @package    circuito
 * @subpackage eventos
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class eventosActions extends sfActions
{
 
/**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  
public function executeIndex(sfWebRequest $request)
  {
  }
   public function 
executeFia(sfWebRequest $request)
  {
  }

  public function 
executeListado(sfWebRequest $request)
   {
    
# Obtenemos todos los eventos
    
$c = new Criteria;
    
$c->addEventosPeer::ESTADO_EVENTO_ID$request->getParameter('tipo') );
    
$c->addEventosPeer::VISIBLE);
    
$c->addEventosPeer::TIPO_EVENTO_ID);
    if( 
$request->getParameter('tipo') == )
     
$c->addAscendingOrderByColumnEventosPeer::FECHA );
    else
     
$c->addDescendingOrderByColumnEventosPeer::FECHA );
    
$this->eventos EventosPeer::doSelect$c );
   }

 public function 
executeDetalles(sfWebRequest $request)
  {
    
# Si no llega el id o no llega el slug devolvemos error
    
$this->forward404If$request->getParameter('id') == '' || $request->getParameter('slug') == '' || !ctype_digit( (string)$request->getParameter('id') ) );
    
    
# Obtenemos los detalles del evento
    
$this->evento EventosPeer::retrieveByPk$request->getParameter('id') );
    
    
# Si no existe el contenido o esta invisible
    
$this->forward404If( !$this->evento || $this->evento->getVisible() != );
    
    
# Si el slug no coincide con el que llega por la url lo redirigimos
    
$this->redirectIf$this->evento->getSlug() != $request->getParameter('slug'), '@detallesEvento?slug=' $this->evento->getSlug() . '&id=' .$this->evento->getId() );
    
    
# Cambiamos el titulo de la pagina
    
$this->getResponse()->setTitle'Evento: ' $this->evento->getTitulo() );
  }
}
  #10 (permalink)  
Antiguo 23/09/2011, 05:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Ordenar foreach de manera inversa

Ufff, creando queries en el controller , pero bueno, según el código que expones lo estas ordenado por la fecha y por defecto de forma descendente, estas pasando el parametro tipo con valor 1 en el request ?, porque si es el caso te lo va a ordenar de forma ascendente...


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 23/09/2011, 05:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 2
Respuesta: Ordenar foreach de manera inversa

El listado de los eventos me lo hace bien, lo que hace mal es cuando entras a un evento, aparecen las noticias ordenadas a la inversa, la página que modifico se llama detallesSuccess.php, y me imagino que tendré que modificar algo en este código:

Código PHP:
 public function executeDetalles(sfWebRequest $request)
  {
    
# Si no llega el id o no llega el slug devolvemos error
    
$this->forward404If$request->getParameter('id') == '' || $request->getParameter('slug') == '' || !ctype_digit( (string)$request->getParameter('id') ) );
    
    
# Obtenemos los detalles del evento
    
$this->evento EventosPeer::retrieveByPk$request->getParameter('id') );
    
    
# Si no existe el contenido o esta invisible
    
$this->forward404If( !$this->evento || $this->evento->getVisible() != );
    
    
# Si el slug no coincide con el que llega por la url lo redirigimos
    
$this->redirectIf$this->evento->getSlug() != $request->getParameter('slug'), '@detallesEvento?slug=' $this->evento->getSlug() . '&id=' .$this->evento->getId() );
    
    
# Cambiamos el titulo de la pagina
    
$this->getResponse()->setTitle'Evento: ' $this->evento->getTitulo() );
  }

  #12 (permalink)  
Antiguo 23/09/2011, 05:28
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Ordenar foreach de manera inversa

Ahí buscas el evento, tienes que postear el código del modelo, el metodo Evento::getNoticias o como se llame la clase, postea el código del modelo.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: arrays, foreach
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 17:37.