Foros del Web » Programando para Internet » PHP »

(Consulta) Archivo de conexión en una función

Estas en el tema de (Consulta) Archivo de conexión en una función en el foro de PHP en Foros del Web. Buenas... Estoy haciendo una funcion para insertar registros en la bd pero no me toma el archivo de conexion, solo me lo toma cuando lo ...
  #1 (permalink)  
Antiguo 14/08/2011, 16:35
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
(Consulta) Archivo de conexión en una función

Buenas...

Estoy haciendo una funcion para insertar registros en la bd pero no me toma el archivo de conexion, solo me lo toma cuando lo pongo dentro de la funcion.

Tengo el archivo conexion y el archivo con la funcion por separados y habia hecho lo siguiente:

Código PHP:
Ver original
  1. require_once('conexion.php');
  2. require_once('funciones.php');
  3.  
  4. //****aca demas codigo y prueba de la funcion
  5.  
  6. $probar = funcion('1','2'...);

Despues probe poniendo el archivo de conexion dentro del archivo funciones.php:

Código PHP:
Ver original
  1. require_once('conexion.php');
  2.  
  3. function ($1,$2..) {
  4.  
  5.    //intrucciones y todo eso...
  6.  
  7. }

...y tampoco anduvo, pero si le pongo el archivo de conexion dentro de la funcion si funciona, pero no se si es correcto eso, no me convence:

Código PHP:
Ver original
  1. function ($1,$2..) {
  2.     require_once('conexion.php');
  3.    //intrucciones y todo eso...
  4.  
  5. }

Aclaro q la funcion funciona bien, el tema es el archivo de conexion.
Me parece raro porq he visto ejemplos y ninguno incluye la conexion dentro de la funcion.

Gracias.
Saludos.
  #2 (permalink)  
Antiguo 14/08/2011, 16:57
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: (Consulta) Archivo de conexión en una función

La conexión se puede separar de la función, y de hecho tenerla dentro es un poco un sin sentido.

¿Qué ocurre cuando lo dejas fuera? ¿Te da algún error? (En ese caso dinos cual)
¿No coge la conexión? ¿No entra en la función?

¿Como tienes hecha la conexión?
Sin más datos es difícil saber que puede estar pasando.

Saludos
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 14/08/2011, 17:09
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: (Consulta) Archivo de conexión en una función

Claro, no toma la conexion, no hace el insert.
Cuando coloco la conexion dentro de la funcion si hace el insert lo mas bien.
No tira ningun error de nada, simplemente no toma la conexion.
La funcion es comun, hice una rapida para probar:

De esta forma NO funciona
Código PHP:
Ver original
  1. require_once('conexion.php');
  2.  
  3. function insertDatos($dato1,$dato2,$dato3){
  4.  
  5. $insert = mysql_query("INSERT INTO tabla VALUES ($dato1,$dato2,$dato3)", $link)
  6.              or die(mysql_error());
  7.  
  8. return $insert;
  9.  
  10. }
  11.  
  12.  
  13. $insertar = insertDatos('dato1', 'dato2', 'dato3');

De esta forma SI funciona
Código PHP:
Ver original
  1. function insertDatos($dato1,$dato2,$dato3){
  2.  
  3. require_once('conexion.php');
  4. $insert = mysql_query("INSERT INTO tabla VALUES ($dato1,$dato2,$dato3)", $link)
  5.              or die(mysql_error());
  6.  
  7. return $insert;
  8.  
  9. }
  10.  
  11.  
  12. $insertar = insertDatos('dato1', 'dato2', 'dato3');
  #4 (permalink)  
Antiguo 14/08/2011, 17:12
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: (Consulta) Archivo de conexión en una función

Este es el archivo de conexion.php:

Código PHP:
Ver original
  1. $link = mysql_connect('localhost', 'user', 'pass');
  2. if(!$link){
  3. die('No se pudo conectar: ' . mysql_error());
  4. }
  5.  
  6. $db_selected = mysql_select_db('database', $link);
  7. if(!$db_selected){
  8. die('No se selecciono la base de datos: ' . mysql_error());
  9.  
  10. }
  #5 (permalink)  
Antiguo 14/08/2011, 17:43
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: (Consulta) Archivo de conexión en una función

Claro es porque no te está cogiendo la variable $link.
Supongo que la gente mete en las consultas la conexión porque habá algún maldito tutorial que lo pone así xD (Se suele ver mucho)
Pero es totalmente innecesario.

Edito y te pongo un ejemplo.


conexion.php

Código PHP:
$conexion mysql_connect("***","***","***") or die ( "No se ha podido establecer la conexión con el servidor"); 
mysql_select_db("nombreBD",$conexion); 
Tú pagina:
Código PHP:
require_once('conexion.php');

function 
insertDatos($dato1,$dato2,$dato3){

$insert mysql_query("INSERT INTO tabla VALUES ($dato1,$dato2,$dato3)")
             or die(
mysql_error());
 
return 
$insert;
 
}

$insertar insertDatos('dato1''dato2''dato3'); 
Fíjate que no se le añade un segundo parámentro al mysql_query, sólo la consulta.
De todas formas yo prefiero hacerlo con una clase y con php en modo objeto y limpiando memoria y cerrando la conexión, pero eso debería servirte.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 14/08/2011 a las 17:51
  #6 (permalink)  
Antiguo 14/08/2011, 17:52
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: (Consulta) Archivo de conexión en una función

No lo sabia.
Al consultar si habia hecho bien ese archivo de conexion me dijeron q si.
Por q no es necesario incluir de esa manera la conexion en las consultas?, porq la verdad q me saca de esquema.
  #7 (permalink)  
Antiguo 15/08/2011, 03:35
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: (Consulta) Archivo de conexión en una función

Cita:
Iniciado por reborn Ver Mensaje
No lo sabia.
Al consultar si habia hecho bien ese archivo de conexion me dijeron q si.
Por q no es necesario incluir de esa manera la conexion en las consultas?, porq la verdad q me saca de esquema.
No es que esté mal hecha tu conexión. El problema venía por $link.
Ponías el include de la conexión fuera de la función y cuando entraba en la función no te cogía el valor de esa variable.
Por eso cuando el include estaba dentro si cogía el valor.

De la otra forma que te puse ahí tienes la conexión abierta y no tienes necesidad de ponerlo como segundo parámentro en el mysql_query. De hecho no le veo el sentido de ponerlo dentro del query si total están dejando la conexión abierta y sin limpiar memoria... Para eso es más práctico abrir la conexión como te puse y listo xD.

Siendo un maníatico lo más correcto sería tener una función que estableciera una conexión y otra para las consultas la cual limpiara la memoria de las consultas y cerrara la conexión.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Etiquetas: registro
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 12:07.