Foros del Web » Programando para Internet » PHP »

Categorias y subcategorias desplegables

Estas en el tema de Categorias y subcategorias desplegables en el foro de PHP en Foros del Web. Hola alguien puede ayudarme con esto: http://www.festatube.net/dis/categ/apartats_ver.php Tengo el listado de Categorias y Subcategorias. Hasta ahí todo bien, empieza a fallar cuando quiero desplegar la ...
  #1 (permalink)  
Antiguo 29/01/2010, 19:48
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Categorias y subcategorias desplegables

Hola alguien puede ayudarme con esto:

http://www.festatube.net/dis/categ/apartats_ver.php

Tengo el listado de Categorias y Subcategorias. Hasta ahí todo bien, empieza a fallar cuando quiero desplegar la Categorias.

En principcio solo tendrias que salir la categorias y cuando hicieramos clic en una de ellas desplegar las subcategorias. De momento no ando muy bien...

Los problemas són:

1 - Cuando abres la pagina ya estan desplegadas.
2 - Cuando quieres plegar solo se pliega uno.

La variable que relaciona la tabla categorias és cat_ID i subcategories id_cat

Ahí va el codigo:


Código PHP:
<html>
<head>
<script>
function cambiar(esto)
{
    vista=document.getElementById(esto).style.display;
    if (vista=='none')
        vista='block';
    else
        vista='none';

    document.getElementById(esto).style.display = vista;
}
</script>
</head>
<body>
<?php
include("conex.php");

$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC")
                            or die(
mysql_error);
while(
$rowCat mysql_fetch_array($sqlQueryCat)){

echo 
"<ul><a href='#' onclick=cambiar($rowCat[cat_ID]); return false;>".$rowCat[catCategoria]."</a></ul>";

$query mysql_query("SELECT * FROM sub_categories WHERE id_cat=$rowCat[cat_ID]")
                            or die(
mysql_error);
while(
$sub_cat mysql_fetch_array($query)){
echo 
"<div id='$sub_cat[id_cat]' style=display: none;><ul class='menu_body'>";
echo 
"---".$sub_cat[nom_subc]."</ul></div>";

}}
?>

</body>
</html>
Gracias!
  #2 (permalink)  
Antiguo 29/01/2010, 20:29
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Lo podrias hacer con ajax para que no recargue la pagina.
Si lo hace con javascript deberias cargar todas las subcategorias en array de javascrip
Si lo haces recargado la pagina seria algo asi
Código PHP:
<?
include("conex.php");
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC")
                            or die(
mysql_error);

while(
$rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <ul><a href="?cat=<?=$rowCat[cat_ID]?>" \>
      <?=$rowCat[catCategoria]?></a></ul>
<?
}

if ( isset( 
$_GET['cat'] ) && !empty( $_GET['cat'] ) ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = $rowCat[cat_ID] ") or die(mysql_error);

        while(
$sub_cat mysql_fetch_array($query)){
            echo 
"<div id='$sub_cat[id_cat]' style=display: none;><ul class='menu_body'>";
            echo 
"---".$sub_cat[nom_subc]."</ul></div>";
        }
}

?>

Espero que te sirva
  #3 (permalink)  
Antiguo 29/01/2010, 20:50
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

oooh! Muchissimas gracias! Pero me sale esto:

mysql_error

Que debe ser?

Y oye si quisiera hacerlo con ajax traeria mucha faena?

gracias!
  #4 (permalink)  
Antiguo 29/01/2010, 20:57
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Categorias y subcategorias desplegables

xD.. falto el () en:
Código PHP:
Ver original 
tendria que ser:
Código PHP:
Ver original 
Pruebalo asi, y dinos que te imprime :p
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 29/01/2010, 21:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Dice estoo! hehe
  #6 (permalink)  
Antiguo 29/01/2010, 21:06
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Categorias y subcategorias desplegables

