Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con funcion redefinida en php

Estas en el tema de Problema con funcion redefinida en php en el foro de PHP en Foros del Web. Hola, tengo este problema. Tengo un archivo con funciones php que al llamarlo me da un error por una función redeclarada, pero no veo que ...
  #1 (permalink)  
Antiguo 10/06/2013, 17:04
 
Fecha de Ingreso: junio-2013
Mensajes: 10
Antigüedad: 10 años, 10 meses
Puntos: 1
Exclamación Problema con funcion redefinida en php

Hola, tengo este problema. Tengo un archivo con funciones php que al llamarlo me da un error por una función redeclarada, pero no veo que haya ninguna funcion redeclarada. Este el texto del error que da el navegador:
"Fatal error: Cannot redeclare obtenerproducto() (previously declared in C:\xampplite\htdocs\misitio2\funciones\funciones.p hp:4) in C:\xampplite\htdocs\misitio2\funciones\funciones.p hp on line 10"


Y este es el código del archivo con la funciones php:

Código PHP:
<?php

function obtenerProducto($id){
    include(
"../incluir/conexion.php");
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}
function 
obtenerDescripcion($id){
    include(
"../incluir/conexion.php");
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['descripcion'];
}
function 
obtenerEstado($id){
    include(
"../incluir/conexion.php");
    
$sql="select*from estado where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['estado actual'];
}
function 
obtenerSemana($id){
    include(
"../incluir/conexion.php");
    
$sql="select*from semana where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['novedad'];
}
function 
obtenerCategoria($id){
    include(
"../incluir/conexion.php");
    
$resultado=mysql_query("select*from categorias where id=$id",$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}

?>
Si alguien logra encontrar el error se lo agradeceré infinitamente.
  #2 (permalink)  
Antiguo 10/06/2013, 17:41
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Problema con funcion redefinida en php

Creo que deberías llamar una sola vez a conexion.php dentro de funciones.php, y después llamar a las funciones que utilizas de ese archivo en cada función de obtenerX(). Incluso creo que podrías llamar una sola vez a conectar() fuera de las funciones y serviría igual (siempre que necesites conectarte cada vez que incluyes el archivo funciones.php).

Código PHP:
 <?php
include("../incluir/conexion.php");

function 
obtenerProducto($id){
    
conectar();
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}
function 
obtenerDescripcion($id){
    
conectar();
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['descripcion'];
}
function 
obtenerEstado($id){
    
conectar();
    
$sql="select*from estado where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['estado actual'];
}
function 
obtenerSemana($id){
    
conectar();
    
$sql="select*from semana where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['novedad'];
}
function 
obtenerCategoria($id){
    
conectar();
    
$resultado=mysql_query("select*from categorias where id=$id",$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}

?>
Fíjate también de no estar llamando muchas veces a funciones.php en tu script. Recuerda que mientras menos código generes y menos código repitas, tu software será menos propenso a errores y más fácil de modificar en el futuro.
Saludos.
  #3 (permalink)  
Antiguo 10/06/2013, 21:21
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Problema con funcion redefinida en php

Es como te dicen y ampliando:

1) Los include o requiere van idealmente (salvo casos particulares como templates) solo al comienzo del archivo
2) No debes hacer include dentro de funciones !
3) conexion.php especialmente debes llamarlo con requiere_once o include_once
__________________
Salu2!
  #4 (permalink)  
Antiguo 13/06/2013, 00:58
 
Fecha de Ingreso: junio-2013
Mensajes: 10
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Problema con funcion redefinida en php

Cita:
Iniciado por RabidFish Ver Mensaje
Creo que deberías llamar una sola vez a conexion.php dentro de funciones.php, y después llamar a las funciones que utilizas de ese archivo en cada función de obtenerX(). Incluso creo que podrías llamar una sola vez a conectar() fuera de las funciones y serviría igual (siempre que necesites conectarte cada vez que incluyes el archivo funciones.php).

Código PHP:
 <?php
include("../incluir/conexion.php");

function 
obtenerProducto($id){
    
conectar();
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}
function 
obtenerDescripcion($id){
    
conectar();
    
$sql="select*from productos where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['descripcion'];
}
function 
obtenerEstado($id){
    
conectar();
    
$sql="select*from estado where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['estado actual'];
}
function 
obtenerSemana($id){
    
conectar();
    
$sql="select*from semana where id=$id";
    
$resultado=mysql_query($sql,$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['novedad'];
}
function 
obtenerCategoria($id){
    
conectar();
    
$resultado=mysql_query("select*from categorias where id=$id",$conexion);
    
$row=mysql_fetch_assoc($resultado);
    return 
$row['nombre'];
}

?>
Fíjate también de no estar llamando muchas veces a funciones.php en tu script. Recuerda que mientras menos código generes y menos código repitas, tu software será menos propenso a errores y más fácil de modificar en el futuro.
Saludos.
Muchas gracias, fue muy útil tu comentario.

Etiquetas: funcion, funciones
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 05:50.