Foros del Web » Programando para Internet » PHP »

error en la conexion a la bdd (mysql)

Estas en el tema de error en la conexion a la bdd (mysql) en el foro de PHP en Foros del Web. hola a todos apache 1.3.27 - php 4.3.3 - mysql 4.0.15 - phpmyadmin 2.5.3 me da un error al intentar conectar a la bdd (mysql) ...
  #1 (permalink)  
Antiguo 26/11/2004, 18:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
Busqueda error en la conexion a la bdd (mysql)

hola a todos
apache 1.3.27 - php 4.3.3 - mysql 4.0.15 - phpmyadmin 2.5.3
me da un error al intentar conectar a la bdd (mysql) no se pq.

funciones.php
function conectar_bdd($host_bdd, $usuario_bdd, $clave_bdd, $nombre_bdd)
{

$conectar = mysql_connect($host_bdd, $usuario_bdd, $clave_bdd);
mysql_select_db($nombre_bdd, $conectar);
}


index.php
include("../libreria/funciones.php");
$host_bdd = "localhost";
$usuario_bdd = "nombre";
$clave_bdd = "clave";
$nombre_bdd = "bdd";
conectar_bdd($host_bdd, $usuario_bdd, $clave_bdd, $nombre_bdd);



este es el error que me sale al cargar el index.php:
Fatal error: Cannot redeclare conectar_bdd() (previously declared in e:\...\libreria\funciones.php:13) in e:\...\libreria\funciones.php on line 13


he buscado alguna otra llamada a esa funcion q se me haya pasado por error pero no hay ninguna.
algun consejo?
gracias a todos por adelantado, especialmente a cluster q siempre esta ayudando.
un saludo
__________________
:adios: Saludos
Dokan
  #2 (permalink)  
Antiguo 26/11/2004, 19:01
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Si enn lugar de include usas require_once() ?

index.php
require_once("../libreria/funciones.php");
$host_bdd = "localhost";
$usuario_bdd = "nombre";
$clave_bdd = "clave";
$nombre_bdd = "bdd";
conectar_bdd($host_bdd, $usuario_bdd, $clave_bdd, $nombre_bdd);
  #3 (permalink)  
Antiguo 27/11/2004, 08:18
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
ok, gracias, seguia dandome el mismo error, pero tb tenia include("funciones.php") en el layout, en el foro, etc...
los he quitado todos y he dejado solo el del index.php y por ahora se soluciona el problema.
no sabia q solo era necesario ponerlo una vez, ¿sera pq es una pagina con modulos y tal?
gracias por la ayuda
__________________
:adios: Saludos
Dokan
  #4 (permalink)  
Antiguo 27/11/2004, 14:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debes pensar que un "include()" lo que hace es llamar al código que en la página que apuntas llama y todo ello junto con el própio código del script que lo llamó y otros includes() que llames en sus respectivas partes .. formarán un único "código" (script) que se ejecutará.

Si tu usas una estructura de tu sitio "modular" donde tienes un "index.php" que bajo algún switch() o if .. y demás vas llamando a otros "scripts/modulos" vìa include .. dependiendo del caso que defina tu condicional .. todo ello va a formar un mismo código .. he de ahì que PHP te diga que esa funciòn ya existe.

Para solventar ese problema en caso de que en esos módulos necesitases de esos "include()" (por si son llamadas directamente o los usas independientes) .. Puedes usar lo que ya te recomendaron: include_once() .. esa función verifica lo que incluye si ya existe (caso por ejemplo que lo definas en tu "index.php") para no incluirlo nuevamente evitando el problema de funciones duplicadas.

Un saludo,
  #5 (permalink)  
Antiguo 27/11/2004, 17:26
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
gracias Cluster, con vuestra ayuda vi la luz hasta q me surgio otro problema q llevo toda la tarde intentando resolver.

cuando abro un mensaje de mi foro (casero) me vuelve al home, pienso q es algun problema con la $id pq me sale el siguiente error despues de mostrar los mensajes en el foro, si es asi no se como he de definirla ... ya me salio el mismo error con $color y ya no me sale, pero no hay cambios en la web...
Notice: Undefined index: id in e:\programació\php\www\webbase\modulos\foro.php on line 30

foro.php

