Foros del Web » Programando para Internet » PHP »

Llamar funcion dento de otra

Estas en el tema de Llamar funcion dento de otra en el foro de PHP en Foros del Web. Buenas noches. Señores tengo un problemita, he realizado una funcion que se conecta a mi base de datos y tengo otra con la que pretendo ...
  #1 (permalink)  
Antiguo 01/02/2010, 20:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Llamar funcion dento de otra

Buenas noches.

Señores tengo un problemita, he realizado una funcion que se conecta a mi base de datos y tengo otra con la que pretendo realizar las consultas, el problema es que cuando trato de invocar a la funcion que hace la conexion desde la que hace las consultas, no me funciona. sera que me pueden dar una mano?

esta es la funcion que se conecta a la base:

function conectar()
{
$mysqli = new mysqli("localhost", "root", "123", "sistemaacademico");

if (mysqli_connect_errno()) {
echo "Error enconexion: ". mysqli_connect_error();
exit();
}
return $mysqli;
}



Esta es la que se supone me deberia realizar las consultas he invocar a conectar:

function consul_todos($tabla)
{
$conectar = conectar();
$sql = "select * from ".$tabla;
$rs = $conectar->query($sql);
return $rs;
}




las dos funciones estan dentro de una clase.

Les agradezco de antemano por su colaboracion.
  #2 (permalink)  
Antiguo 01/02/2010, 20:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Llamar funcion dento de otra

si están dentro de una clase lo estas haciendo mal... ya que debes usar algún operador para accesar a ellos...

Código PHP:
function loquesea()
{
  
$conecta $this->conectar();
  
// ...

algo así, el punto es que... si dices que no te funciona, ¿acaso te sale algún error o algo así??

por favor, también brinda mas información y no esperes a que adivinemos... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/02/2010, 20:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Llamar funcion dento de otra

Hola pateketrueke.

Tenias la razon, la he modificado y ha funcionado. ha quedado asi:

function consul_todos($tabla)
{
$sql = "select * from ".$tabla;

$acceso_datos = new Acceso_datos();

$conectar = $acceso_datos -> conectar();

print("
<script>
alert('prueba consul');
</script>

");
$rs = $conectar->query($sql);
return $rs;
}


lo que pasa es que no instanciaba la clase por que pense que al estar las dos funciones dentro de esta no tendria ningun problema, pero veo que igual toca instanciar la clase.

Gracias.....
  #4 (permalink)  
Antiguo 01/02/2010, 21:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Llamar funcion dento de otra

jucas1987, de hecho siguen habiendo huecos...

me gustaría que mostraras como es que instancias la misma clase pero fuera de dicho método...

porque en dicho caso, no necesitas reinstanciarla dentro del método... vamos, deberías usar algún operador de resolución dependiendo de tu primer método... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/02/2010, 00:00
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Llamar funcion dento de otra

Guarda este codigo como funion_conexion.php

Código PHP:
<?
// Guardamos este codigo como "funion_conexion.php"

// Clase de conexion de base de datos  
class MySQL {   
 var 
$dbhost;     
 var 
$dbuser;   
 var 
$dbpass;   
 var 
$dbdatabase;   
 var 
$conexion;   
 var 
$errorconexion;   
// Funciones de la base de datos
function MySQL($dbhost$dbuser$dbpass$dbdatabase)  {   
   
$this->dbhost $dbhost;   
   
$this->dbuser $dbuser;   
   
$this->dbpass $dbpass;   
   
$this->dbdatabase $dbdatabase;   
   
$this->conectar();   
 }   
// Establecemos la conexion y seleccionar una base de datos  
 
function conectar()   {   
// Conexion al servidor de la base de datos
   
if (!$this->conexion = @mysql_connect($this->dbhost,   
       
$this->dbuser$this->dbpass)) {   
     
trigger_error('No es posible conectarse a la base de datos');   
     
$this->errorconexion true;   
   
// Seleccionamos la base de datos  
   
} else if (!@mysql_select_db($this->dbdatabase,$this->conexion)) {   
     
trigger_error('No es posible seleccionar la base de datos');   
     
$this->errorconexion true;   
   }   
 }   
// Control de los errores de la base de datos
 
function isError()    {   
 if (
$this->errorconexion) {   
 return 
true;   
 }   
 
$error mysql_error($this->conexion);   
 if (empty(
$error)) {   
 return 
false;   
 } else {   
 return 
true;   
 }   
 }
?>
Aqui haces tu conexion
Código PHP:

<?
// Incluye la funcion de conexion de la base de datos
require_once 'funion_conexion.php';   
  
$dbhost   'localhost';    // Servidor de la base de datos  
$dbuser '';               // Nombre de usuario de la base de datos
$dbpass '';              // Contraseña para el usuario de la base de datos
$dbdatabase '';         // Nombre de base de datos
// Conectar a la base de datos
$conexion = &new MySQL($dbhost$dbuser$dbpass$dbdatabase);   
?>

Tambien puedes usar de este modo


Código PHP:
<?   
function &conectar($dbhost$dbuser$dbpass$dbdatabase) {   
// Conexion al servidor de MySQL  
if (!$conexion = @mysql_connect($dbhost$dbuser$dbpass)) {   
 return 
false;   }   
// Seleccione la base de datos  
if (!@mysql_select_db($dbdatabase)) {   
 return 
false;   }   
return 
$conexion;  }   
  
$dbhost   'localhost';    // Servidor de la base de datos  
$dbuser '';               // Nombre de usuario de la base de datos
$dbpass '';              // Contraseña para el usuario de la base de datos
$dbdatabase '';         // Nombre de base de datos
// Conectar a la base de datos
$conexion = &conectar($dbhost$dbuser$dbpass$dbdatabase);   
?>

Bueno espero sea de ayuda.
Gracias.

Etiquetas: funcion, llamar
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:21.