Foros del Web » Programando para Internet » PHP »

PHP OO No me reconoce la Clase

Estas en el tema de No me reconoce la Clase en el foro de PHP en Foros del Web. Hola este es mi segunda consulta en este foro: Estoy trabajando con POO en php Tengo dos clases, declaradas en una misma carpeta, se llaman: ...
  #1 (permalink)  
Antiguo 19/06/2011, 14:04
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 8 años, 11 meses
Puntos: 0
No me reconoce la Clase

Hola este es mi segunda consulta en este foro:

Estoy trabajando con POO en php

Tengo dos clases, declaradas en una misma carpeta, se llaman:
- PlanAlimentario.php
- db.php

Desde un tercer archivo "ver_plan.php", hago el llamado con include_once

Código:
<?php
  session_start(); 
  include_once("../Includes/Dia.php");
  include_once("../Includes/PlanAlimentario.php");
  include_once("../Includes/PlanDiagnosticado.php");
  define("salto","<br/>");          
?>
Al ejecutarlo me tira un error, es el que muestro a continuacion

Código:
Fatal error: Class 'sQuery' not found in C:\xampp\htdocs\xampp\www\TF\Includes\PlanDiagnosticado.php on line 25
Osea me esta diciendo que en el archivo "PlanDiagnosticado.php" (que es uno de los que incluyo en
"ver_plan.php" ) no esta encontrando la clase sQuery(). Bien mustro el codigo de "PlanDiagnosticado.php"

Contenido de PlanDiagnosticado.php (solo muestro una parte)

Código:
<?php

include_once ("db.php");

 
class PlanDiagnosticado {
    private $fechaDesde;
    private $fechaHasta;
    private $nroPlan;
    private $nombreUsuario;

    function PlanDiagnosticado($nombreUsuario=0) {
                                                   
		   if ($nombreUsuario!=''){                                                                                                      

		     	$obj_query=new sQuery(); <-- esta es la linea 25
		     	$query= "select * from planasignado where usuariopaciente = '$nombreUsuario' and fechafin='9999-12-31';";
		   //  	echo $query;
		     	$result=$obj_query->executeQuery($query); // ejecuta la consulta para traer al cliente
		     	$row=mysql_fetch_array($result);
		     	$this->fechaDesde   =$row['fechainicioplan'];
		     	$this->fechaHasta   =$row['fechafin'];
		     	$this->nroPlan      =$row['nroplan'];
		     	$this->nombreUsuario=$row['usuariopaciente'];  
		     	echo $this->nroPlan;
	      }                   
       }
?>
luego en "db.php" tengo definidas dos clases, entre ellas sQuery

Código:
<?php
class Conexion { // se declara una clase para hacer la conexion con la base de datos

	private $con;

        function Conexion()

	{
               
		// se definen los datos del servidor de base de datos
		$conection['server']="localhost";  //host
		$conection['user']="root";         //  usuario
		$conection['pass']="";		//password
		$conection['base']="sistemanutricion";			//base de datos


		// crea la conexion pasandole el servidor , usuario y clave
		$conect= mysql_pconnect($conection['server'],$conection['user'],$conection['pass']);



		if ($conect) // si la conexion fue exitosa , selecciona la base
		{
			mysql_select_db($conection['base']);
			$this->con=$conect;
		}
	}
	function getConexion() // devuelve la conexion
	{
		return $this->con;
	}
	function Close()  // cierra la conexion
	{
		mysql_close($this->con);
	}
}

class sQuery   // se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior
{

	var $pconeccion;
	var $pconsulta;
	var $resultados;
	
	function sQuery()  // constructor, solo crea una conexion usando la clase "Conexion"
	{
		$this->pconeccion= new Conexion();
	}
	function executeQuery($cons)  // metodo que ejecuta una consulta y la guarda en el atributo $pconsulta
	{
		$this->pconsulta= mysql_query($cons,$this->pconeccion->getConexion());
		return $this->pconsulta;
	}
	function getResults()   // retorna la consulta en forma de result.
	{return $this->pconsulta;}

	function Close()		// cierra la conexion
	{$this->pconeccion->Close();}

	function Clean() // libera la consulta
	{mysql_free_result($this->pconsulta);}

	function getResultados() // debuelve la cantidad de registros encontrados
	{return mysql_affected_rows($this->pconeccion->getConexion()) ;}

	function getAffect() // devuelve las cantidad de filas afectadas
	{return mysql_affected_rows($this->pconeccion->getConexion()) ;}
}

?>

Asi que bueno repito, me tira el error de que: segun entiendo yo "desde el archivo PlanAlimentario.php al querer crear una instancia de sQuery no esta pudiendo encontrar dicha clase"

Es mas! lo que probe es hacer lo siguiente, ya que en db.php tengo definidas las clases
- Conexion
- sQuery

probe hacer antes de la linea 25, crear una instancia de conexion

Código:
new_query1=new Conexion()
y me tira el mismo error

Código:
Fatal error: Class 'Conexion' not found in C:\xampp\htdocs\xampp\www\TF\Includes\PlanDiagnosticado.php on line 24
Yo creo que esta bien escrito el include_once("db.php"); SUPONIENDO QUE ESCRIBI MAL ESA LINEA

Estos archivos, PlanDiagnosticado y db.php estan EN UNA MISMA CARPETA.

se ve que no esta encontrando el archivo o algo asi, sin embargo tampoco me tira un error o un warning como que no encuentra el archivo "db.php".

En Fin, espero puedan ayudarme y gracias de antemano
  #2 (permalink)  
Antiguo 19/06/2011, 14:34
Avatar de leo_nqn  
Fecha de Ingreso: abril-2010
Ubicación: Neuquen
Mensajes: 461
Antigüedad: 10 años, 1 mes
Puntos: 24
Respuesta: No me reconoce la Clase

que es $obj_query=new sQuery(); ?
__________________

Blog: http://leonardonqn.blogspot.com
Twitter:@Leo_FFerreyra
  #3 (permalink)  
Antiguo 19/06/2011, 14:40
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No me reconoce la Clase

Cita:
Iniciado por leo_nqn Ver Mensaje
que es $obj_query=new sQuery(); ?
De esta forma obtengo una instancia de la clase sQuery(), o me equivoco?
  #4 (permalink)  
Antiguo 19/06/2011, 14:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 16 años, 2 meses
Puntos: 406
Respuesta: No me reconoce la Clase

Bueno, el error es bastante claro, no puede instanciar el objeto porque no encuentra la clase, por lo tanto, si no encuentra la clase, quiere decir que en el "include" esta mal la ruta de "db.php", es por esto que es mejor utilizar "require" ya que este envia un error en caso de no encontrar el archivo a incluir
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 19/06/2011, 15:09
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No me reconoce la Clase

Cita:
Iniciado por Nemutagk Ver Mensaje
Bueno, el error es bastante claro, no puede instanciar el objeto porque no encuentra la clase, por lo tanto, si no encuentra la clase, quiere decir que en el "include" esta mal la ruta de "db.php", es por esto que es mejor utilizar "require" ya que este envia un error en caso de no encontrar el archivo a incluir
Hice lo que dijiste

Código:
<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of planDiagnosticado
 *
 * @author juanubuntu
 */
require("db.php");

class PlanDiagnosticado {
    private $fechaDesde;
    private $fechaHasta;
    private $nroPlan;
    private $nombreUsuario;

    function PlanDiagnosticado($nombreUsuario=0) {
                                                   
		   if ($nombreUsuario!=''){	   
		     	$obj_query=new sQuery(); <--- linea 23
		     	$query= "select * from planasignado where usuariopaciente = '$nombreUsuario' and fechafin='9999-12-31';";
		   //  	echo $query;
		     	$result=$obj_query->executeQuery($query); // ejecuta la consulta para traer al cliente
		     	$row=mysql_fetch_array($result);
		     	$this->fechaDesde   =$row['fechainicioplan'];
		     	$this->fechaHasta   =$row['fechafin'];
		     	$this->nroPlan      =$row['nroplan'];
		     	$this->nombreUsuario=$row['usuariopaciente'];  
		     	echo $this->nroPlan;
	      }                   
       }
pero me sigue tirando el mismo error, muestro error

Código:
Fatal error: Class 'sQuery' not found in C:\xampp\htdocs\xampp\www\TF\Includes\PlanDiagnosticado.php on line 23 
  #6 (permalink)  
Antiguo 19/06/2011, 15:27
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No me reconoce la Clase

Que bajon en todos los archivos donde hago un include_once("db.php");, include("db.php"); o require("db.php"); me esta poniendo el mismo mensaje de que no encuentra la clase sQuery!!
  #7 (permalink)  
Antiguo 19/06/2011, 15:36
Avatar de leo_nqn  
Fecha de Ingreso: abril-2010
Ubicación: Neuquen
Mensajes: 461
Antigüedad: 10 años, 1 mes
Puntos: 24
Respuesta: No me reconoce la Clase

probaste sacar en los include o en los require el "../"
me paso una vez que lo tuve que sacar.. y no entendi por que..
__________________

Blog: http://leonardonqn.blogspot.com
Twitter:@Leo_FFerreyra

Etiquetas: clases, definir, found, poo
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 21:17.