Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

A vueltas con un arreglo de objetos

Estas en el tema de A vueltas con un arreglo de objetos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos/as Estoy en la tesitura de los arreglos de objetos en Php y me vuelve un poco loco, os explico detalladamente y con ...
  #1 (permalink)  
Antiguo 11/09/2011, 02:18
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 6 meses
Puntos: 1
A vueltas con un arreglo de objetos

Hola a todos/as

Estoy en la tesitura de los arreglos de objetos en Php y me vuelve un poco loco, os explico detalladamente y con codigo.

En un layaut obtengo un arreglo de objetos, desde la clase stdClass(), que es la que se utiliza ahora bien solo puedo manejar dichos objetos con el foreach, en cuanto intento utilizar un while(){}, se me enbucla y no termina nunca.

Recibo el arreglo de objetos en "$this->poblaciones", si relizo un var_dump, me devuelve esto pero mucho mas largo:

Cita:
{ [0]=> object(stdClass)#292 (4) { ["id_poblacion"]=> string(1) "1" ["id_ciudad"]=> string(1) "1" ["ciudad"]=> string(6) "MADRID" ["poblacion"]=> string(8) "ACEDINOS" }
Nota este el primer elemento del arreglo de objetos de 252 en total.

Esto lo imprimo en pantalla con el siguiente codigo html, pero me sale una lista de 252 poblaciones claro

Código HTML:
<table></tr>
<?php foreach($this->poblaciones as $poblacion):?>
  <tr>
    <td><?php //echo $poblacion->id_poblacion;?></td>
    <td><a href=<?php
    //Aqui ponemos enlace a la siguiente vista
    echo 'index.php?mostrarPoblacion&id_poblacion='.$poblacion->id_poblacion);?>><?php echo $poblacion->poblacion;?></a></td>

  </tr>
 <?php endforeach; ?>
</table> 
Como puedo hacer para generar una tabla con n columnas y las filas que salieran he intentado construirla con un while como el que os muestro, pero ya os digo que se embucla, no termina nunca:

Código PHP:
<?php



echo "<table width='100%'  width='200' border='0' bordercolor='#CCCCCC' cellpadding='0' cellspacing='0'>";
  
  
$numcolumnas 2;

// Aqui cuento el total de elementos del arreglo de objetos
$total_resultados count ($this->poblaciones);

// Sacamos el numero total de filas de la consulta
 

  
if ($total_resultados>0) {

  
$i 1;
  while(
$fila $this->poblaciones){
  
$resto = ($i $numcolumnas);
  if(
$resto == 1){ /*si es el primer elemento creamos una nueva fila*/
  
echo "<tr>";
  }

 echo 
"<td align='left'><a href='".$fila4['poblacion'].".php' title='".$fila3['poblacion']."'> <strong>".$fila3['poblacion']."</strong></a></td>";/*mostramos el valor del campo especificado*/
  
if($resto == 0){/*cerramos la fila*/
  
echo "</tr>";
  }
  
$i++;
  }
 if(
$resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/
  
for ($j 0$j < ($numcolumnas $resto); $j++){
  echo 
"<td></td>";
  }
  echo 
"</tr>";
  }
  }else{
  echo 
"<tr><td>0 elementos encontrados</td></tr> ";
  }
  
  echo
"</table>";

?>
Haber si alguien me da una idea de como encaminar esto por que estoy atascado y la POO de php con objetos y tal ando un poco perdido.

Saludos y gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 11/09/2011, 15:33
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 6 meses
Puntos: 1
Solucionado: A vueltas con un arreglo de objetos

Cita:
Iniciado por marco_s Ver Mensaje
Hola a todos/as

Estoy en la tesitura de los arreglos de objetos en Php y me vuelve un poco loco, os explico detalladamente y con codigo.

En un layaut obtengo un arreglo de objetos, desde la clase stdClass(), que es la que se utiliza ahora bien solo puedo manejar dichos objetos con el foreach, en cuanto intento utilizar un while(){}, se me enbucla y no termina nunca.

Recibo el arreglo de objetos en "$this->poblaciones", si relizo un var_dump, me devuelve esto pero mucho mas largo:



Nota este el primer elemento del arreglo de objetos de 252 en total.

Esto lo imprimo en pantalla con el siguiente codigo html, pero me sale una lista de 252 poblaciones claro

Código HTML:
<table></tr>
<?php foreach($this->poblaciones as $poblacion):?>
  <tr>
    <td><?php //echo $poblacion->id_poblacion;?></td>
    <td><a href=<?php
    //Aqui ponemos enlace a la siguiente vista
    echo 'index.php?mostrarPoblacion&id_poblacion='.$poblacion->id_poblacion);?>><?php echo $poblacion->poblacion;?></a></td>

  </tr>
 <?php endforeach; ?>
</table> 
Como puedo hacer para generar una tabla con n columnas y las filas que salieran he intentado construirla con un while como el que os muestro, pero ya os digo que se embucla, no termina nunca:

Código PHP:
<?php



echo "<table width='100%'  width='200' border='0' bordercolor='#CCCCCC' cellpadding='0' cellspacing='0'>";
  
  
$numcolumnas 2;

// Aqui cuento el total de elementos del arreglo de objetos
$total_resultados count ($this->poblaciones);

// Sacamos el numero total de filas de la consulta
 

  
if ($total_resultados>0) {

  
$i 1;
  while(
$fila $this->poblaciones){
  
$resto = ($i $numcolumnas);
  if(
$resto == 1){ /*si es el primer elemento creamos una nueva fila*/
  
echo "<tr>";
  }

 echo 
"<td align='left'><a href='".$fila4['poblacion'].".php' title='".$fila3['poblacion']."'> <strong>".$fila3['poblacion']."</strong></a></td>";/*mostramos el valor del campo especificado*/
  
if($resto == 0){/*cerramos la fila*/
  
echo "</tr>";
  }
  
$i++;
  }
 if(
$resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/
  
for ($j 0$j < ($numcolumnas $resto); $j++){
  echo 
"<td></td>";
  }
  echo 
"</tr>";
  }
  }else{
  echo 
"<tr><td>0 elementos encontrados</td></tr> ";
  }
  
  echo
"</table>";

?>
Haber si alguien me da una idea de como encaminar esto por que estoy atascado y la POO de php con objetos y tal ando un poco perdido.

Saludos y gracias por vuestro tiempo.
El truco esta en esto

echo $variable['indice']->campo;

Etiquetas: clase, objetos, php, tabla, arreglos
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 09:38.