Al clicar una categoría de una lista haga un link a una pagina php

Quisiera que al clicar una lista de categorías extraída de una base de datos me direccione a una pagina.

Aquí dejo el código:

<div>
<h3>Seleccione un item</h3>
</div>
<div id="listaform">
<select name="categorías">
<?php
do {
?>
<option value="<?php echo $row_categorias['categorías']?>"<?php if (!(strcmp($row_categorias['categorías'], $row_categorias['categorías']))) {echo "selected=\"selected\"resultado1.php";} ?>><?php echo $row_categorias['categorías']?></option>
<?php
} while ($row_categorias = mysql_fetch_assoc($categorías));
$rows = mysql_num_rows($categorías);
if($rows > 0) {
mysql_data_seek($categorías, 0);
$row_categorias = mysql_fetch_assoc($categorías);
}
?>
</select>
</div>

Esto me lo hace bien despliega las categorías como digo quisiera que al clicar me lo dirija a otra pagina.

1 respuesta

Respuesta
1

Ahí va un ejemplo probado de lo quieres hacer, te recomiendo por experiencia no usar acentos en nombres de tablas y tampoco en nombre de campos.

¿
<?php
//Ejemplo suponiendo que tienes una tabla que se llama test y tienes un campo que le llama categoría (sin tilde)
mysql_connect("localhost","root","qa1ws2ed3cxz");
mysql_select_db("test_123");
//primer option solo informatico
$options="<option value=''>Seleccionar...</option>";
$res_cats=mysql_query("SELECT * FROM test");
//recorro los resultados y armo en $options los <option> para cada categoría
while($row_cats = mysql_fetch_assoc($res_cats)){
     $options.="<option value='{$row_cats[categorías]}'/>{$row_cats[categorías]}</option>";
}
?>
<div><h3>Seleccione un item</h3></div>
<div id="listaform">
 <!--Agrego los option al select, también le agrego al select en el evento onchange la función js que quiero ejecutar-->
 <select name="categorías" onchange='saltar(this)'><?php echo $options?></select>
</div>
<script type="text/javascript">
     //Función js que es llamada por el select, le pasa por parámetro el elemento (select)
     function saltar(select){
     //si select.value distito de nada significa que no salta con el primer option (que dice seleccionar)
     if(select.value!=""){
         //Location.href redirecciona a resultado1.php y le pasa por get la variable categoría que es la que elegiste.
         location.href="resultado1.php?categoría="+select.value;
     }
     }
</script>

Decime si con esto solucionaste tu problema. sino enviame el código con una descripción de como es tu base de datos.

Creo que igual lo único que deberías prestar atención del ejemplo es a como armé los options, el evento onChange de la etiqueta select y la función en javascript.

Hola,

Antes que nada agradercerte tu gentil y util respuesta.

Voy a ver ahora que es lo que me indicas, de todas maneras tenía ya preparado la misma pregunta pero un poco mas detallada porque pensaba que como no habia respuestas quizas no se entendia el problema.

Si puedes echarle un vistazo me seria de mucha utilidad.

--------------------------------------------------------------------------------------------------------------------------------

Buenos días,
Ojalá me puedan ayudar tengo las siguientes tablas.
Tabla categorías
Id
Categorías


Tabla dato-empresa
id_empresa
empresa
categoría  

y mas datos etc.......

el id es el indice de la tabla categorias

y categorias de la tabla categorias es su descripcion por ejemplo supermercados, fruterias etc.

y en la tabla dato-empresa categoria es numerico osea que cuando la empresa se registra por primera vez introduce todos sus datos y en la parte categoria selecciona su categoria  ejemplo pone supermercados al escoger esta categoria automaticamente pondra el numero 75 en categoria en la tabla dato-empresa esto es solo como referencia ya que esta parte funciona bien.

El problema está aqui abajo explicado


-----------------------------------------------------------------------------------------
En una pagina (comercios.php) hago un despliegue de las
categorías el cual se colega a la pagina resultado.php
Hasta ahí todo bien  va a la pagina resultado y me muestra
 el nombre  de la categoria que se ha clicado. pero no me  muestra  la lista de las
