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

CodeIgniter No me deja mostrar resultados de la consulta con AR

Estas en el tema de No me deja mostrar resultados de la consulta con AR en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos Tengo un problema con las consultas (seguro bastante newbie). Aunque puedo efectuar correctamente la consulta, siempre al mostrarla desde el controlador me ...
  #1 (permalink)  
Antiguo 07/09/2012, 13:34
 
Fecha de Ingreso: septiembre-2012
Ubicación: En un planeta llamado tierra
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta No me deja mostrar resultados de la consulta con AR

Hola a todos

Tengo un problema con las consultas (seguro bastante newbie).
Aunque puedo efectuar correctamente la consulta, siempre al mostrarla desde el controlador me dice que no existe. Por supuesto, es igual con la vista.

Acá el modelo 'anecdotas_model.php'
Código:
<?php

class Anecdotas_model extends CI_Model {

	//constructor del modelo
    function __construct()
    {
        parent::__construct();
    }
	function muestra_anecdotas_orden($inicio){
	        
	  $this->db->order_by('anec_fecha_hora'); 
	  $this->db->limit(10, $inicio);	  
	  $consulta = $this->db->get('anecdotas');  
			 
		 if ($consulta->num_rows() > 0){		 
			return $consulta; //1 o más
		    
		 }       
   }//FIN DE LA FUNCION
   }
  
?>
Y acá el controlador 'welcome.php'

Código:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

	public function index()
	{
		$indice = 0;

		//carga instrucciones de consulta
		$this->load->model('Anecdotas_model');
				
		//carga 10 anecdotas a partir de x		
		$resultado = $this->Anecdotas_model->muestra_anecdotas_orden($indice);

		//carga la web: inicio
		$this->load->view('ini_template.php');				
		
		//si existe un resultado = TRUE
		if($resultado){
			
		//carga la web: contenido
		$this->load->view('contents', $resultado); 
						
		}//fin del if
		
		else
		{
			$this->load->view('nothing');		
		}
				
		//carga la web: pie
		$this->load->view('end_template.php');		
	}
}/* End of file welcome.php */
Y finalmente la vista 'contents.php'

Código:
	<div class="col9">

		<?php
			
		foreach ($resultado->result() as $row) 
		{ 
			$numero = $row->anec_id;			
			$texto = $row->anec_texto;
			$categoria = $row->anec_categoria;		
		?>
		
		<!-- codigo html -->
			<div class="anecdota">
			<p> Número: <?php echo $numero;  ?></p>
			<p> Texto: <b class="light"><?php echo $texto;  ?></b></p>
			<p> Categoría: <b class="light"><?php echo $categoria;  ?></b></p>		
			</div>
		
		<?php		
		}//fin del foreach
		?>
	
		<!-- FIN DE LAS ANECDOTAS -->
		</div>
Mi problema es que la variable $resultado siempre esta indefinida en la vista.

Cita:
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: resultado

Filename: views/contents.php

Line Number: 6
¿Alguien sabe que estoy haciendo mal?
  #2 (permalink)  
Antiguo 07/09/2012, 14:09
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 7 meses
Puntos: 87
Respuesta: No me deja mostrar resultados de la consulta con AR

Hola,

Estas pasando mal los datos a la vista, debería ser algo así:

Código PHP:
Ver original
  1. $datos = array(
  2.     'resultado' => $resultado
  3. );
  4. $this->load->view('contents', $datos);

Revisa la documentación.

Saludos.
  #3 (permalink)  
Antiguo 07/09/2012, 15:40
 
Fecha de Ingreso: septiembre-2012
Ubicación: En un planeta llamado tierra
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: No me deja mostrar resultados de la consulta con AR

Pero sigo con el problema, ¿Como acceso a los datos para imprimirlos desde la vista?

Si no me equivoco lo que hago con ese ultimo cambio es meter el objeto en un array ANTES de enviarlo a la vista.

Código:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

	public function index()
	{
		$indice = 0;

		//carga instrucciones de consulta
		$this->load->model('Anecdotas_model');
				
		//carga 10 anecdotas a partir de x		
		$resultado = $this->Anecdotas_model->muestra_anecdotas_orden($indice);

		//carga la web: inicio
		$this->load->view('ini_template.php');				
		
		//si existe un resultado = TRUE
		if($resultado){
			
		//aquí con el cambio, paso los datos de $resultado a $datos
		$datos = array('resultado' => $resultado);
		
		//carga la web: contenido
		$this->load->view('contents', $datos); 
						
		}//fin del if
		
		else
		{
			$this->load->view('nothing');		
		}
				
		//carga la web: pie
		$this->load->view('end_template.php');		
	}
}/* End of file welcome.php */
Luego cambio un poco la vista para que use $datos

Código:
	<!--- contenedor anecdotas -->
	<div class="col9">

		<?php
			
               //ACA EL CAMBIO
		foreach ($datos->result() as $row) 
		{ 
			$numero = $row->anec_id;			
			$texto = $row->anec_texto;
			$categoria = $row->anec_categoria;		
		?>
		
		<!-- codigo html -->
			<div class="anecdota">
			<p> Número: <?php echo $numero;  ?></p>
			<p> Texto: <b class="light"><?php echo $texto;  ?></b></p>
			<p> Categoría: <b class="light"><?php echo $categoria;  ?></b></p>		
			</div>
		
		<?php		
		}//fin del foreach
			?>
	
		<!-- FIN DE LAS ANECDOTAS -->
		</div>
Si lo dejo así, sigue dando error porque no puedo accesar a la variable datos, dice que no existe en la vista.

Cita:
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: datos

Filename: views/contents.php

Line Number: 6

Fatal error: Call to a member function result() on a non-object in C:\xampp\htdocs\application\views\contents.php on line 6
Todavía me falta algo
  #4 (permalink)  
Antiguo 07/09/2012, 16:12
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 7 meses
Puntos: 87
Respuesta: No me deja mostrar resultados de la consulta con AR

¿Leíste la documentación?

al pasar los datos así:

Código PHP:
Ver original
  1. $datos = array(
  2.     'resultado' => $resultado,
  3.     'foo'           => 'bar';
  4. );
  5. $this->load->view('contents', $datos);

En la vista los lees con el valor que pusiste a los indices.

VISTA
Código PHP:
Ver original
  1. foreach ($resultado->result() as $row) {
  2.     //código
  3. }
  4. //para foo
  5. echo $foo;

Saludos.
  #5 (permalink)  
Antiguo 07/09/2012, 16:41
 
Fecha de Ingreso: septiembre-2012
Ubicación: En un planeta llamado tierra
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 0
De acuerdo Respuesta: No me deja mostrar resultados de la consulta con AR

Gracias quike
Al final, me entonces quedo así
Código:
	<!--- contenedor anecdotas -->
	<div class="col9">

		<?php
			
		foreach ($resultado as $row) 
		{ 
			$numero = $row['anec_id'];
			$texto = $row['anec_texto'];
			$categoria = $row['anec_categoria'];		
		?>
		
		<!-- codigo html -->
			<div class="anecdota">
			<p> Número: <?php echo $numero;  ?></p>
			<p> Texto: <b class="light"><?php echo $texto;  ?></b></p>
			<p> Categoría: <b class="light"><?php echo $categoria;  ?></b></p>		
			</div>
		
		<?php		
		}//fin del foreach
			?>
	
		<!-- FIN DE LAS ANECDOTAS -->
		</div>

Etiquetas: controladores, modelos, vistas
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 02:28.