Foros del Web » Programando para Internet » PHP »

Problema al llamar a función conectar().

Estas en el tema de Problema al llamar a función conectar(). en el foro de PHP en Foros del Web. Hola a todos, vereis tengo un archivo 'conectar.php' que contiene una función para conectarse a la base de datos, por otro lado tengo un archivo ...
  #1 (permalink)  
Antiguo 11/06/2011, 15:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 10 años
Puntos: 17
Problema al llamar a función conectar().

Hola a todos, vereis tengo un archivo 'conectar.php' que contiene una función para conectarse a la base de datos, por otro lado tengo un archivo 'funciones.php', este archivo lleva varias funciones que requieren conexión a la base de datos para insertar/eliminar/modificar....

El tema es que no me funciona:
Cita:
Notice: Undefined variable: conn in 'funciones.php'
Cita:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in 'funciones.php'
Tengo un error, claro está, pero no se identificarlo... ¿Alguien puede orientarme?

Una de mis dudas es que quizás utilizo los mismos nombres de variables en todas las funciones y quizás lo estoy volviendo loco, no se, lo mismo es una deducción absurda

CONECTAR.PHP
Código PHP:
function conectar(){
        global 
$conn;
        
$conn mysql_connect("servidor","nombre","contraseña") or die (mysql_error());
        
mysql_select_db("nombre",$conn) or die (mysql_error());        
    }
    
    function 
desconectar() {
    
mysql_close($conn);
    } 
FUNCIONES.PHP
Código PHP:
function insertarReg($name_$username_$password1_$email_$tipo_usuario_){
    
        global 
$url;
    
        
$clave generar_txtAct(20,false);
        
//Montamos la estructura del enlace con la clave.
        
$url "activar.php?id=".$clave;
        
        
conectar();
        
        
$sql"insert into users_temp (usersTemp,password,email,fecAlta,txt_Activ,tipo_usuario) values ('$username_','$password1_','$email_',CURDATE(),'$clave','$tipo_usuario_')";
        
$resultado=mysql_query($sql,$conn) or die (mysql_error());
        
        if (!
$resultado)
        return 
false;
        else
            return 
true;
}



function 
validateExistUsername($username){
    
        
conectar();
        
$sql"select usersTemp from users_temp where usersTemp = '$username'";
        
$resultado=mysql_query($sql,$conn) or die (mysql_error());
        if (
mysql_num_rows($resultado)>0)
            return 
false;
        else
            return 
true;

En el archivo de funciones van incluidas algunas mas pero por no agobiar con mucho código he resumido poniendo dos, a ver que opinais vosotros porque es que esto me está matando!
  #2 (permalink)  
Antiguo 11/06/2011, 16:02
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 11 años, 9 meses
Puntos: 641
Respuesta: Problema al llamar a función conectar().

bueno pues el error es muy claro

la variable $conn no esta definida en funciones.php

aunque la variable sea global, no has hecho un include de conectar.php en funciones.php para poder usarla.
  #3 (permalink)  
Antiguo 11/06/2011, 16:02
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 11 años, 11 meses
Puntos: 322
Respuesta: Problema al llamar a función conectar().

Aquí:
Código PHP:
$resultado=mysql_query($sql,$conn) or die (mysql_error()); 
El error dice que la variable $conn no existe, y exacto, en ningún momento veo que la función acceda a dicha variable. Tienes dos opciones:
1- Que la función conectar() devuelva la variable $conn (return), entonces, dejas cada archivo así:
Código PHP:
$conn conectar();
     
$resultado mysql_query($sql,$conn) or die (mysql_error()); 
2- Globalices $conn en cada función para que ésta pueda acceder a ella.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #4 (permalink)  
Antiguo 11/06/2011, 16:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 10 años
Puntos: 17
Respuesta: Problema al llamar a función conectar().

Que rapidez de respuesta Muchas gracias amigos, es que estoy haciendo una web mas bien compleja para aprender mas a fondo y me estoy topando con mas de un problema...

En funciones.php tengo un require ('conectar.php');

Así que me inclino mas a que como bien dice @Sourcegeek debo de

Cita:
1- Que la función conectar() devuelva la variable $conn (return)

2- Globalices $conn en cada función para que ésta pueda acceder a ella.
Parece que veo mas factible la opción 1, pero no se si he entendido bien como debo de enfocarlo, a ver:

Código PHP:
global $conn;
    function 
conectar(){
        
        
$conn mysql_connect("servidor","nombre","contraseña") or die (mysql_error());
        
mysql_select_db("nombre",$conn) or die (mysql_error());
return 
$conn;    


¿Es correcto? ¿Debo de globalizar $conn fuera de la función o dentro?

Muchas gracias amigos por la ayuda
  #5 (permalink)  
Antiguo 11/06/2011, 16:25
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 11 años, 11 meses
Puntos: 322
Respuesta: Problema al llamar a función conectar().

No, no
La globalización debe hacerse dentro de la función, pero en tu caso no necesitas
globalizar nada
Ahora, como haces un return de la conexión, debes usarla como te dije:
Código PHP:
function ejemplo () {
    
$conexion conectar();
    
$query "INSERT INTO lalala.....";
    
mysql_query($query,$conexion);

Claro, es un ejemplo.
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 11/06/2011, 16:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 10 años
Puntos: 17
Respuesta: Problema al llamar a función conectar().

Funcionó!! jejejejje Muchisimas gracias de verdad, hay veces que sin vuestra ayuda tiraría la toalla porque me atasco en cosas que se que son simples pero aún no las controlo, así que mil gracias!! Un saludo amigos!
  #7 (permalink)  
Antiguo 11/06/2011, 16:35
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 11 años, 11 meses
Puntos: 322
Respuesta: Problema al llamar a función conectar().

No hay problema, para eso estamos

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: Ninguno
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 04:10.