$sqlQueryCat = mysql_query("SELECT * FROM categories ORDER BY ordre ASC")

Seguro que el campo se llama "orde" ?
  #7 (permalink)  
Antiguo 29/01/2010, 21:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

Sisi seguro, el campo se llama ordre que en Catalan significa orden. Ahora fijate en la web:

http://www.festatube.net/dis/categ/a..._ver.php?cat=7

Ya no sale error pero tampoco salen las subcategorias!!
  #8 (permalink)  
Antiguo 29/01/2010, 21:19
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Podrias quitar los " die(mysql_error) " o cambiarlos por die( mysql_error() );
Y me decis que error te da.

Para hace con ajax no es tan dificil
colocar esto en tu cabecera
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
function CargaSCat( cat ){

$.ajax({
type: "GET",
url: "subcategoria.php",
data: "cat="+cat,
success: function(datos){
document.getElementById('contenedor').innerHTML=da tos;
}
});

}
</script>



Código PHP:

<?
include("conex.php");
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC")
                            or die(
mysql_error());

while(
$rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <ul><a onclick="CargaScat('<?=$rowCat[cat_ID]?>')"  \>
      <?=$rowCat[catCategoria]?></a></ul>
<?
}

?><div id="contenedor"><?
if ( isset( $_GET['cat'] ) && !empty( $_GET['cat'] ) ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = $rowCat[cat_ID] ") or die(mysql_error());

        while(
$sub_cat mysql_fetch_array($query)){
            echo 
"<div id='$sub_cat[id_cat]' style=display: none;><ul class='menu_body'>";
            echo 
"---".$sub_cat[nom_subc]."</ul></div>";
        }
}
?>
</div>

