Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Porque este error?

Estas en el tema de Porque este error? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola amigos porque este error? Fatal error: Call to a member function prepare() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\volcanicos\models\logi n_Model.php on line 27...
  #1 (permalink)  
Antiguo 27/10/2012, 13:31
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Porque este error?

hola amigos porque este error?

Fatal error: Call to a member function prepare() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\volcanicos\models\logi n_Model.php on line 27
  #2 (permalink)  
Antiguo 27/10/2012, 18:14
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 137
Respuesta: Porque este error?

si tienes algo como
Código PHP:
Ver original
  1. $objeto->prepare();
puede que la variable objeto no este siendo instanciada correctamente por que dice que no es un objeto, si pusieras el codigo te ayudaria más, saludos
  #3 (permalink)  
Antiguo 27/10/2012, 18:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Porque este error?

abimex gracias por responder

este es mi codigo

Código PHP:
Ver original
  1. <?php
  2.     $servidor = 'localhost';
  3.     $bd = 'mibd';
  4.     $usuario = $_POST['usuario'];
  5.     $contrasenia =  $_POST['clave'];
  6.    
  7.     try {
  8.      $db = new PDO('pgsql:host=localhost;dbname='.bd,$usuario, $contrasenia);
  9. }catch(PDOException $e) {
  10.      echo $e->getMessage();
  11. }
  12.    
  13.     //$db = new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
  14.  
  15.  
  16.  
  17.  
  18.     class Login
  19.     {
  20.         /*-----------------------------------------  Validar Usuarios -----------------------------------------*/
  21.         public function validate_users($db)
  22.         {
  23.        
  24.             //$usuario = $_POST['usuario'];
  25.             //$clave = $_POST['clave'];
  26.        
  27.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='montes' and usu_clave='montes' and usu_estado = 1");
  28.             $consulta->execute();
  29.        
  30.             while($fila = $consulta->fetch())
  31.             {
  32.            
  33.                 $_SESSION['nombre'] = 'montes';
  34.                 $_SESSION['clave'] = 'montes';
  35.                 header("Refresh: 0; URL=/volcanicos/");
  36.                 die();
  37.                
  38.             }
  39.            
  40.              if (!$this->consulta)
  41.                 {
  42.                     $_SESSION['invalidate_user'] = true;
  43.                 }
  44.                
  45.         }
  46.        
  47.         /*-----------------------------------------  Validar Perfil -----------------------------------------*/
  48.         public function validate_profile($db)
  49.         {
  50.             $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='montes'");
  51.             $consulta->execute();
  52.        
  53.             while($fila = $consulta->fetch())
  54.             {
  55.            
  56.                 $_SESSION['perfil'] = $fila['perfil'];
  57.                 $_SESSION['id_usuarios'] = $fila['id_usuarios'];
  58.                
  59.             }
  60.            
  61.        
  62.         }
  63.        
  64.        
  65.        
  66.    
  67.            
  68.        
  69.  
  70.  
  71.        
  72.     }
  73.  
  74. ?>

y donde marca el error es en
Código PHP:
Ver original
  1. $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='montes' and usu_clave='montes' and usu_estado = 1");
  #4 (permalink)  
Antiguo 27/10/2012, 19:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Porque este error?

Lee sobre el ámbito de variables, tú estas creando el objeto $db fuera de la función login.

Saludos
  #5 (permalink)  
Antiguo 27/10/2012, 22:12
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Porque este error?

GatorV gracias por responder

me pasa algo raro en mi codigo, si comento esta linea header("Refresh: 0; URL=/volcanicos/"); muestra el echo , y yo necesito que muestre una ventana

que estoy haciendo mal?

como puedo aplicar el ambito de la variable de mejor manera?


Código PHP:
Ver original
  1. $usuario =$_POST['usuario'];
  2.     $contrasenia = $_POST['clave'];
  3.  
  4.    
  5.     try {
  6.      $db = new PDO('pgsql:host=localhost;dbname=volcanoes',$usuario, $contrasenia);
  7. }catch(PDOException $e) {
  8.      //echo $e->getMessage();
  9.      echo "No se Pudo Conectar";
  10. }
  11.    
  12.        
  13.     class Login
  14.     {
  15.         /*-----------------------------------------  Validar Usuarios -----------------------------------------*/
  16.         public function validate_users($db)
  17.         {
  18.        
  19.             $usuario = $_POST['usuario'];
  20.             $contrasenia = $_POST['clave'];
  21.        
  22.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$contrasenia' and usu_estado = 1");
  23.             $consulta->execute();
  24.            
  25.             $count = $consulta->rowCount();
  26.  
  27.             if($count==1){
  28.             $_SESSION['nombre'] = $_POST['usuario'];
  29.             $_SESSION['clave'] = $_POST['clave'];
  30.             echo "entre";
  31.             header("Refresh: 0; URL=/volcanicos/");
  32.             }
  33.             else {
  34.             //echo "usuario o contraseña incorrecta";
  35.             header("location:views/login_error.php");
  36.             }
  #6 (permalink)  
Antiguo 28/10/2012, 18:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Porque este error?

No puedes enviar un echo() después de header, vas a tener que usar una sesión para mandar el mensaje que quieras a tu otra pagina.

Saludos.
  #7 (permalink)  
Antiguo 28/10/2012, 20:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Porque este error?

GatorV gracias por responder , pero no he podido dar solucion , estoy desesperado .

quiero pedirte una asesoria ya que tienes bastante experiencia y te voy a explicar la situacion

en mi www tengo la siguente estructura

config
controllers
models
public
views
index.php


para que tengas un mejor contexto te voy a explicar:
inicialmete abri este post http://www.forosdelweb.com/f18/probl...enado-1019812/ pero no obtuve respusta por tal motivo intente adaptar mi codigo y debido a un error que obtuve inicie el post en el que estamos.

que estoy haceindo mal?
  #8 (permalink)  
Antiguo 28/10/2012, 20:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Porque este error?

Pues es simple, solamente guarda tú mensaje en una sesión:
Código PHP:
Ver original
  1. $_SESSION['mensaje'] = 'hola como estas';
  2. header('pagina2.php');

Código PHP:
Ver original
  1. //pagina2
  2. $mensaje = $_SESSION['mensaje'];
  3. echo $mensaje;
  #9 (permalink)  
Antiguo 28/10/2012, 21:11
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Porque este error?

GatorV gracias por responder , me puedes dar una opinion sobre el siguiente post

http://www.forosdelweb.com/f18/probl...enado-1019812/

es que sigo recibiendo el error
Fatal error: Call to a member function prepare() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\volcanicos\models\logi n_Model.php on line 62

Etiquetas: php
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:18.