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;
?>
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
es importante, ayudenme porfa!
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,
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);
}
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.
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?
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
No leí el PDF, pero quizás tenga una solución, podrías modificarlo así,
$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á,
Array ( [0] => Array ( [id] => 1 [pharming] => Add Ip Domain [status] => 1 ) )
---
Pero al ponerlo como esta en el PDF,
$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,
Array ( [0] => Array ( [id] => 1 [pharming] => Add Ip Domain [status] => 1 ) [1] => )
Quizás el while de una vuelta de más.
cambie esto:
while( $this->fila[] = $resultado->fetch_assoc() );
por esto:
$this->fila[]=$resultado->fetch_assoc();
ojalá no me genere errores futuros :silbar: .salu2