Comunidad de diseño web y desarrollo en internet online

cuál es el trabajo de array_pop() en el sgte code??

Citar            
MensajeEscrito el 08 Feb 2012 08:02 pm
hola, tengo una duda al utilizar array_pop() , no entiendo como se relaciona array_pop() de la clase "modelo_bd_abstracta" con la clase "usuario".

si elimino la sentencia del array_pop($this->fila) la pagina aparece en blanco, osea que es necesaria la sentencia, pero ...para qué eliminar el ultimo elemento del array $fila??.

ahí les dejo el code, que es la base para un abm de usuarios.muchas gracias de antemano.

abstract_modelo1.php

Código PHP :

<?php
abstract class modelo_bd_abstracta
{
   private static $db_host='localhost';
   private static $db_user='root';
   private static $db_pass='';
   protected $bd_nombre='bd_mvc1';
   protected $conn;
   protected $query;
   protected $fila = array();
   protected $estado;
   
   abstract protected function set();
   abstract protected function get();
   abstract protected function edit();
   abstract protected function delete();
   
   private function abrir_conexion()
   {
      $this->conn=new mysqli(   self::$db_host,
                        self::$db_user,
                        self::$db_pass,
                        $this->bd_nombre
                       );
   }
   
   private function cerrar_conexion()
   {
      $this->conn->close();
   }
   
   protected function consulta_sin_retorno()
   {
      $this->abrir_conexion();
      $this->conn->query($this->query);
      $this->cerrar_conexion();
   }
   
   protected function consulta_con_retorno()
   {
      $this->abrir_conexion();
      $resultado=$this->conn->query($this->query);
      while( $this->fila[] = $resultado->fetch_assoc() );
      $resultado->close();
      $this->cerrar_conexion();
      array_pop($this->fila);//AQUI, NO ENTIENDO COMO INFLUYE AL MOMENTO DE MOSTRAR UN RESULTADO
   }
}
?>


usuario.php

Código PHP :

<?php
require_once '../../nucleo/abstract_modelo1.php';

class usuario extends modelo_bd_abstracta
{
   public $id;
   public $nombres;
   public $apellidos;
   private $clave;
   public $cargo;
   public $edad;
   
   function __construct()
   {
      $this->bd_nombre='bd_mvc1';
   }
   
   public function get($id=0)
   {
      if($id > 0) :
         $this->query = "select * from usuarios where id=$id " ;
         $this->consulta_con_retorno();
      endif;
   
      if(count($this->fila) == 1) :
         foreach($this->fila[0] as $columna=>$valor) :
            $this->$columna=$valor;
         endforeach;
      endif;
   }
   
   public function set( $nvos_datos=array() )
   {
   }
   
   public function edit()
   {
   }
   
   public function delete()
   {
   }
}
?>


asd.php

Código PHP :

<?php
require_once('usuario.php');

$uno=new usuario();

$uno->get(3);

echo $uno->nombres;

?>

Por jhonatanAsm

26 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Feb 2012 04:29 pm
creo que la razon se debe
a este troxo de codigo

Código PHP :

while( $this->fila[] = $resultado->fetch_assoc() );
      $resultado->close();
      $this->cerrar_conexion();
      array_pop($this->fila);//AQUI, NO ENTIENDO COMO INFLUYE AL MOMENTO DE MOSTRAR UN RESULTADO

mas especificamente en esta

Código PHP :

while( $this->fila[] = $resultado->fetch_assoc() );

el while hace el bucle hasta que se cumpla la sentencia osea hasta que se false, bueno pero a la vez haces una asignacion, le asignas valores a $this->fila le asignas 2 valores,
1 contiene los datos de la consulta
2 contiene False
y para parchar ese error de logica de parte del programador la trato de parchar con un array_pop
por que aparte que verificas que solo exista un usuario con esta sentencia

Código PHP :

if(count($this->fila) == 1) 
sin son 2 no funciona por eso es que no se visualiza si sacas el array_pop por que te devolveria 2 ,

si uno esta seguro de que resiviria 1 o 2 registros , osea sabes la cantidad exacta no necesitarias el whille

Código PHP :

while( $this->fila[] = $resultado->fetch_assoc() );

solo necesitarias simplemente

Código PHP :

$this->fila[] = $resultado->fetch_assoc() ;

aparte que esta mal implementeado el mysqli :), jeje me recuerda cuando empezaba en esto de php cuando ya cumplia 3 años en programacion php :), jeej , bueno espero me haya echo entender :)

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Feb 2012 05:05 pm
gracias. analizaré al detalle tu explicación, salu2.

Por jhonatanAsm

26 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.