Foros del Web » Programando para Internet » PHP »

Ayuda con consult_cat.php?criterio=$row[categoria]

Estas en el tema de Ayuda con consult_cat.php?criterio=$row[categoria] en el foro de PHP en Foros del Web. Hola: Estoy armando un directorio de empresas y tengo una duda... La BD tiene una tabla "categorias" que consta de id, categoria, subcategoria La pagina ...
  #1 (permalink)  
Antiguo 12/01/2008, 02:18
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Ayuda con consult_cat.php?criterio=$row[categoria]

Hola:

Estoy armando un directorio de empresas y tengo una duda...

La BD tiene una tabla "categorias" que consta de id, categoria, subcategoria

La pagina "X" muestra por medio de consulta a BD todas las CATEGORIAS a manera de lista para que el usuario haga click en una (por ejemplo Abogados) y le muestre en otra pagina todas las empresas que corresponden a dicha categoria. Hasta aqui bien!

En la pagina "Y" que es la que muestra los resultados con todas las empresas de la categoria seleccionada quisiera que, si esa CATEGORIA tiene SUBCATEGORIAS, muestre una lista desplegable con sus subcategorias.

Hasta ahora he logrado que me muestre la lista pero las subcategorias estan mal, solo me muestra subcategorias si en alguna de ellas se incluye algo similar al nombre de la categoria... EXPLICO:

Por ejemplo, si selecciono Agencias de Publicidad, en los resultados me muestra la lista pero vacia (porque no tiene subcategorias) y esta bien (*aunque seria interesante que si no tiene subcategorias no me muestre la lista*)

Si selecciono Ingenieros me muestra la lista y sus subcategorias PERO porque las subcategorias son asi: Ingenieros Agrónomos, Ingenieros Civiles, Ingenieros de Alimentos, etc. Es decir que como la subcategoria tiene la palabra Ingenieros, me muestra correctamente la lista.

Si selecciono Médicos, me muestra la lista PERO vacia porque ninguna de las subcategorias tiene la palabra Médicos, sino que son asi: Cardiología, Dermatología, etc.

Ahora los codigos:

El listado de CATEGORIAS va a la pagina de resultados con esto:
Código PHP:
<a href='consult_cat.php?criterio=$row[categoria]'
Como les digo, los resultados de las empresas se muestran perfectamente...

El codigo para mostrar la lista de SUBCATEGORIAS es este:
Código PHP:
<?
include ("connect.php");

if (isset(
$criterio)){

$sql "SELECT subcategoria FROM categorias WHERE categoria = '$criterio' ORDER BY subcategoria";
$result mysql_query($sql) or die (mysql_error());

echo 
'<select name="subcat">';
echo 
"<option value=\"\">-- Seleccione una subcategoria --</option>\n";

while (
$row=mysql_fetch_array($result)){

echo 
'<option>'.$row["subcategoria"];
}
}
?>
Se que estoy cerca de dar con la solucion pero no estoy claro. Creo que debo recibir la categoria a traves de $criterio y de alguna manera hacerle saber al codigo que si ese $criterio tiene subcategorias, hagamos una nueva consulta y muestre la lista, pero no estoy seguro de como armar la nueva consulta, o si mas bien creo alguna variable o algo...

Espero puedan ayudarme

Gracias
  #2 (permalink)  
Antiguo 12/01/2008, 10:51
Avatar de Cristiaen  
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Re: Ayuda con consult_cat.php?criterio=$row[categoria]

Prueba cambiando tu código por este otro:

Código PHP:
<?
include ("connect.php");

if (isset(
$criterio)){

$sql 'SELECT `subcategoria` FROM `categorias` WHERE `categoria` = ' $criterio ' ORDER BY `subcategoria`;';
$result mysql_query($sql) or die (mysql_error());

echo 
'<select name="subcat">';
echo 
"<option value=\"\">-- Seleccione una subcategoria --</option>\n";

while (
$row mysql_fetch_assoc($result)){

echo 
'<option>'.$row["subcategoria"];
}
}
?>
  #3 (permalink)  
Antiguo 12/01/2008, 11:04
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Re: Ayuda con consult_cat.php?criterio=$row[categoria]

Gracias por responder...

Con tu codigo, si por ejemplo hago click en Abogados, me muestra:

Unknown column 'Abogados' in 'where clause'

Si hago click en Ingenieros, me muestra:

Unknown column 'Ingenieros' in 'where clause'

Tanto Abogados como Ingenieros tienen subcategorias
  #4 (permalink)  
Antiguo 12/01/2008, 11:10
Avatar de Cristiaen  
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Mensaje Re: Ayuda con consult_cat.php?criterio=$row[categoria]

Código PHP:
<?
include ("connect.php");

if (isset(
$criterio)){

$sql 'SELECT `subcategoria` FROM `categorias` WHERE `categoria` = "' $criterio '" ORDER BY `subcategoria`;';
$result mysql_query($sql) or die (mysql_error());

echo 
'<select name="subcat">';
echo 
"<option value=\"\">-- Seleccione una subcategoria --</option>\n";

while (
$row mysql_fetch_assoc($result)){

echo 
'<option>' $row["subcategoria"];
}
}
?>
Asegúrate de que utiliizas mysql_fetch_assoc, ya que de lo contrario no puedes utilizar la palabra subcategoria como referente.

Añadí además = "' . $criterio . '", se me habían olvidado las comillas del exterior.

Suerte!
  #5 (permalink)  
Antiguo 12/01/2008, 11:17
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 13 años, 4 meses
Puntos: 70
De acuerdo Re: Ayuda con consult_cat.php?criterio=$row[categoria]

Hola ...

mysql_fetch_array tambièn te ayduarìa en lo mismo, con la diferencia que te permite utilizar asociones e indices para llamar los atributos de la DB. En cuanto lo de cargar el select.

Pero en cuanto a tu consulta, debes buscar es el id que se repite como llave foranea, es decir, no buscar por palabra sino por el id de la categoria. Esa es mi pregunta, categoria en tu tabla, es una palabra o un numero(un identificardor FK)??? Quizàs mi pegunta sobra pero es solo para descartar.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 12/01/2008, 13:04
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Re: Ayuda con consult_cat.php?criterio=$row[categoria]

Gracias por sus comentarios.

Descubrí de tanto probar que mi código está bien (como lo puse originalmente arriba, puliendo solo un par de detalles). El problema estaba en la codificación... estaba usando UTF-8 y en la lista de categorías me mostraba cuadritos en vez de tildes. Indagando descubrí que solo los que tenían tilde (cuadritos) no me mostraba las subcategorias y no era por el nombre.

Cambié a iso-8859-1 y se solucionó. Ahora muestra todo sin cuadritos y todas las subcategorias funcionan.

Gracias por su interes en ayudar

Para quien le sirva subo el codigo pulido y completo...
Código HTML:
<form name="subcategorias" id="subcategorias" method="post" action="consult_subcat.php"> 
Código PHP:
<?
include ("connect.php");

if (isset(
$cat)){

$sql "SELECT * FROM categorias WHERE categoria = '$cat' ORDER BY subcategoria";
$result mysql_query($sql) or die (mysql_error());

echo 
'<select name="subcat">';
echo 
'<option value> -- Seleccione una subcategoria -- </option>';

while (
$row=mysql_fetch_array($result)){

echo 
'<option>'.$row["subcategoria"];
}
}
?>
Código HTML:
<input type="submit" name="submit" value="Filtrar Resultados">
</form> 
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 16:36.