empresas que están en esa categoría.
A ver si me puedes echar
un cable dejo aquí abajo los detalles.
De antemano gracias y saludos

--------------------------------------------------------------------------------------------------------------------------------
comercios.php
<div  id="listaform">
<form
action="resultado.php" method="post"
name="categorias">
<select name="categorias">
<?php
do {
?>
<option value="<?php echo
$row_categorias['categorias']?>"<?php if
(!(strcmp($row_categorias['categorias'], $row_categorias['id']))) {echo
"selected=\"selected\"";} ?>><?php echo
$row_categorias['categorias']?></option>
<?php
} while
($row_categorias = mysql_fetch_assoc($categorias));
$rows = mysql_num_rows($categorias);
if($rows > 0) {
mysql_data_seek($categorias, 0);
$row_categorias = mysql_fetch_assoc($categorias);
}
?>
<p>
<input type ="submit" name =
"submit" value = "clicar" >
</p>
</form>
resultado.php
<?php echo "Esta en categorias: " .
$_POST["categorias"];
?>
<div
id="centraranuncios">
<?php
while ($fila =
mysql_fetch_array($consulta))
{
//
Si yo cambio en esta parte  esto  ($_POST["categorias"]  ) y sustituyo poe ejemplo con el código “75”  que es supermercados me hace bien la lista //
if($fila["categoria"]==
$_POST["categorias"] ){
echo '<img src="'.$fila["imagenprin"].'"
/>';
echo $fila["empresa"] .
"<br>";
echo $fila["direccion"] .
"<br>"
echo $fila["provincia"] .
"<br>";
echo $fila["telefono"] .
"<br>";
echo $fila["fax"] .
"<br>";
echo $fila["mail"] .
"<br>";
echo $fila["horario"] .
"<br>";
echo $fila["descripcion"] .
"<hr/>";
}
}
?>
</div>
</div>
</div>

Por problemas laborales voy a poder ayudarte el fin de semana próximo.

Muchas gracias, esperaré porque no tengo más ayuda.

Gracias y saludos

Te estoy armado los dos archivos tal cual los tenes vos, inclusive creé yo mismo las tablas para probarlos antes de postearte la solución.
¿Podrías agregar las consultas mysql estas usando en cada archivo? Porque ya vi donde está el problema.

Perdona, no entiendo cuales son las consultas? para poder enviartelas

Estimado,

Muchas gracias por tu esfuerzo en tratar de comprender mi problema.

Te explico otras cosas para que veas un poco el enredo que tengo.

Empecé a hacer las paginas con note++ y cuando veo que tengo problemas y no logro resolverlos los cargo en dreamweaver entonces agrega mucha mas información que yo no he incluido. Abajo te agrego como empieza la pagina comercios.php

