Foros del Web » Programando para Internet » PHP »

Ayuda con include

Estas en el tema de Ayuda con include en el foro de PHP en Foros del Web. Buenas a todos, es la primera vez que posteo por aquí aunque ya en muchas oportunidades he revisado el foro en busca de soluciones (Generalmente ...
  #1 (permalink)  
Antiguo 28/03/2010, 18:52
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Ayuda con include

Buenas a todos, es la primera vez que posteo por aquí aunque ya en muchas oportunidades he revisado el foro en busca de soluciones (Generalmente encuentro todo )

A ver, mi duda es la siguiente. Estoy desarrollando una página en HTML - PHP y una base de datos en postgreSQL. Toda lo que he desarrollado va muy bien hasta que me sucede lo siguiente

Fatal error: Cannot redeclare conexion() (previously declared in C:\wamp\www\..\manejadorBD.php:2) in C:\wamp\www\...\manejadorBD.php on line 7

(He sustituido parte de la dir por los puntos )

El error se presenta aquí:

include("C:\wamp\www\...\controladorBD.php");
$c=conectar($curso);
$p=conectar($cedula);

donde las variables $curso y $cedula son dos string que definen un query a la BD.

La funcion conectar es la siguiente:

function conectar($query){
include ("C:\wamp\www\...\manejadorBD.php");
$result=conexion($query);
return $result;
}

y la funcion conexion es:

function conexion($query){
$conn=pg_connect("host=localhost port=5432 user=postgres dbname=xxx password=xxx");
$result=pg_query($conn,$query);
pg_close($conn);
return $result;
}

Ya he realizado consultas de esta manera en este mismo proyecto pero no había llamado dos veces a la funcion conectar() desde el mismo .php

Mi pregunta: ¿ Es posible incluir dos veces a la misma funcion tal como lo estoy haciendo? En caso de que la respuesta sea "No", ¿Cómo podría solucionarlo?

De antemano gracias!!!

Última edición por elan611; 28/03/2010 a las 21:30 Razón: Solucionado
  #2 (permalink)  
Antiguo 28/03/2010, 19:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde Configuración a PHP

Usa include_once para incluir solo una vez la definición de la función.

Saludos.
  #3 (permalink)  
Antiguo 28/03/2010, 19:19
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Ayuda con include

Un include dentro de una función no tiene sentido, se supone que uno hace una función para llamarla más de una vez, si necesitara ejecutar un código una sola vez no haría una función, de hecho crear una función aumenta el uso de recursos y si no se usa más de una vez no tiene sentido crearla.

Bien, solo saca ese include fuera de la función y asunto solucionado, llamar dos veces a un mismo include provoca ese error. Otra cosa más, por qué usas esta ruta? C:\wamp\www\...\controladorBD.php, lo más lógico es usar la ruta relativa no la absoluta, qué pasará cuando lo cuelgues en Internet? no cogerá ese archivo, así nunca tengas que colgarlo no es nada recomendable usar una ruta absoluta así, coloca la relativa nada más.

Espero que mis recomendaciones te sirvan de algo. Suerte!
  #4 (permalink)  
Antiguo 28/03/2010, 20:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda con include

Después de postear fue que me di cuenta que ahí no iba el post

Gracias a ambos por responder.

GatorV, ya utilicé include_once() y require_once() y en ambos casos obtuve el mismo resultado.

Eljavista, tienes razon en lo que dices y lo único con lo que puedo argumentar es diciendo que estoy tratando de realizar la pag mediante MVC (Modelo - Vista - Controlador) .. Si no lo conoces puedes buscarlo en wikipedia que está muy bien explicado allí. Con lo de las rutas pues, por lo momentos sólo pruebo en local, luego las cambio para colgarlo en la web ;) y bueno, intentaré eliminando la funcion y y luego comento.
  #5 (permalink)  
Antiguo 28/03/2010, 21:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda con include

Listo, problema solucionado.. Buscando en el Manual de PHP y considerando lo que ambos respondieron, he hecho esto y funciona a la perfeccion

function conectar($query){
include ("C:\wamp\...\manejadorBD.php");
return $result;
}

y el archivo manejadorBD.php
<?PHP
$conn=pg_connect("host=localhost port=5432 user=postgres dbname=xxx password=xxx");
$result=pg_query($conn,$query);
pg_close($conn);
?>

Gracias nuevamente a ambos :)

Etiquetas: include
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 10:02.