Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   MySQL e Include, no me sale :( (https://www.clubdelphi.com/foros/showthread.php?t=29303)

D-MO 18-01-2006 18:23:10

MySQL e Include, no me sale :(
 
Hola, hoy tengo este problema:

Hago una consulta a la base de datos para obtener el nombre de un archivo el cual sera incluido segun sea el orden que este posee en la base de datos, la consulta la hago de la siguiente manera:
Código PHP:

$result =mysql_query('SELECT nombre FROM dmo_modulos ORDER BY orden ASC');
while (
$mods=mysql_fetch_object($result)){
include (
'mods/'.$mods->nombre.'.php');
}; 

pero tengo 2 archivos y tan solo me incluye uno de ellos, luego intente cambiando el orden de ascendente a descendente y me queda de esta manera:
Código PHP:

$result =mysql_query('SELECT nombre FROM dmo_modulos ORDER BY orden DESC');
while (
$mods=mysql_fetch_object($result)){
include (
'mods/'.$mods->nombre.'.php');
        }; 

Y ahora me carga ambos archivos:confused:, porque pasa esto, si esta en ascendente, solo carga el primero, pero si esta en descendente me carga ambos.

Necesito que me los cargue en el orden en el cual estan en la base de datos, ¿Alguien sabe porque es esto:confused:?...¿alguna forma de arreglarlo?...

Si en lugar del include coloco "print_r($mods)", en ambos casos me muestra los datos completos.

Gracias por su ayuda.

roman 18-01-2006 18:46:01

Lo veo raro. ¿Qué pasa si, por probar, te olvidas un momento de la consulta sql y haces los dos include() manualmente en el orden requerido?

// Saludos

D-MO 18-01-2006 18:56:22

Cita:

Empezado por roman
Lo veo raro. ¿Qué pasa si, por probar, te olvidas un momento de la consulta sql y haces los dos include() manualmente en el orden requerido?

lo hice en este momento, me cargo ambos archivos correctamente.

D-MO 18-01-2006 20:32:08

Solucionado, por decirlo asi
 
E hecho esto:
Código PHP:

    $result =mysql_query('SELECT nombre FROM dmo_modulos ORDER BY orden ASC');
        
$i=0;
        while (
$mods=mysql_fetch_object($result)){
            
$i++;
            
$nombre[$i]=$mods->nombre;
        };
        foreach (
$nombre as $m){
            include (
'mods/'.$m.'.php');
        }; 

Con lo que me da el resultado deseado, pero me gustaria seguir este tema para saber cual era el problema, ya que la verdad a mi me parece muy raro esto y he pasado un buen rato dandole todas las vueltas que se me ocurren.

Saludos.

roman 18-01-2006 20:37:55

¿Qué pasa si en lugar de fetch_object usas fetch_array?

Código PHP:

$result =mysql_query('SELECT nombre FROM dmo_modulos ORDER BY orden ASC');
while (
$mods=mysql_fetch_array($result))
{
  include (
'mods/'.$mods[0].'.php');


// Saludos

D-MO 18-01-2006 20:45:26

Cita:

Empezado por roman
¿Qué pasa si en lugar de fetch_object usas fetch_array?

ya lo he intentado con ...fetch_object ,..array,..assoc y en cada uno de ellos ocurre lo mismo.

kayetano 19-01-2006 11:17:17

Hola

El sistema de carga es correcto. Casi seguro que el problema es del contenido de los includes ¿Se puede ver el contenido de los includes?

D-MO 19-01-2006 16:52:02

Hola
 
Fijate Kayetano que gracias a esto:
Cita:

Empezado por kayetano
Casi seguro que el problema es del contenido de los includes

me puse a revisar cada uno de ellos y creo que si el problema estaba ahi y es este:

En el script que cargaba los archivos tenia:
Código PHP:

$result =mysql_query('SELECT nombre FROM dmo_modulos ORDER BY orden ASC');
while (
$mods=mysql_fetch_object($result)){
include (
'mods/'.$mods->nombre.'.php');
}; 

y el codigo del primer archivo es:
Código PHP:

<? defined ('_dmox') or die ('No tiene permitido ver este recurso');
global 
$mods;
?>
<table class="tabladecontenido" width="100%"  align="center"border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
    
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td class="titulo"><? echo $mods->titulo ?></td>
       </tr> 
<?     
     $result 
mysql_query("SELECT titulo, vinculo, orden FROM dmo_menu WHERE menu='principal' AND activo='1' ORDER BY orden");
     while (
$row mysql_fetch_object($result)) { ?>
           <tr>
          <td class="mprin" ><a  href="<? echo $row->vinculo?>" class="mprin" title="<? echo $row->titulo?>"><? echo $row->titulo?></a></td>
           </tr> 
<? ?>
    
</table></td></tr></table>

Como se podrán dar cuenta, en ambas consultas utilizo la variable $result para capturar el resultado de la consulta a la base de datos y por lo tanto al ser este el primer archivo a cargar era imposible que a la siguiente vuelta del while se pudiera cargar otro archivo pues habia cambiado el valor de la variable $result.

Bueno, gracias a ambos por su ayuda, me ha servido de mucho.

Saludos.

P.D.//Quien se hubiera imaginado que era algo tan facil por lo que me habia estado matando desde ayer. Bueno a seguir trabajando.

kayetano 19-01-2006 19:14:52

Hola

En efecto, al incluir el archivo machacas el contenido de la variable y pierdes la consulta original. A veces el problema esta donde menos nos imaginamos.


La franja horaria es GMT +2. Ahora son las 00:36:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi