Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Recorrer array fuera de la clase.

Estas en el tema de Recorrer array fuera de la clase. en el foro de PHP en Foros del Web. Hola a todos, hace unos días que necesito realizar unas tareas con PHPOO. La verdad es que no encuentro la forma de como hacerlo de ...
  #1 (permalink)  
Antiguo 15/02/2013, 18:23
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Recorrer array fuera de la clase.

Hola a todos, hace unos días que necesito realizar unas tareas con PHPOO. La verdad es que no encuentro la forma de como hacerlo de la manera que quiero.

Separando totalmente el diseño del código. La idea es recorrer el array que retorna un método de una clase, dejo un poco de código para que os situéis.

Código HTML:
<table>
	<tr>
		<td>ID</td>
		<td>Nombre</td>
	</tr>

	<tr>
		<td>1</td>
		<td>Pepe</td>
	</tr>
	<tr>
		<td>2</td>
		<td>Jose</td>
	</tr>
</table> 
No es la tabla verdadera pero es para ir al grano.

Ahora tengo una clase y dentro un método (es como lo tengo ahora. Estoy probando haber si lo consigo ):

Código PHP:
class Pedidos{
        
    public function 
pedido(){
        
$db Conexion::datos();
        
$cliente $_SESSION["usuario"];
        
$consulta "SELECT * FROM pedido WHERE cliente = '$cliente'";
        
$resultado $db->query($consulta);
        return 
$resultado->fetch_assoc();
    }


Y para no hacer esto:

Código PHP:
public function pedido(){
        
$db Conexion::datos();
        
$cliente $_SESSION["usuario"];
        
$consulta "SELECT * FROM pedido WHERE cliente = '$cliente'";
        
$resultado $db->query($consulta);
        
$fetch $resultado->fetch_assoc();
            while (
$pedido $resultado->fetch_assoc()){
                echo 
"
            <tr>
            <td id='contenidotabla'>
                <b>"
.$pedido['ID']."</b>
            </td>
            <td id='contenidotabla'>
                <b>"
.$pedido['Nombre']."</b>
            </td>

        </tr>"
;
            }
        return 
false;
    } 
He intentado con el primer método hacer esto:

Código HTML:
<table>
	<tr>
		<td>ID</td>
		<td>Nombre</td>
	</tr>
	
	<?php
	//LA CLASE YA ESTA INSTANCIADA
	$array_pedido = $clase->pedido();
	foreach($array_pedido as $pedido){
	?>
	<tr>
		<td><?php echo $pedido['ID']; ?></td>
		<td><?php echo $pedido['Nombre']; ?></td>
	</tr>
	<?php
	}
	?>
</table> 
Y solo muestra el primer item de la tabla, es como si no lo recurriera el array.

Espero haberme explicado bien.

Muchas gracias y saludos.
  #2 (permalink)  
Antiguo 15/02/2013, 21:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Recorrer array fuera de la clase.

Porque no estás avanzando el cursor dentro del resultado que te ha devuelto la base de datos.
Tal y como lo has hecho,
Código PHP:
Ver original
  1. return $resultado->fetch_assoc();
estas retornando sólo la primera fila.No hay un while que haga avanzar el cursor, como hay en la segunda opción que muestras.
  #3 (permalink)  
Antiguo 15/02/2013, 21:36
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Recorrer array fuera de la clase.

Holas,

Opcion 1:

Código PHP:
Ver original
  1. public function pedido(){
  2.         $db = Conexion::datos();
  3.         $cliente = $_SESSION["usuario"];
  4.         $consulta = "SELECT * FROM pedido WHERE cliente = '$cliente'";
  5.         $resultado = $db->query($consulta);
  6.         return $resultado;
  7. }

Y luego:

Código PHP:
Ver original
  1. $result = $clase->pedido();
  2. while($row = $result->fetch_assoc()){
  3.     echo $row['ID'];
  4. }

Opcion 2: http://www.php.net/manual/en/mysqli-....fetch-all.php

Código PHP:
Ver original
  1. public function pedido(){
  2.         $db = Conexion::datos();
  3.         $cliente = $_SESSION["usuario"];
  4.         $consulta = "SELECT * FROM pedido WHERE cliente = '$cliente'";
  5.         $resultado = $db->query($consulta);        
  6.         return $resultado->fetch_all();
  7. }

Y luego:

Código PHP:
Ver original
  1. $rows = $clase->pedido();
  2. foreach($rows as $row){
  3.     echo $row['ID'];
  4. }

Saludos,
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 18/02/2013, 14:12
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Recorrer array fuera de la clase.

Ostia! No se como no había caído en la opcion uno, muchas gracias. La opcion dos es muy buena tambien no la conocia pero necesitas una extension de mysql.

Muchas gracias a los dos.

Etiquetas: fuera, select, tabla
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 11:29.