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

fetchAll -> mysql_fetch_object ?

Estas en el tema de fetchAll -> mysql_fetch_object ? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola A todos De nuevo complicado con algunas cosas, tengo un controlador articulos, un modelo articulos y una clase db que gestiona las consultas a ...
  #1 (permalink)  
Antiguo 27/01/2010, 09:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta fetchAll -> mysql_fetch_object ?

Hola A todos

De nuevo complicado con algunas cosas, tengo un controlador articulos, un modelo articulos y una clase db que gestiona las consultas a la bd.

Desde el controlador articulos llamo al metodo fetchAll del modelo donde este hace una query a la bd, en este caso quiero que los resultados me los devuelva en un objeto por ende pense en utilizar la funcion mysql_fetch_object pero resulta que cuando recorro el resultset con mysql_fetch_object y lo guardo en un array me redirecciona al index(login) cosa que no se porque la hace en vez de mostrarme los resultados en el view articulos, y cuando los guardo en un objeto stdClass me devuelve solo 1 fila.

la idea es la siguiente :

controller

$this->view->articulos = $this->_model->fetchAll();

view

foreach ($this->articulos as $articulo)
{
echo $articulo->id;
echo $articulo->descripcion;
echo $articulo->precio;
}

espero que alguien me ayude o me indique como debiera hacer este proceso.
  #2 (permalink)  
Antiguo 27/01/2010, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: fetchAll -> mysql_fetch_object ?

Pues si pones el método fetchAll es más probable que te podamos ayudar ya que por lo que indicas no podemos ver en donde esta el problema.

Saludos.
  #3 (permalink)  
Antiguo 27/01/2010, 09:46
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: fetchAll -> mysql_fetch_object ?

fetchAll

Código:
				
$query = 'SELECT * FROM dbTable';

				$rs= $this->db->query($query);  
					
					if ($this->db->numRows($rs) > 0)
					{
							return $this->db->fetch_object($rs);
							
					}
db.query
Código:
if ($resultSet = mysql_query($sqlQuery, $this->idConnection)){ //si se ejecuto exitosamente la query la retorno
			$this->lastResultQuery = $resultSet;
			return $resultSet;
db.fetch

Código:
	public function fetch($resultSet, $type='')
	{
		($type==='') ? $this->type = db::DB_BOTH : $this->type = $type;
		
		if (!$this->idConnection){
			$this->connect_db();
				if (!$this->idConnection){
					return false;
				}
		}
		
		if (!$resultSet){
			$resultSet = $this->lastResultQuery;
			if (!resultSet)
			{
				return false;
			}
		}
		return $this;
	}
db.fetch_object

Código:
	public function fetch_object($resultSet=''){

		if(!$this->idConnection){
			return false;
		}
		if(!$resultSet){
			$resultSet = $this->lastResultQuery;
			if(!$resultSet){
				return false;
			}
		}
		
		$data = new stdClass();
		
		while ($rowSet = mysql_fetch_object($resultSet))
		{
			$data = $rowSet;
		}

		return $data;		

	}
  #4 (permalink)  
Antiguo 27/01/2010, 10:34
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: fetchAll -> mysql_fetch_object ?

A lo que veo tu problema es que la variable $data en fetch_object la sobrescribes cada ciclo. Haz esto:

Código PHP:
Ver original
  1. public function fetch_object($resultSet=''){
  2.  
  3.         if(!$this->idConnection){
  4.             return false;
  5.         }
  6.         if(!$resultSet){
  7.             $resultSet = $this->lastResultQuery;
  8.             if(!$resultSet){
  9.                 return false;
  10.             }
  11.         }
  12.        
  13.         $data = array();
  14.        
  15.         while ($rowSet = mysql_fetch_object($resultSet))
  16.         {
  17.             $data[] = $rowSet;
  18.         }
  19.  
  20.         return $data;      
  21.  
  22.     }

Un tip: trata de usar la etiqueta Highlight = php para que sea mas legible el codigo.
__________________
I see dead pixels
  #5 (permalink)  
Antiguo 27/01/2010, 10:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: fetchAll -> mysql_fetch_object ?

Tu problema esta en tu while estas sobreescribiendo la variable, tienes que hacer algo así:
Código PHP:
Ver original
  1. $data = array();
  2.        
  3.         while ($rowSet = mysql_fetch_object($resultSet))
  4.         {
  5.             $data[] = $rowSet;
  6.         }
  7.  
  8.         return $data;

Saludos.
  #6 (permalink)  
Antiguo 27/01/2010, 17:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: fetchAll -> mysql_fetch_object ?

Perdón la intromisión.
Estas utilizando zend framework, no?

No es mas fácil utilizar el método fetchall() extendiendo el Zend_Db_Table_Abstract ?
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 05:01.