Foros del Web » Programando para Internet » PHP »

problema con mvc y php

Estas en el tema de problema con mvc y php en el foro de PHP en Foros del Web. hola: estoy tratando de incursionar en esto del mvc (mas adelante me lanzo con la poo), bueno el tema es que tengo mi archivo modelo.php ...
  #1 (permalink)  
Antiguo 19/02/2008, 16:57
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
problema con mvc y php

hola:
estoy tratando de incursionar en esto del mvc (mas adelante me lanzo con la poo), bueno el tema es que tengo mi archivo modelo.php con la siguiente funcion:

Código PHP:
function login_gral_db($dominio,$pass){
        
$sql="select * from usuarios where dominio='$dominio' and pass='$pass'";
        
// Ejecutar la consulta SQL
        
$resultado mysql_query($sql);
         
        
// Crear el array de elementos para la capa de la vista
        
$usuario mysql_fetch_array($resultado);
        return 
$usuarios;
    } 
sencilla es para comprobar si el logueo se hizo bien o no

a esa funcion la uso en el archivo login.php de esta manera:
Código PHP:
include('modelo/modelo.php');
    
$dominio=$_POST[dominio];
    
$pass=md5($_POST[pass]);
    
    
login_gral_db($dominio$pass);    
    
    
var_dump($usuarios); 
el tema es que siempre me devuelve null, le hago un debug con el zendstudio y me dice que $usuario no existe.
Me estoy basando en este ejemplo http://www.librosweb.es/symfony/capi...atron_mvc.html

en que le estoy errando?
  #2 (permalink)  
Antiguo 19/02/2008, 17:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: problema con mvc y php

Tu función esta mal, primero asignas a $usuario el resultado y luego regresas $usuarios, cosa que es incorrecta:
Código PHP:
function login_gral_db($dominio,$pass){
        
$sql="select * from usuarios where dominio='$dominio' and pass='$pass'";
        
// Ejecutar la consulta SQL
        
$resultado mysql_query($sql);
         
        
// Crear el array de elementos para la capa de la vista
        
$usuario mysql_fetch_array($resultado);
        return 
$usuario;
    } 
Posteriormente solo llamas a la función y nunca regresas el resultado para que lo puedas ver en la otra parte de tu script debes de rescatar el valor:
Código PHP:
include('modelo/modelo.php');
    
$dominio=$_POST['dominio'];
    
$pass=md5($_POST['pass']);
    
    
$usuario login_gral_db($dominio$pass);    
    
    
var_dump($usuario); 
Por otro lado te comento que es de buen uso usar comillas simples entre tu arreglo, ya que si tu PHP corre sobre el modelo E_STRICT te generaría errores usar esto: $_POST[pass] en lugar de esto $_POST['pass'].

Saludos.
  #3 (permalink)  
Antiguo 20/02/2008, 15:21
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Re: problema con mvc y php

gatov:
hice los cambios que me indicaste y ahora me tira este erro:

Fatal error: Cannot redeclare login_gral_db() (previously declared in D:\xampp\htdocs\proyectos\modelo\modelo.php:16) in D:\xampp\htdocs\proyectos\modelo\modelo.php on line 24

que son la cabecera de la funcion y el } de funcion
  #4 (permalink)  
Antiguo 20/02/2008, 15:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: problema con mvc y php

Ese error que te marca es porque estas tratando de declarar nuevamente la función en la linea 24 del archivo modelo.php, y de acuerdo a PHP tu la declaraste primero en la linea 16.

Saludos.
  #5 (permalink)  
Antiguo 20/02/2008, 17:47
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Re: problema con mvc y php

si fue un error tonto estaba includido dos veces el require(modelo.php)
ahora fui un poquito mas alla y arme un index.php asi:
Código PHP:
    //Primero algunas variables de configuracion
    
require 'config.php';
     
    
//La carpeta donde buscaremos los controladores
    
$carpetaControladores "controladores/";
     
    
//Si no se indica un controlador, este es el controlador que se usará
    
$controladorPredefinido "inicio";
     
    
//Si no se indica una accion, esta accion es la que se usará
    
