Foros del Web » Programando para Internet » PHP »

Consultas Sql dentro de una funcion

Estas en el tema de Consultas Sql dentro de una funcion en el foro de PHP en Foros del Web. Hola Foreros Llevo varios días lidiando con un problema que no logro solucionar. El caso es que esto montando una especie de sistema de módulos ...
  #1 (permalink)  
Antiguo 19/05/2015, 01:59
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 10 meses
Puntos: 0
Consultas Sql dentro de una funcion

Hola Foreros

Llevo varios días lidiando con un problema que no logro solucionar. El caso es que esto montando una especie de sistema de módulos para web parecido al de Prestashop con algo parecido a los hooks "ganchos". Mi intención es crear una función que llame a un nombre de hook especifico por ejemplo el hook "top", entonces la consulta sql se realizaría en función del hook. Mi problema es que no me devuelve nada y ya he probado varias opciones.

Por ejemplo, el gancho "top" se establecería como
Código PHP:
 function get_modules (top) {} 

y la función seria algo así.

Código PHP:
function get_module ($hook) {


    
/* Hago la consulta*/
        
$show_modules "SELECT * FROM modules WHERE hook=$hook ORDER BY position ASC";
        
$datos_modules=mysql_query($show_modules,$con);


        while (
$row_modules=mysql_fetch_array($datos_modules)) {

    
/* Incluyo los modulos correspondientes de la carpeta modules*/
        
$include="modules/" $row_modules['route'];

        include(
$include);
      }
      
    } 

El caso que esto funciona cuando esta fuera de la función pero cuando esta dentro ni se inmuta. Me es indispensable que esté dentro de una funcion ya que necesito llamar esa funcion para establecer los hooks. por ejemplo
Código PHP:
 function get_modules (top) {},  function get_modules (footer) {} 

Gracias de antemano foreros, espero vuestra ayuda.
  #2 (permalink)  
Antiguo 19/05/2015, 06:06
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: Consultas Sql dentro de una funcion

Es sencillo...

Dentro de la función, $con no existe ;)

Deberías revisar los "scopes" (o ámbitos) de las variables en php
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 19/05/2015, 06:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Consultas Sql dentro de una funcion

Aquí está el manual sobre el ámbito de las variables: http://php.net/manual/es/language.variables.scope.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 20/05/2015, 01:55
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consultas Sql dentro de una funcion

Muchísimas gracias Eleazan y pateketrueke, ademas de solucionar un problema he aprendido algo nuevo y muy útil.

Gracias a ustedes he solucionado un problema pero me he dado cuenta de otro y es que php me da un error cuando llamo a las funciones mas de una vez en la misma pagina.

El código final que he puesto es este:

Código PHP:
function get_module ($hook) {

    global 
$con;

    
$show_modules "SELECT * FROM modules WHERE hook='$hook' ORDER BY position ASC";
    
$datos_modules=mysql_query($show_modules,$con);

    while (
$row_modules=mysql_fetch_array($datos_modules)) {

        
$include="modules/" $row_modules['route'];

        include(
"$include");
    }

y los llamo de esta manera:


Código PHP:
<? include("controllers/module_controller.php"); get_module("body_top");?>
  ......  

  <? include("controllers/module_controller.php"); get_module('body_footer');?>

Cuando compruebo el primer modulo hace su funcion y funciona perfectamente. Pero el segundo modulo me muestra el siguiente error: Fatal error: Cannot redeclare get_module() (previously declared in /homepages/28/d291937802/htdocs/def/controllers/module_controller.php:4) in /homepages/28/d291937802/htdocs/def/controllers/module_controller.php on line 17


Ha que puede ser debido? No se puede ejecutar el mismo modulo en el mismo tiempo de compilación mas de una vez?


Saludos
  #5 (permalink)  
Antiguo 20/05/2015, 08:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Consultas Sql dentro de una funcion

Cita:
No se puede ejecutar el mismo modulo en el mismo tiempo de compilación mas de una vez?
No es que se "ejecute dos veces", sucede que estás declarando dos veces la misma función y eso no es posible.

Es decir, la definición de una función o clase se hace una sola ves, de ahí la puedes reutilizar muchas veces.

Ese es tu problema ahora: en algún lado estás volviendo a declarar (no ejecutar) la misma función.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 21/05/2015, 01:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consultas Sql dentro de una funcion

Pues ahora mismo no te entiendo muy bien, me quieres decir que es inviable de la forma que lo estoy haciendo?

un pequeño arreglo que intenté es quitar el segundo include así intuí que no se declararía la función dos veces, ahora no me muestra el error pero creo que simplemente porque no tiene el include aunque creía con un include habría suficiente.

Código PHP:
<? include("controllers/module_controller.php"); get_module("body_top");?> 
  ......   

  <? get_module('body_footer');?>
Lo mas seguro que no le esté aplicando una buena logica a este sistema que he intentado copiar de Prestashop.

Gracias de nuevo Foreros

Etiquetas: funcion, select, sql
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 13:09.