Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: jhonatanAsm en 8 Febrero 2012, 17:47 PM

Título: cuál es el trabajo de array_pop() en el sgte code
Publicado por: jhonatanAsm en 8 Febrero 2012, 17:47 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.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;

?>

Título: Re: que hace array_pop() en el sgte code
Publicado por: jhonatanAsm en 8 Febrero 2012, 18:30 PM
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
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: jhonatanAsm en 9 Febrero 2012, 03:25 AM
es importante, ayudenme porfa!
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: Shell Root en 9 Febrero 2012, 09:46 AM
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);
}
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: jhonatanAsm en 9 Febrero 2012, 15:57 PM
gracias. voy a probarlo.
-----------------------------------------

me muestra esto:

Array (
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: Shell Root en 10 Febrero 2012, 08:52 AM
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?
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: jhonatanAsm en 10 Febrero 2012, 14:45 PM
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
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: Shell Root en 10 Febrero 2012, 20:49 PM
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.
Título: Re: cuál es el trabajo de array_pop() en el sgte code
Publicado por: jhonatanAsm en 15 Febrero 2012, 22:19 PM
cambie esto:

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


por esto:

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


ojalá no me genere errores futuros  :silbar: .salu2