$accionPredefinida "login";
     
    if(! empty(
$_GET['controlador']))
          
$controlador $_GET['controlador'];
    else
          
$controlador $controladorPredefinido;
     
    if(! empty(
$_GET['accion']))
          
$accion $_GET['accion'];
    else
          
$accion $accionPredefinida;
     
    
//Ya tenemos el controlador y la accion
     
    //Formamos el nombre del fichero que contiene nuestro controlador
    
$controlador $carpetaControladores $controlador '.php';
     
    
//Incluimos el controlador o detenemos todo si no existe
    
if(is_file($controlador))
          require_once 
$controlador;
    else
          die(
'El controlador no existe - 404 not found');
     
    
//Llamamos la accion o detenemos todo si no existe
    
if(is_callable($accion))
          
$accion();
    else
          die(
'La accion no existe - 404 not found'); 
en mi controlador inicio.php tengo:
Código PHP:
require('modelos/modelo.php');
function 
principal(){
        require(
'vistas/index.html');
    }     
    
    function 
login(){
        
$dominio=$_POST['dominio'];
        
$pass=md5($_POST['pass']);
        
$loginlogin_gral_db($_POST['dominio'], md5($_POST['pass']));    
        require(
'vistas/login.html');
    } 
esta bien que la vista de mi login.php sea asi:
Código:
if (!empty($login)){
		//requiere('/controlador/proyectos.php');
		echo "login ok";
	}
	else{?>
	<div align="center">
	  <p><img src="images/header_logo.gif" width="189" height="140" /></p>
	  <p>Error en nombre del dominio o en el pass!</p>
	</div><?		
	}
o debo poner menos codigo php?

muchas gracias por tenerme tanta paciencia
  #6 (permalink)  
Antiguo 20/02/2008, 17:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: problema con mvc y php

Esta bien que en la vista haya estructuras básicas, como if/else, o fors, o while.

Saludos.
  #7 (permalink)  
Antiguo 21/02/2008, 17:58
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Re: problema con mvc y php

estimado gatorv, te vuelvo a molestar para ver si me podes guiar un poquito mas en esto del mvc.

arme un login para administradores de mi sistemas que consta de los siguientes archivos:

modelo.php
Código PHP:
function login_admin_db($nombre$pass){
        
$sql="select * from usuarios where nombre='$nombre' and pass='$pass'";
        
// Ejecutar la consulta SQL
        
$resultado mysql_query($sql);
         
        
// Crear el array de elementos para la capa de la vista
        
$admin mysql_fetch_array($resultado);
        return 
$admin;
        
    } 
mi controlador es admin.php que tiene
Código PHP:
require('modelos/modelo.php');
    
    function 
principal(){
        require(
'vistas/login_admin.html');
    }     
    
    function 
login_admin(){
        
$nombre=$_POST['nombre'];
        
$pass=md5($_POST['pass']);
        
$adminlogin_admin_db($nombre$pass);   
        require(
'vistas/admin.html');
    } 
la vista login_admin.html es
Código HTML:
if (!empty($admin)){
		require('controladores/cpanel.php');
	}
	else{?>
		<div align="center">
			<p><img src="images/header_logo.gif" width="189" height="140" /></p>
			<p>Error en nombre del dominio o en el pass!</p>
		</div><?		
	}
el controlador cpanel.php tiene esto:
Código PHP:
require('modelos/modelo.php');
    function 
panel(){
    require(
'vistas/cpanel.html'); 
    }
    
    function 
nuevo_proyecto(){
        
$nuevo=nuevo_proyecto_db("hola");
        require(
'vistas/nuevo_proyecto.html');
    } 
la cuestion es que si no comento la linea require('modelos/modelo.php'); me sale de nuevo este error:
Fatal error: Cannot redeclare login_gral_db() (previously declared in D:\xampp\htdocs\proyectos\modelos\modelo.php:17) in D:\xampp\htdocs\proyectos\modelos\modelo.php on line 25

y no entiendo porque si yo no llamo a esa funcion?
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 15:37.