Mostrar contenido de un objeto que se encuantra en un array

  • Autor Autor fais
  • Fecha de inicio Fecha de inicio
F

fais

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola, os cuento mi problema, hago 5 consultas a la base de datos que me devuelve una fila cada una en forma de objeto, y esa fila la agrego a una array, al final tengo un array con 5 objetos dentro, eso lo mando a la vista y todo correcto, el problema es al mostrarlo, no se recorrer el array montrandome el contenido de los objetos, y por mas que pruebo no doy con la tecla, alguine pude darme una pista por favor....

Gracias
 
¿Te sirvió? Únete a la conversación

Con tu cuenta gratis puedes responder, escribirle al autor por mensaje privado y comprar con Saldo retenido: el pago se libera cuando recibes lo acordado.

Toma 30 segundos · vuelves a este tema al terminar
para eso creo que un for es mejor, pero solo recorro el array...
 
PHP:
<?php
$variable_array[0] = (object) array(
          'casa' => 'madera', 'puerta' => 'madera'
          );
$variable_array[1] = (object) array(
          'casa' => 'ladrillos', 'puerta' => 'chapa'
          );

// recorres cada indice del array
foreach ($variable_array as $variable ) {
    echo $variable->casa . '<br>';
}
?>


Esto te sirve? (https://paiza.io/projects/7ZraiCalJ0dBm65lkWt3kA)
 
Como dice [MENTION=83163]TonchitoZ[/MENTION] deberás usar un foreach(), esto te permitirá recorrer el array completamente y poder usar los objetos de forma individual.
 
Ese codigo me arroja el siguente mensaje: Undefined property: CI_DB_mysql_result::$titulo
cuando el campo si que existe en la base de datos, te muestro como hago mi llamamiento a la base de datos:

PHP:
foreach ($id_aleatorios as $row) {
                $query = $this->db->query(' SELECT * FROM noticias where id_desa=' . $row . ' ORDER BY fecha_creacion DESC LIMIT 1');
                if ($query->num_rows() > 0) {
                    $array2[] = $query;
                }
              
            }

ese foreach se repite 5 veces, almacenado las cinco consultas en un array, a continuación le muestro como esta compuesto mi array justo usando el codigo que me mostro anteriormente:

imagen_codigo.webp
 
Lo que pasa es que lo estás guardando mal, lo que tu estás guardando es el objeto mysqli_result en vez de los registros.
Debería ser algo como:
PHP:
	$query = $this->db->query(' SELECT * FROM noticias where id_desa=' . $row . ' ORDER BY fecha_creacion DESC LIMIT 1');
	if ($query->num_rows() > 0) {
		while($reg = $query->fetch_assoc())	$array2[] = $reg;
	}
 
Última edición:
Gracias por fin lo consegui, adpate loq ue me distes a codeigniter y quedó así.
PHP:
if ($query->num_rows() > 0) {
                    foreach($query->result_array() as $row) { 
                            $array2[] = $row;
                    }
                }

Lo unico que ya tenia un arrays dentro de otro, no muchos objetos dentro de un array, pero me dio igual cambie la forma de mostarlo y punto:

PHP:
foreach ($noticias_destacadas as $key) {
       echo $key['id_desa']. '<br>';
   }

Muchas gracias a todo y dejo ahi la solución por si le es util a alguien 😉
 
Cuando se trata de la devolucion de un solo registro (con CodeIgniter) yo recurro a la funcion row() que lo que hace es devolverte en forma de objeto el resultado y no necesitas el for 😉

Es un proceso menos que te evitas. Quedaria de la siguiente manera:

PHP:
foreach ($id_aleatorios as $row) {
                $query = $this->db->query('SELECT * FROM noticias where id_desa=' . $row . ' ORDER BY fecha_creacion DESC LIMIT 1');
                if ($query->num_rows() > 0) 
                      $array2[] = $query->row();              
            }


Entonces te quedaría $array2[0]->id_desa ponele.


Yo igual lo emplorijaria metiendo todo en un modelo y realizando la siguiente consulta:
PHP:
function getNoticia($id) {
        $query = $this->db->query('SELECT * FROM noticias where id_desa=' . $id . ' ORDER BY fecha_creacion DESC LIMIT 1');
        if ($query->num_rows() == 1)
            return $query->row();
        return NULL;
    }

Y te va a devolver NULL o la fila encontrada 😉 . Es para ser un poquito mas ordenado nada mas :encouragement:
 
Atrás
Arriba