<?php require_once('Connections/conexión.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_conexion, $conexión);
$query_categorias = "SELECT * FROM categorías";
$categorías = mysql_query($query_categorias, $conexión) or die(mysql_error());
$row_categorias = mysql_fetch_assoc($categorías);
$totalRows_categorias = mysql_num_rows($categorías);
?>

Espero que esto te sirva en la espera de tus noticias

Cordiales saludos y en anticipo unas felices fiestas.

Mariano

Ahora entiendo un poco mas tu problema.

A lo que yo llamo consulta es a la cadena string que ejecuta el mysql.

Ahora que me agregaste el archivo comercios.php vi la consulta que usa ese archivo que es:

$query_categorias = "SELECT * FROM categorías";

Ahora como ultimo dato y te paso el ejemplo es hacer lo mismo con resultado,php.
Pásamelo completo así veo como es la consulta a la base de datos.

Aquí te lo dejo:

<?php include("conexión.php");
mysql_select_db("dato_empresa", $conexión);
$consulta=mysql_query("SELECT * FROM dato_empresa ORDER BY empresa");
$num_registros=mysql_num_rows($consulta);
if ($num_registros==0)
{
echo "No se han encontrado registros con esta categoría";
mysql_close("conexión");
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org/
Released for free under a Creative Commons Attribution 2.5 License
Name : OfficialWork
Description: A two-column, fixed-width design with dark color scheme.
Version : 1.0
Released : 20121012
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>comercios</title>
<link href="http://fonts.googleapis.com/css?family=Oswald" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery/jquery.gallerax-0.2.js"></script>
<style type="text/css">
@import "gallery.css";
</style>
</head>
<body>
<div id="wrapper">
<div id="header">
<div id="logo">
<h1>SunSants</h1>
</div>
<!--style="float:right; padding: 5px;" */-->
<?php echo "Esta en categorias: " . $_POST["categorias"];
?>
<div id="centraranuncios">
<?php
while ($fila = mysql_fetch_array($consulta))
{
if($fila["categoría"]== $_POST["categorias"] ){
echo '<img src="'.$fila["imagenprin"].'" />';
echo $fila["empresa"] . "<br>";
echo $fila["direccion"] . "<br>";
echo $fila["provincia"] . "<br>";
echo $fila["telefono"] . "<br>";
echo $fila["fax"] . "<br>";
echo $fila["mail"] . "<br>";
echo $fila["horario"] . "<br>";
echo $fila["descripcion"] . "<hr/>";
}
}
?>
</div>
</div>
</div>
</body>
</html>

Bueno como siempre muchas gracias

y felices fiestas

Te dejo un ejemplo de lo que necesitas funcionando, lo subí a un server para que lo pruebes.
<a>http://programarenphp.com.ar/te/comercios.php</a>

Acá están las tablas que usé:
Tabla categorías:

Tabla dato_empresa:

Bueno a continuación los dos archivos php:

comercios.php:

<?php
 mysql_connect("localhost","xxxxxxx","xxxxx");
 mysql_select_db("xxxxx");
 $res=mysql_query("SELECT * FROM categorias ORDER BY categorias");
 $options="<option value=''>Seleccionar</option>";
 while($row=mysql_fetch_assoc($res)){
 $options.="<option value='".$row['id']."'>".$row['categorias']."</option>";
 }
?>
<html>
 <body>
 <form method='POST' action='resultados.php' onsubmit='if(this.idcategoria.value==""){alert("Seleccione una categoria");return false;}'>
 <label>Categorias:</label>&nbsp;
 <select name='idcategoria'><?php echo $options; ?></select>&nbsp;
 <input type='submit' value='Mostrar empresas'>
 </form>
 </body>
</html>

resultados.php:

<?php
 if(is_numeric($_POST['idcategoria']) && $_POST['idcategoria']>0){
 mysql_connect("localhost","xxxxxx","xxxxx");
 mysql_select_db("xxxx");
 list($categoria)=mysql_fetch_row(mysql_query("SELECT categorias FROM categorias WHERE id='".$_POST['idcategoria']."' "));
 $res=mysql_query("SELECT * FROM dato_empresa WHERE idcategoria='".$_POST['idcategoria']."' ORDER BY empresa ");
 if(mysql_num_rows($res)>0){
 while($row=mysql_fetch_assoc($res)){
 $tr_empresas.="
 <tr>
 <td>".$row['empresa']."</td>
 <td>".$row['direccion']."</td>
 <td>".$row['provincia']."</td>
 <td>".$row['telefono']."</td>
 <td>".$row['fax']."</td>
 <td>".$row['horario']."</td>
 <td>".$row['mail']."</td>
 </tr>";
 }
 }
 }
 $tr_empresas.="
 <tr>
 <td colspan='7' align='center'>
 <a href='comercios.php'>Volver</a>
 </td>
 </tr>";
?>
<html>
 <style>
 body{font-family:helvetica}
 table.tabla_empresa{background-color:#BFBFBF;width:100%;}
 table.tabla_empresa th{background-color:#4D4D4D;color:#FFFFFF;border:1px solid #E6E6FA}
 table.tabla_empresa td{background-color:#FFFFFF;color:#4D4D4D;border:1px solid #E6E6FA}
 </style>
 <body>
 Categoria <?php echo $categoria;?>
 <br />
 <table class='tabla_empresa'>
 <tr>
 <th>Empresa</th>
 <th>Direccion</th>
 <th>Provincia</th>
 <th>Telefono</th>
 <th>Fax</th>
 <th>Horario</th>
 <th>E-Mail</th>
 </tr>
 <?php echo $tr_empresas;?>
 </table>
 </body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas