Foros del Web » Programando para Internet » PHP »

Ayuda - While de php me rompe la estructura de HTML

Estas en el tema de Ayuda - While de php me rompe la estructura de HTML en el foro de PHP en Foros del Web. Hola chicos, espero puedan ayudarme, necesito meter en mi pagina web un menu desplegable del cual elegi [URL="http://www.araudi.net/Desplegables/menu_desplegable8.html"]el siguiente formato[/URL] tomado de una pagina web. ...
  #1 (permalink)  
Antiguo 03/05/2010, 16:24
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Ayuda - While de php me rompe la estructura de HTML

Hola chicos, espero puedan ayudarme, necesito meter en mi pagina web un menu desplegable del cual elegi [URL="http://www.araudi.net/Desplegables/menu_desplegable8.html"]el siguiente formato[/URL] tomado de una pagina web. Despues le cambiare las propiedades de css, para darle el formato apropiado.
El problema consiste en que de la forma que lo estoy usando me rompe las propiedades del menu, y a continuacion dejo el codigo con los scripts que utilizo, y tambien imagenes de como me rompe el mismo menu.

El codigo
Código PHP:
echo '<ul>';
$sql "SELECT * FROM n1 ORDER BY codigo_n1";
$result mysql_query($sql,$link);
while(
$n1 mysql_fetch_array($result)){
    echo 
'<li class="nivel1"><a href="#" class="nivel1">'.$n1[codigo_n1].'</a></li>';
    
$id1 $n1[id_n1];
    
//$muesmenu = $n1[codigo_n1].','.$muesmenu;
    //echo $menumues[n1][id];
    
$sql1 "SELECT * FROM n2 WHERE id_n1='$id1' ORDER BY codigo_n2";
    
$result1 mysql_query($sql1,$link);
    echo 
'<ul>';
    
    while(
$n2 mysql_fetch_array($result1)){
        
//$muesmenu2 = $n2[codigo_n2].','.$muesmenu2;
        
echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
        
    }
    echo 
"</ul>";
}


echo 
'<ul>'
Lo que hace que que el menu se vea asi, en lugar de como deberia verse:



Tambien probe de esta manera, con un script similar.. Pero tratando de guardar los id, y despues tratando de mostrar el string mediante un foreach, pero el problema ahora no esta en que se rompe el menu, porque anda bien. Pero no muestra los datos como deberian ser, ya que me selecciona y me muestra todos los datos en el segundo nivel, para cada uno de los del primer nivel, es decir, necesito que las letras minusculas del segundo nivel ('aaaaa' , 'sssssss' , 'ddddddd') se desprendan del primer nivel ('INSECTOS') como lo muestra la primer imagen. Y del primer nivel 'ENFERMEDADES' que se desprendan las otras en mayusculas del segundo nivel, tambien como muestra la primer imagen, pero sin que se rompa el menu, no se si me explico. A continuacion dejo el codigo, y tambien las imagenes de lo que me esta generando este codigo..
Ademas como veran, al final me genera un campo vacio, producto de la concatenacion del string al ir leyendo de la base de datos, el cual no deberia estar..

Código PHP:
$sql "SELECT * FROM n1 ORDER BY codigo_n1";
$result mysql_query($sql,$link);
while(
$n1 mysql_fetch_array($result)){
    
//echo '<li class="nivel1"><a href="#" class="nivel1">'.$n1[codigo_n1].'</a></li>';
    
$id1 $n1[id_n1];
    
$muesmenu $n1[codigo_n1].','.$muesmenu;
    
//echo $menumues[n1][id];
    
$sql1 "SELECT * FROM n2 WHERE id_n1='$id1' ORDER BY codigo_n2";
    
$result1 mysql_query($sql1,$link);
    
//echo '<ul>';
    
    
while($n2 mysql_fetch_array($result1)){
        
$muesmenu2 $n2[codigo_n2].','.$muesmenu2;
        
//echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
        
    
}
    
//echo "</ul>";
}


echo 
'<ul>';

foreach (
explode (',',$muesmenu) as $ole){
    
        
        echo 
'<li class="nivel1"><a href="#" class="nivel1">'.$ole.'</a>';
        
        echo 
'<ul>';
        foreach (
explode (',',$muesmenu2) as $ole1){
             echo 
'<a href="#">'.$ole1.'</a></li>';
             
        }
        echo 
'</ul>';
}
echo 
'</ul>'




Espero que me puedan ayudar, si llegaron hasta aca, ya les dejo sus mas merecidas gracias por el simple hecho de haber prestado atencion y haber leido..

Saludos y gracias de nuevo..
  #2 (permalink)  
Antiguo 03/05/2010, 16:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: Ayuda - While de php me rompe la estructura de HTML

Puesto que tengo uno parecido, que si me lo hace bien, te diré como se hace sin hacertelo.

Lo que tienes que hacer es el <ul> dentro del while, cuando carga el segundo while, le tienes que añadir un if, poniendole que si tiene contenido(valla, si se va a activar el while), ponga el <ul>
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #3 (permalink)  
Antiguo 03/05/2010, 18:30
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda - While de php me rompe la estructura de HTML

Cita:
Iniciado por millan2525
Puesto que tengo uno parecido, que si me lo hace bien, te diré como se hace sin hacertelo.

Lo que tienes que hacer es el <ul> dentro del while, cuando carga el segundo while, le tienes que añadir un if, poniendole que si tiene contenido(valla, si se va a activar el while), ponga el <ul>
Cual de los scripts decis que es el correcto y que deberia corregir?? el primero que incluí (que no incluye el foreach) o el segundo (que luego del select de la base de datos, hace el foreach)??

Saludos y gracias por la pronta ayuda
  #4 (permalink)  
Antiguo 03/05/2010, 18:58
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: Ayuda - While de php me rompe la estructura de HTML

el segundo, pero no por el foreach

La idea es que sea asi:

<ul>
while(busquedadeindices)(o foreach o lo que sea)
{
echo "<li>....</li>";
if(isset(busqueda2))
{echo "<ul>"; }
while($ba=mysql_fle...)
{
echo "<li>".$ba['idindice']."</li>";
}
if(isset(busqueda2))
{echo "</ul>"; }
}
</ul>

Por si no se entendió, te lo explico

Necesitas un <ul> antes de nada para empezar a poner cualquier cosa, por eso va fuera del while.

Por otro lado, necesitas al indice, ponerle <li></li> y seguido, si tiene subindices, ponerle <ul></ul>, pero si no los tiene, no

Por eso tienes mal

echo '<ul>';

while($n2 = mysql_fetch_array($result1)){
//$muesmenu2 = $n2[codigo_n2].','.$muesmenu2;
echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';

}
echo "</ul>";

Porque no verificas, entonces siempre te los pondrá.

Depende de tu caso puede que sea así, y que el error al que te refieres sea otro, pero al menos eso a mi me estuvo mareando, y por eso te lo digo
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #5 (permalink)  
Antiguo 03/05/2010, 19:06
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda - While de php me rompe la estructura de HTML

Asi me decias vos ?? Lo probe de esta forma y sigue igual ..

Código PHP:
$sql "SELECT * FROM n1 ORDER BY codigo_n1";
$result mysql_query($sql,$link);
while(
$n1 mysql_fetch_array($result)){
    echo 
'<ul>';
    echo 
'<li class="nivel1"><a href="#" class="nivel1">'.$n1[codigo_n1].'</a></li>';
    
$id1 $n1[id_n1];
    
$muesmenu $n1[codigo_n1].','.$muesmenu;
    echo 
$menumues[n1][id];
    
$sql1 "SELECT * FROM n2 WHERE id_n1='$id1' ORDER BY codigo_n2";
    
$result1 mysql_query($sql1,$link);
    
    if (
count (mysql_fetch_array($result1)) != 0){
        while(
$n2 mysql_fetch_array($result1)){
            echo 
'<ul>';
            
$muesmenu2 $n2[codigo_n2].','.$muesmenu2;
            echo 
'<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
        
        }
    }
            echo 
"</ul>";
}
    echo 
'</ul>'
muchas Gracias por el apoyo..
  #6 (permalink)  
Antiguo 03/05/2010, 19:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: Ayuda - While de php me rompe la estructura de HTML

if (count (mysql_fetch_array($result1)) != 0){
echo '<ul>';
while($n2 = mysql_fetch_array($result1)){
$muesmenu2 = $n2[codigo_n2].','.$muesmenu2;
echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
}
echo "</ul>";
}
Así lo decía yo, pero lo que te digo, tal vez sea otra cosa, pero pruebalo :S

EDITO, y al principio, el <ul> fuera del while
echo '<ul>';
while($n1 = mysql_fetch_array($result)){
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #7 (permalink)  
Antiguo 03/05/2010, 19:18
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda - While de php me rompe la estructura de HTML

Código PHP:
$sql "SELECT * FROM n1 ORDER BY codigo_n1";
$result mysql_query($sql,$link);
echo 
'<ul>';
while(
$n1 mysql_fetch_array($result)){
    echo 
'<li class="nivel1"><a href="#" class="nivel1">'.$n1[codigo_n1].'</a></li>';
    
$id1 $n1[id_n1];
    
//$muesmenu = $n1[codigo_n1].','.$muesmenu;
    
echo $menumues[n1][id];
    
$sql1 "SELECT * FROM n2 WHERE id_n1='$id1' ORDER BY codigo_n2";
    
$result1 mysql_query($sql1,$link);
    
    if (isset (
$result1)){
        echo 
'<ul>';
    }
    while(
$n2 mysql_fetch_array($result1)){
    
    
//$muesmenu2 = $n2[codigo_n2].','.$muesmenu2;
    
echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
    }
    if (isset (
$result1)){
        echo 
'<ul>';
    }
}
echo 
'</ul>'
Asi me quedo pero sigue corriendo igual ...

Gracias
  #8 (permalink)  
Antiguo 03/05/2010, 19:20
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: Ayuda - While de php me rompe la estructura de HTML

te haré una pregunta...

te has fijado que hay un ul que quieres cerrar y lo estás abriendo?

if (isset ($result1)){
echo '<ul>';
}
while($n2 = mysql_fetch_array($result1)){

//$muesmenu2 = $n2[codigo_n2].','.$muesmenu2;
echo '<li class="primera"><a href="#">'.$n2[codigo_n2].'</a></li>';
}
if (isset ($result1)){
echo '<ul>';
}
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #9 (permalink)  
Antiguo 03/05/2010, 19:36
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda - While de php me rompe la estructura de HTML

Ahi lo modifique, pero sigue todo igual, corriendo con el marco roto !

Etiquetas: estructura, html
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 17:03.