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

error con llamadas de una clase creo que es eso

Estas en el tema de error con llamadas de una clase creo que es eso en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola gente del foro del web, tengo un caso que me arroja este error: Fatal error: Call to a member function consultaQuery() on a non-object ...
  #1 (permalink)  
Antiguo 01/08/2009, 23:47
 
Fecha de Ingreso: abril-2007
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 0
error con llamadas de una clase creo que es eso

hola gente del foro del web, tengo un caso que me arroja este error:

Fatal error: Call to a member function consultaQuery() on a non-object in D:\AppServ\www\pro\index.php on line 6

en realidad le doy cabeza al asunto pero ni idea, soy nuevo en php, estoy con netbeans 6.7, me muestra mi tabla y todo en netbeans y que existe conexion y eso pero cuando ejecuto no es asi, y me sale ese error, aca les dejo el codigo a ver en que fallo.

<?php

class databas {
//put your code here
private $vServer="localhost";
private $vLogin="root";
private $vPassword="1234";
private $vDataBase="db_prueba";


public function conexionDataBas(){
$vConexion=mysql_connect($this->vServer,$this->vLogin,$this->vPassword) or die(mysql_error());
mysql_select_db($this->vDataBase,$vConexion)or die(mysql_error());
}

public function consultaQuery($consulta){
$vConex=mysql_connect($this->vServer,$this->vLogin,$this->vPassword)or die(mysql_error());
mysql_select_db($this->vDataBase,$vConex)or die(mysql_error());
$resultado=mysql_query($consulta,$vConex)or die(mysql_error());
}

}// fin class databas
?>

-------

<?php
include ('databas.php');
$iDB=new databas();
$iDB->conexionDataBas();
$sql="select * from cliente";
$con=$idb->consultaQuery($sql);
$fila=mysql_fecth_array($con);
echo "
<html>
<head>
<div><title><b><font size=\"3\">PruebaPHP</font><b></title></div>
</head>
<body>
<h1>BIENVENIDO AL SISTEMA DE PRUEBA</h1>
<p>
<p>
<table border=\"1\">
";
echo "<tr><td><b>NOMBRE</b></td> <td><b>APELLIDO</b></td></tr>
<tr><td>$fila[nombre_cliente]</td><td>$fila[apellido_cliente]</td></tr>
</table>
</body>
</html>";
?>

y al ejecutar esto me da:


Fatal error: Call to a member function consultaQuery() on a non-object in D:\AppServ\www\pro\index.php on line 6

una ayudita con esto por fis...
  #2 (permalink)  
Antiguo 01/08/2009, 23:53
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 4 meses
Puntos: 139
Respuesta: error con llamadas de una clase creo que es eso

Si viejito
Eso pasa por que creaste el objecto con iDB mayuscula

Y lo estas llamando en minuscula.

Código PHP:
Ver original
  1. include ('databas.php');
  2. $idb=new databas();
  3. $idb->conexionDataBas();
  4. $sql="select * from cliente";
  5. $con=$idb->consultaQuery($sql);
  6. $fila=mysql_fecth_array($con);
  7. echo "
  8. <html>
  9. <head>
  10. <div><title><b><font size=\"3\">PruebaPHP</font><b></title></div>
  11. </head>
  12. <body>
  13. <h1>BIENVENIDO AL SISTEMA DE PRUEBA</h1>
  14. <p>
  15. <p>
  16. <table border=\"1\">
  17. ";
  18. echo "<tr><td><b>NOMBRE</b></td> <td><b>APELLIDO</b></td></tr>
  19. <tr><td>$fila[nombre_cliente]</td><td>$fila[apellido_cliente]</td></tr>
  20. </table>
  21. </body>
  22. </html>";
Prueba con eso.

Edito:

Aqui te pongo el archivo de clase un poco mejor

Código PHP:
Ver original
  1. class databas {
  2. //put your code here
  3. private $vServer="localhost";
  4. private $vLogin="root";
  5. private $vPassword="1234";
  6. private $vDataBase="db_prueba";
  7. private $vConex;
  8.  
  9. public function conexionDataBas(){
  10. $this->vConex = mysql_connect($this->vServer,$this->vLogin,$this->vPassword) or die(mysql_error());
  11. mysql_select_db($this->vDataBase,$this->vConex)or die(mysql_error());
  12. }
  13.  
  14. public function consultaQuery($consulta){
  15. $resultado = mysql_query($consulta,$this->vConex)or die(mysql_error());
  16. }
  17.  
  18. }
  #3 (permalink)  
Antiguo 01/08/2009, 23:54
Avatar de rocksoul16  
Fecha de Ingreso: agosto-2009
Ubicación: Colombia
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: error con llamadas de una clase creo que es eso

PHP es case sensitive, si tienes instanciada tu clase como $iDB luego no la puedes llamar como $idb porque estarías haciendo referencia a una clase inexistente.

Saludos.
  #4 (permalink)  
Antiguo 02/08/2009, 00:33
 
Fecha de Ingreso: abril-2007
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 0
Sonrisa Respuesta: error con llamadas de una clase creo que es eso

vale eso se me paso lo de case sensitive pero me endude jajaja nueva frase de duda jaja,
ok la cosa es esta prove como me dicen pero ahora me sale esto

Fatal error: Call to undefined function mysql_fecth_array() in D:\AppServ\www\pro\index.php on line 7

y solo se me quito y me funciono con esto asi