$sql = "SELECT id, autor, titulo, fecha, respuestas, ult_respuesta ";
$sql.= "FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC";
$rs = mysql_query($sql);
$color='white';//puse esto pq me daba error variable $color no definida
if(mysql_num_rows($rs)>0)
{
$template = implode("", file("./foro/ftemplates/temas.html"));
include('./foro/fincludes/titulos.html');
while($row = mysql_fetch_assoc($rs)) {
$color=($color==""?"#5b69a6":"");
$row["color"] = $color;
mostrarTemplate($template, $row);
}
}
$id = $_GET["id"];
if(!empty($id))
{
$sql = "SELECT id, autor, titulo, mensaje, ";
$sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql.= "WHERE id='$id' OR identificador='$id' ORDER BY fecha ASC";
$rs = mysql_query($sql);
if(mysql_num_rows($rs)>0)
{
include('./foro/fincludes/titulos_post.html');
$template = implode("", file('./foro/ftemplates/post.html'));
while($row = mysql_fetch_assoc($rs))
{
$color=($color==""?"#5b69a6":"");
$row["color"] = $color;
$row["mensaje"] = nl2br($row["mensaje"]);
$row["mensaje"] = parsearTags($row["mensaje"]);
mostrarTemplate($template, $row);
}
}
}
?>


en este archivo esta el link donde al pulsar me manda al home
temas.html (ademas de una tabla en html)
<a href="?mod=foro?id=<?=$id?>"><?=$titulo?></a>

register_globals esta en ON, por si sirve de ayuda (creo q anda por el _get el error pero ando muy perdido)
yo llevo desde las 17h de esta tarde (hora española) haciendo el tonto y no encuentro nada.
gracias por adelantado.
__________________
:adios: Saludos
Dokan
  #6 (permalink)  