el archivo : subcategoria.php
Código PHP:
include("conex.php"); 
if ( isset( 
$_GET['cat'] ) && !empty( $_GET['cat'] ) ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = $rowCat[cat_ID] ") or die(mysql_error());

        while(
$sub_cat mysql_fetch_array($query)){
            echo 
"<div id='$sub_cat[id_cat]' style=display: none;><ul class='menu_body'>";
            echo 
"---".$sub_cat[nom_subc]."</ul></div>";
        }
}
else{
    echo 
"no se envio categoria";

No se si me olvide de algo pero la base es esa. Los archivos deben estar en el mismo directorio o podes ir modificando el script
Si usas firefox instala el complemento firebug que te va a ayudar para desarrollar.
  #9 (permalink)  
Antiguo 29/01/2010, 21:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

El mismo error que antes....Puedes verlo tu mismo en mi web...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

http://www.festatube.net/dis/categ/a..._ver.php?cat=3

Por cierto muchas graciasa todos de verdad!
  #10 (permalink)  
Antiguo 29/01/2010, 21:28
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

disculpa lo que pasa que lo pegue y no me di cuenta
esta mal escrito ORDER dice ordre
  #11 (permalink)  
Antiguo 29/01/2010, 21:31
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Cita:
Iniciado por luis010182 Ver Mensaje
disculpa lo que pasa que lo pegue y no me di cuenta
esta mal escrito ORDER dice ordre
No dije nada.

Si ejecutas esto en phpmyadmin te da las categorias?

SELECT * FROM categories ORDER BY ordre ASC
  #12 (permalink)  
Antiguo 29/01/2010, 21:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

No no ya esta bien el ordre, es el nombre de una columna de la tabla categories la utilizo para ordenar las categorias a mi antojo. "ordre" en catalan significa "orden".

Oye cual puede ser el problema? Con el primer script bien salian las subcategorias ahora nada =(

Saludoos!
  #13 (permalink)  
Antiguo 29/01/2010, 21:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

hahahaha okok xDD
  #14 (permalink)  
Antiguo 29/01/2010, 21:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

Si, me da las categorias, fijate en la web és lo que veo:

http://www.festatube.net/dis/categ/apartats_ver.php

Esas son las categorias.
  #15 (permalink)  
Antiguo 29/01/2010, 21:38
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Capaz que es esto
Código PHP:
#cambia esto:
 
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = $rowCat[cat_ID] ") or die(mysql_error());

#proba esto: 
 
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = '".$_GET['cat']."' ") or die(mysql_error()); 
  #16 (permalink)  
Antiguo 29/01/2010, 21:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

Nada...el problema està en el link, fijate que no puedo hacer ni clic en las categorias:
http://www.festatube.net/dis/categ/apartats_ver.php

Saludos!
  #17 (permalink)  
Antiguo 29/01/2010, 21:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

Vale! Ia està ia funciona! Solo hay un pequeño problema.

Ahora està asi:

Categoria1
Categoria2
Categoria3
---Subcategoria1.1
---Subcategoria1.2

Quiero que esté asi:

Categoria1
---Subcategoria1.1
---Subcategoria1.2
Categoria2
Categoria3


Sabes donde esta el fallo?


Código PHP:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
function CargaScat( cat ){

$.ajax({
type: "GET",
url: "subcategoria.php",
data: "cat="+cat,
success: function(datos){
document.getElementById('contenedor').innerHTML=datos;
}
});

}
</script>
</head>
<body>
<? 
include("conex.php"); 
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC"
                            or die(
mysql_error()); 

while(
$rowCat mysql_fetch_array($sqlQueryCat)){ 
?> 
   <ul><a onclick="CargaScat('<?=$rowCat[cat_ID]?>')" /> 
      <a href=?cat=<?=$rowCat[cat_ID]?>><?=$rowCat[catCategoria]?></a></ul> 
<? 


?><div id="contenedor"><? 
if ( isset( $_GET['cat'] ) && !empty( $_GET['cat'] ) ){ 
   
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = '".$_GET['cat']."' ") or die(mysql_error()); 

        while(
$sub_cat mysql_fetch_array($query)){ 
            echo 
"<div><ul>"
            echo 
"---".$sub_cat[nom_subc]."</ul></div>"
        } 

?>
</div>
</body>
</html>
  #18 (permalink)  
Antiguo 29/01/2010, 21:58
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Que es lo que queres que haga realmente. Vos queres q las sub categorias te aparezcan debajo de la categorias que se elije. Yo pense que lo querias despues de toda la lista de categorias.
Decime si es asi lo arreglo. Por lo que vi no te tira errores de consulta. Puede ser que no todas las categorias tengan sub-categorias?
  #19 (permalink)  
Antiguo 29/01/2010, 22:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

Lo que quiero es que las sub-categorias salgan debajo de cada categoria. I si solo dos categorias tienen subcategorias, son de prueba.

Informatica i electrodomesticos me parece que tienen...

Que tengo que hacer para que salga debajo de las categorias?
  #20 (permalink)  
Antiguo 29/01/2010, 22:02
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Categorias y subcategorias desplegables

Código PHP:
<?
while($rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <ul><a href="?cat=<?=$rowCat[cat_ID]?>" \>
      <?=$rowCat[catCategoria]?></a></ul>
<?
  
if ( isset( $_GET['cat'] ) && !empty( $_GET['cat'] ) &&  $_GET['cat']==$rowCat[cat_ID] ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = '".$rowCat[cat_ID]."' ") or die(mysql_error);

        while(
$sub_cat mysql_fetch_array($query)){
            echo 
"<div id='$sub_cat[id_cat]' style=display: none;><ul class='menu_body'>";
            echo 
"---".$sub_cat[nom_subc]."</ul></div>";
        }
  } 
}
Avisame si te funciona
  #21 (permalink)  
Antiguo 29/01/2010, 22:05
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Categorias y subcategorias desplegables

IuhuuuuuuuuuuuUU! muchisimas gracias luis!! =) Ia funciona!!!

Etiquetas: categorias, desplegables, subcategorias
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 12:58.