<?php
class databas {

//put your code here

private $vServer="localhost";
private $vLogin="root";
private $vPassword="1234";
private $vDataBase="db_prueba";
public $fila;

public function conexionDataBas(){
$this->vConex = mysql_connect($this->vServer,$this->vLogin,$this->vPassword) or die(mysql_error());
mysql_select_db($this->vDataBase,$this->vConex)or die(mysql_error());
}

public function consultaQuery($consulta){
$resultado = mysql_query($consulta,$this->vConex)or die(mysql_error());
$this->fila=mysql_fetch_array($resultado);
}

}
?>


-------

<?php
include ('databas.php');
$idb=new databas();
$idb->conexionDataBas();
$sql="select * from cliente";
$con=$idb->consultaQuery($sql);

echo "
<html>
<head>
<div><title><b><font size=\"3\">PruebaPHP</font><b></title></div>
</head>
<body>
<h1>BIENVENIDO AL SISTEMA DE PRUEBA</h1>
<p>
<p>
<table border=\"1\">
";
echo "<tr><td><b>NOMBRE</b></td> <td><b>APELLIDO</b></td></tr>";
echo "<tr><td>";echo$idb->fila[nombre_cliente];echo"</td><td>";echo$idb->fila[apellido_cliente];echo"</td></tr>";
echo "</table>
</body>
</html>";
?>

-----

pero no me cuadra llamandolo asi, no hay otra manera mas sencilla para no hacerlo asi, de hecho esto de: all to undefined function mysql_fecth_array(), que es ???...

ademas, en el metodo conexionDataBas le coloque la llamada oh el mysql_connect pensando que era necesario aunque me parecia ilogico... vale gracias por las repuestas estan muy buenas...
  #5 (permalink)  
Antiguo 02/08/2009, 00:46
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 4 meses
Puntos: 139
Respuesta: error con llamadas de una clase creo que es eso

Espero no enredarte, pero modifique el codigo para que sea algo mejor.

Código PHP:
Ver original
  1. class databas {
  2. //put your code here
  3. private $vServer="localhost";
  4. private $vLogin="root";
  5. private $vPassword="1234";
  6. private $vDataBase="db_prueba";
  7. private $vConex;
  8. private $resultado;
  9.  
  10.  
  11.  
  12.  public function databas(){
  13. $this->vConex = mysql_connect($this->vServer,$this->vLogin,$this->vPassword) or die(mysql_error());
  14. mysql_select_db($this->vDataBase,$this->vConex)or die(mysql_error());
  15.  }
  16.  
  17.  
  18. public function consultaQuery($consulta){
  19. $this->resultado = mysql_query($consulta,$this->vConex)or die(mysql_error());
  20. }
  21.  
  22.  
  23.  public function resultados(){
  24.  return  mysql_fetch_array($this->resultado,$this->vConex);
  25.  }
  26.  
  27.  
  28. }


Código PHP:
Ver original
  1. include('databas.php');
  2.  
  3. ## con solo declarar la clase ya hacemos la conexion.
  4. $idb = new databas();
  5.  
  6. $sql = "select * from cliente";
  7.  
  8. ## realizamos la consulta
  9. $con = $idb->consultaQuery($sql);
  10.  
  11. ## recojemos los datos.
  12. $fila = $idb->resultados();
  13.  
  14. echo "
  15. <html>
  16. <head>
  17. <div><title><b><font size=\"3\">PruebaPHP</font><b></title></div>
  18. </head>
  19. <body>
  20. <h1>BIENVENIDO AL SISTEMA DE PRUEBA</h1>
  21. <p>
  22. <p>
  23. <table border=\"1\">
  24. ";
  25. echo "<tr><td><b>NOMBRE</b></td> <td><b>APELLIDO</b></td></tr>
  26. <tr><td>$fila[nombre_cliente]</td><td>$fila[apellido_cliente]</td></tr>
  27. </table>
  28. </body>
  29. </html>"

Solo tienes que analisar el tu yo y este para que veas los cambios.
  #6 (permalink)  
Antiguo 02/08/2009, 12:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: error con llamadas de una clase creo que es eso

La diferencia es el uso de fetch vs fecth te equivocaste al escribir la función.

Saludos.
  #7 (permalink)  
Antiguo 02/08/2009, 17:28
 
Fecha de Ingreso: abril-2007
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 0
vale me gusto por ultimo...
y disculpe el fastidio que tengo con todo esto, pero ahora quiero hacer un desglose de lo que tengo en la tabla cliente aplico un while y dejo lo otro para que me muestra solo un registro tengo la variable $fila y en otra un desglose con la variable $fil



-------------------------------------------------------------------------

<?php
include('databas.php');
$idb = new databas();
$sql = "select * from cliente";
$con = $idb->consultaQuery($sql);
$fila = $idb->resultado();
echo "
<html>
<head>
<title> <font size=3>PruebaPHP</font></title>
</head>
<body>
<h1>BIENVENIDO AL SISTEMA DE PRUEBA</h1>
<p>
<p>
<table border=\"1\">
<tr><td><b>NOMBRE</b></td> <td><b>APELLIDO</b></td></tr>
<tr><td>"; echo $fila[nombre_cliente]; echo"</td><td>"; echo $fila[apellido_cliente]; echo "</td></tr>
</table>
<p>
<p>
<table border=1>
<hr></hr>
<tr><td>NOMBRE DEL CLIENTE</td><td>APELLIDO DEL CLIENTE</td></tr>
";

while($fil=$idb->resultado()){

echo "
<tr><td>"; echo $fil[nombre_cliente]; echo "</td></tr> <tr><td>"; echo $fil[apellido_cliente]; echo "</td></tr>
";
}
echo "
</table>
</body>
</html> ";
?>

pero bendito sea el creador ahora me sale este error " No database selected "
si saco esto ya aclaro muchas cosas...

ya listo lo solucione vale gracias era un detalle...

Última edición por GatorV; 09/08/2009 a las 17:25
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 02:05.