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

Iniciado por jhonatanAsm, 8 Febrero 2012, 17:47 PM

0 Miembros y 1 Visitante están viendo este tema.

jhonatanAsm

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.muchas gracias de antemano.

abstract_modelo1.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);//[color=red]AQUI, NO ENTIENDO COMO INFLUYE AL MOMENTO DE MOSTRAR UN RESULTADO[/color]
}
}
?>



usuario.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

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

$uno=new usuario();

$uno->get(3);

echo 
$uno->nombres;

?>

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

jhonatanAsm

#1
el codigo es la base de lo que será un abm de usuarios de lo más sencillo, aunque aún no encuentro una definicion de lo que es un abm de usuarios  :P ,pero masomenos lo intuyo.

ayudaaaaaa! salu2
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

jhonatanAsm

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

Shell Root

Como la variable $fila, es de tipo array, que pasa si la muestras antes de que elimine el último valor? Para saber que es lo que tiene... es decir,
Código (php,7,8,9) [Seleccionar]
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();
  # Start Aquí
  print_r( $this->fila );
  # End Aquí
  array_pop($this->fila);
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jhonatanAsm

#4
gracias. voy a probarlo.
-----------------------------------------

me muestra esto:

Array (
  • => Array ( [id] => 6 [nombres] => estela [apellidos] => infante [clave] => perlas [cargo] => secretaria [edad] => 21 )[1] => )

    ahora se ejecuta el array_pop:

    Array (
  • => Array ( [id] => 6 [nombres] => estela [apellidos] => infante [clave] => perlas [cargo] => secretaria [edad] => 21 ) )

    por qué me crea este array: "[1]=>  " ??   gracias men.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

Shell Root

jojojo no tengo ni la más jodida idea, pero ya sabes para que usan ese array_pop(). Quizás analizando un poco mejor el source se puede eliminar esa linea y tambien la creación del [1] => (Que por cierto, supongo que es basura y le tiraron a borrarlo a la rápida, sin pensar...)

De donde haz sacado esos source's?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jhonatanAsm

el codigo lo obtuve de un manual de eugenia bahit:

POO Y MVC EN PHP.

ahí te dejo el link del manual en pdf http://books.openlibra.com/pdf/eugeniabahitpooymvcenphp.pdf

haber si me das una manita.salu2
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

Shell Root

#7
No leí el PDF, pero quizás tenga una solución, podrías modificarlo así,

Código (php,6,7,8) [Seleccionar]
   $cnn = new mysqli( $dbHost, $dbUser, $dbPass );
   $cnn->select_db( $dbName );
   $sql = "SELECT * FROM pharming;";
   $query = $cnn->query( $sql );
   if ($query->num_rows > 0) {
       while( $row = $query->fetch_assoc() ){
           $return[] = $row;
       }
   }else{ echo "No hay resultados para mostrar"; }
   $cnn->close();

El resultado será,
Código (bash) [Seleccionar]
Array ( [0] => Array ( [id] => 1 [pharming] => Add Ip Domain [status] => 1 ) )

---

Pero al ponerlo como esta en el PDF,
Código (php,6) [Seleccionar]
   $cnn = new mysqli( $dbHost, $dbUser, $dbPass );
   $cnn->select_db( $dbName );
   $sql = "SELECT * FROM pharming;";
   $query = $cnn->query( $sql );
   if ($query->num_rows > 0) {
       while( $return[] = $query->fetch_assoc() );
   }else{ echo "No hay resultados para mostrar"; }
   $cnn->close();


Quedaría como resultado,
Código (bash) [Seleccionar]
Array ( [0] => Array ( [id] => 1 [pharming] => Add Ip Domain [status] => 1 ) [1] => )

Quizás el while de una vuelta de más.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jhonatanAsm

cambie esto:

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


por esto:

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


ojalá no me genere errores futuros  :silbar: .salu2
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.