Antiguo 28/11/2004, 19:08
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
olvide decir que es una web modular y viene de ahi el problema.
le he pegado bastantes vueltas desde el sabado y he descubierto que el problema esta en que al pulsar el link href=http:/localhos/?mod=foro?id=3 (<a href="?mod=foro?id=<?=$id?>"><?=$titulo?></a>) distingue entre 'foro' y 'foro?id=3' como modulos distintos y por eso me cargaba el home q era el modulo por defecto, ahora he puesto un modulo 'error404' por defecto y me carga ese diciendome q no encuentra /?mod=foro?id=8
¿como puedo solucionar esto?
pienso que el problema puede ser por como estan configurados los modulos, aqui os muestro el archivo index.php y conf.php por si veis q esta mal.
index.php
<?php
require_once('conf.php');
require_once("../libreria/funciones.php");
if (!empty($_GET['mod']))
$modulo = $_GET['mod'];
else
$modulo = MODULO_DEFECTO;
if (empty($conf[$modulo]))
$modulo = MODULO_DEFECTO;
if (empty($conf[$modulo]['layout']))
$conf[$modulo]['layout'] = LAYOUT_DEFECTO;
$path_layout = LAYOUT_PATH.'/'.$conf[$modulo]['layout'];
$path_modulo = MODULO_PATH.'/'.$conf[$modulo]['archivo'];
if (file_exists($path_layout))
include( $path_layout );
else
if (file_exists( $path_modulo ))
include( $path_modulo );
else
die('Error al cargar el mdulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
?>

conf.php
<?php
define('MODULO_DEFECTO', 'error');
define('LAYOUT_DEFECTO', 'layout_simple.php');
define('MODULO_PATH', realpath('./modulos/'));
define('LAYOUT_PATH', realpath('./layouts/'));
$conf['home'] = array('archivo'=>'home.php','layout'=>LAYOUT_DEFEC TO );
$conf['articulo'] = array('archivo'=>'art.php' );
$conf['foro'] = array('archivo'=>'foro.php','layout'=>'layout_foro .php' );
$conf['imp_art'] = array('archivo'=>$conf['articulo']['archivo'],'layout'=>'imprimir.php');
$conf['error'] = array('archivo'=>'mi404.php','layout'=>LAYOUT_DEFE CTO );
?>

ademas de pocos añadidos mios son iguales que los que se puede encontrar en el tutorial sobre webs modulares ofrecido por webstudio en www.zonaphp.com, he pensado en hacer webs modulares con switch tal y como se describe en las faq de este foro para ver si asi se soluciona, ademas de q parece mas sencillo. ¿algun consejo?
(con esta tonteria de error que no encuentro estoy empezando a enterarme de como funciona php mas que en un mes q llevo leyendo cosillas )
__________________
:adios: Saludos
Dokan
  #7 (permalink)  
Antiguo 28/11/2004, 19:16
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Prueba a cambiar

if(!empty($id))

por

if(isset($id) && !empty($id))
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #8 (permalink)  
Antiguo 28/11/2004, 22:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
eso tampoco funciona :(
__________________
:adios: Saludos
Dokan
  #9 (permalink)  
Antiguo 29/11/2004, 07:39
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
resumiendo, creo q hay dos errores en el script que no se solucionar:

1º al pulsar el link href=http:/localhos/?mod=foro?id=3 (<a href="?mod=foro?id=<?=$id?>"><?=$titulo?></a> en el archivo temas.html) distingue entre 'foro' y 'foro?id=3' como modulos distintos. ni puñetera idea d como solucionarlo.

2º al cargar el foro me da el error "Notice: Undefined index: id in e:\programació\php\www\webbase\modulos\foro.php on line 34"
(linea 34 ->$id = $_GET["id"];) por lo que creo que el codigo no esta bien, falta algo o sobra algo.
he añadido este codigo justo antes de la linea 34 para comprovar q pasa con _GET y con id:
if (in_array ("id", $_GET)) print "Encontrada id";
else echo 'no se ha encontrado el campo <b>id</b> en el array '.$_GET;
y el resultado al cargar la web es, como era de esperar, "no se ha encontrado el campo id en el array Array"
tampoco tengo ni idea de como puedo solucionar esto.

pues eso, llevo dandole vueltas desde el sabado, si alguien cree saber donde esta el problema que lo diga q ya lo pego yo las vueltas que haga falta.
gracias a todos y un saludo.
__________________
:adios: Saludos
Dokan
  #10 (permalink)  
Antiguo 29/11/2004, 10:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los errores que obtienes son "avisos" .. avisos de una "mala" programación ...

Cuando llamas a una variable externa (las que te llegan por el URL en GET o POST .. o son cookies o variables de sessión .. de servidor .. etc) Tendrías que hacer cosas como:

Código PHP:
if (isset($_GET['variable'])){
// si está definida tal variable .. la usas.

Eso es así por el nivel de errore que muestra PHP .. el cual se puede "bajar" para que puedas programar "mal" con tranquilidad, pero se debería programar usando ese tipo de estructuras condicionales:

error_reporting()
www.php.net/error_reporting

(revisa esa función y la directiva de PHP.ini de mismo nombre).

Un saludo,
  #11 (permalink)  
Antiguo 29/11/2004, 16:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
gracias. ahora ya no me da le error de variable no definida.
pero el problema es que la variable sigue sin estar definida. al pulsar el link q pasa la variable por url se distingue entre 'foro' y 'foro?id=3' como modulos distintos (repito por si acaso que es una web modular), es decir, $_GET['variable'] no recibe valor alguno pq no hay variable externa, ya que se toma 'foro?id=3' como nombre de modulo y al no existir este carga el modulo por defecto.
__________________
:adios: Saludos
Dokan
  #12 (permalink)  
Antiguo 30/11/2004, 18:41
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
¿es necesario iniciar sesiones para pasar variables (aunque sea con $_GET)?
ya no se que hacer para que funcione y como tengo que hacer sesiones para que los usuarios se autentifiquen en el foro, creo que voy a utilizarlas tb para pasar esta variable y a ver si mas adelante sale el problema, pq por ahora creo que estoy demasiado verde para encontrarlo.
__________________
:adios: Saludos
Dokan
  #13 (permalink)  
Antiguo 09/12/2004, 17:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
sigo trabajando con las sesiones para el foro con ayuda de las faqs de FDW, si se os ocurre algun consejillo para solucionar esto ultimo, o por donde puedo empezar a mirar...
por cierto, hablando de mirar, he estado leyendo el post en el que se ha pedido un subforo de php orientado a objetos, y ahora que estoy empezando a aprender php (y a programar) tengo una duda;
me recomendais que me ponga con POO,
sigo con lo que estoy haciendo de momento y lo dejo para mas tarde cuando tenga un poco mas de idea,
o intento llevar programacion estructurada (como creo que la habeis llamado) y POO a la vez para aprovechar el tiempo.
por el momento voy a seguir peleando con las sesiones...
__________________
:adios: Saludos
Dokan
  #14 (permalink)  
Antiguo 09/12/2004, 17:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Para separar variables en el query string debes utilizar "&" y no "?"...
O sea que tu query string debe generarse así: ?mod=foro&id=3

Saludos
  #15 (permalink)  
Antiguo 10/12/2004, 09:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 46
Antigüedad: 13 años, 1 mes
Puntos: 0
q patan soy, no tengo remedio...
ahora funciona perfectamente sin sesiones ni nada.
gracias JPinedo por avisar del detalle.
__________________
:adios: Saludos
Dokan
  #16 (permalink)  
Antiguo 10/12/2004, 15:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
ja, ja, ja... así nos pasa a todos a veces....
Los errores pequeños si no los vemos a la primera a veces se vuelven "invisibles"...

Saludos
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:38.