Foros del Web » Programando para Internet » PHP »

enlazar menu dinamico

Estas en el tema de enlazar menu dinamico en el foro de PHP en Foros del Web. Hola, tengo un problema a ver si alguien puede ayudarme. es que tengo un formulario menu dinamico que recoge las opciones de una base de ...
  #1 (permalink)  
Antiguo 01/03/2005, 03:13
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
enlazar menu dinamico

Hola, tengo un problema a ver si alguien puede ayudarme. es que tengo un formulario menu dinamico que recoge las opciones de una base de datos; lo que quiero es enlazar cada una de esas opciones del menu con una pagina web y no se como hacerlo. El formulario tiene como action una pagina de resultados.php; y esta en modo post.
En la practica sería que el visitante de la pagina elige una opcion del menu dinamico, y eso le lleva a otra pagina que le da unos resultados que hay en la base de datos relacionados con la elecion que ha hecho.
si alguien me puede dar alguna idea.
Gracias.
  #2 (permalink)  
Antiguo 01/03/2005, 03:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101

"un formulario menú dinámico"? ... un combobox?

... no entiendo... podrías explicarte mejor???... en primera si estamos hablando de un combobox.. no hay problema con crearlo?.. qué datos tomas de tu BD?... tomas URL's de varias páginas que quieres asignar a cada opción???.. entonces para qué es la página resultados??...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 01/03/2005, 06:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
Perdona si no me he explicado bien, intentaré ser más claro.
En una página web tengo un formulario con un menu desplegable que coje las opciones del menu de un campo de una tabla de una BD. Hasta aquí funciona bien. Una vez que se seleciona una opción del menu, debe llevarnos a una pagina de resultados que muestra los datos asociados a esa opcion. Hasta aquí tambien funciona pero solo me muestra los registros de la primera paginacion.
Para ir al ejemplo concreto, en el menu se muestran regiones de un pais,esto lo consigo sin problemas, y se seleciona una región, y en la página de resultados se muestran caracteristicas de esa region, que son respectivos campos de una tabla.
El problema es que como tengo muchos registros de cada campo intento paginarlos, pero me salen bien en la primera pagina de resultados, si le doy a que me muestre los 10 siguientes, no muestra nada, y creo que es que al recargar la página de resultados para mostrar los siguientes , no se pasa la variable de la región elegida en el formulario de la página inicial , a la página de resultados, y no sabe con que variable está.
Creo que es eso, no sé como pasarle la variable que se seleciona en el formulario de la primera página a las demás.
Gracias por la atenciçon y la ayuda.
Saludos.
  #4 (permalink)  
Antiguo 01/03/2005, 07:19
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... mmmm.. creo ya voy entendiendo... pero ahora sería bueno nos compartieras tu código... para ver dónde estaría el error... se me ocurre:
Al estar paginando debes pasar un valor por la URL que va a ser el último registro con el que trabajaste en ese documento... debes recogerlo y tener otra variable que supongo ya tienes... que equivale al número de registros que se van a mostrar... supongo debes generar una nueva consulta cada que se recarga la página utilizando esos dos valores en tu query... no sé... con código nos entenderíamos más...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 02/03/2005, 06:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
gracias jam por tu ayuda

Muchas gracias Jam por tu ayuda, te inserto el codigo de las dos páginas, de la inicial(prueba) y la de resultados. Utilizo Dreamweaver para hacerlas.
Saludos y gracias.



pagina inicial:

<?php require_once('Connections/viajerophp.php'); ?>
<?php
mysql_select_db($database_viajerophp, $viajerophp);
$query_RsCA = "SELECT CA FROM ccaa";
$RsCA = mysql_query($query_RsCA, $viajerophp) or die(mysql_error());
$row_RsCA = mysql_fetch_assoc($RsCA);
$totalRows_RsCA = mysql_num_rows($RsCA);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form name="form1" method="post" action="resultados.php">
<select name="select">
<?php
do {
?>
<option value="<?php echo $row_RsCA['CA']?>"><?php echo $row_RsCA['CA']?></option>
<?php
} while ($row_RsCA = mysql_fetch_assoc($RsCA));
$rows = mysql_num_rows($RsCA);
if($rows > 0) {
mysql_data_seek($RsCA, 0);
$row_RsCA = mysql_fetch_assoc($RsCA);
}
?>
</select>
<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>
<?php
mysql_free_result($RsCA);
?>


Pagina de resultados:

<?php require_once('Connections/viajerophp.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_RsDormir = 5;
$pageNum_RsDormir = 0;
if (isset($_GET['pageNum_RsDormir'])) {
$pageNum_RsDormir = $_GET['pageNum_RsDormir'];
}
$startRow_RsDormir = $pageNum_RsDormir * $maxRows_RsDormir;

$colname_RsDormir = "1";
if (isset($_POST['select'])) {
$colname_RsDormir = (get_magic_quotes_gpc()) ? $_POST['select'] : addslashes($_POST['select']);
}
mysql_select_db($database_viajerophp, $viajerophp);
$query_RsDormir = sprintf("SELECT Nombre, Localidad, Provincia FROM dormir WHERE CA = '%s'", $colname_RsDormir);
$query_limit_RsDormir = sprintf("%s LIMIT %d, %d", $query_RsDormir, $startRow_RsDormir, $maxRows_RsDormir);
$RsDormir = mysql_query($query_limit_RsDormir, $viajerophp) or die(mysql_error());
$row_RsDormir = mysql_fetch_assoc($RsDormir);

if (isset($_GET['totalRows_RsDormir'])) {
$totalRows_RsDormir = $_GET['totalRows_RsDormir'];
} else {
$all_RsDormir = mysql_query($query_RsDormir);
$totalRows_RsDormir = mysql_num_rows($all_RsDormir);
}
$totalPages_RsDormir = ceil($totalRows_RsDormir/$maxRows_RsDormir)-1;

$queryString_RsDormir = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_RsDormir") == false &&
stristr($param, "totalRows_RsDormir") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_RsDormir = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_RsDormir = sprintf("&totalRows_RsDormir=%d%s", $totalRows_RsDormir, $queryString_RsDormir);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<table border="1">
<tr>
<td>Nombre</td>
<td>Localidad</td>
<td>Provincia</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_RsDormir['Nombre']; ?></td>
<td><?php echo $row_RsDormir['Localidad']; ?></td>
<td><?php echo $row_RsDormir['Provincia']; ?></td>
</tr>
<?php } while ($row_RsDormir = mysql_fetch_assoc($RsDormir)); ?>
</table>
<p>
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"><?php if ($pageNum_RsDormir > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RsDormir=%d%s", $currentPage, 0, $queryString_RsDormir); ?>">Primero</a>
<?php } // Show if not first page ?>
</td>
<td width="31%" align="center"><?php if ($pageNum_RsDormir > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RsDormir=%d%s", $currentPage, max(0, $pageNum_RsDormir - 1), $queryString_RsDormir); ?>">Anterior</a>
<?php } // Show if not first page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_RsDormir < $totalPages_RsDormir) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RsDormir=%d%s", $currentPage, min($totalPages_RsDormir, $pageNum_RsDormir + 1), $queryString_RsDormir); ?>">Siguiente</a>
<?php } // Show if not last page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_RsDormir < $totalPages_RsDormir) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RsDormir=%d%s", $currentPage, $totalPages_RsDormir, $queryString_RsDormir); ?>">&Uacute;ltimo</a>
<?php } // Show if not last page ?>
</td>
</tr>
</table>
</p>
</body>
</html>
<?php
mysql_free_result($RsDormir);
?>
  #6 (permalink)  
Antiguo 03/03/2005, 17:36
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por KFreeman
Muchas gracias Jam por tu ayuda, te inserto el codigo de las dos páginas, de la inicial(prueba) y la de resultados. Utilizo Dreamweaver para hacerlas.
Me sorprende que hayas logrado hacer todo eso y no veas tu error.. ... como habia mencionado, no pasas la variable por URL... ok... para solucionarlo prueba esto:

Primero cambia el method de tu formulario por GET... acto seguido y obvio cambia en la página de resultados $_POST por $_GET... utilzando DW fácil ... ahora solo ha de faltar mandar esa variable a la URL.. para ello hay que imprimirla...
Código PHP:
printf("%s?select=%s&pageNum_RsDormir=%d%s"$currentPage$colname_RsDormir, ... etc 
sí es con %s??

y con eso debe funcionar... una pregunta qué haces en:
Código PHP:
$colname_RsDormir = (get_magic_quotes_gpc()) ? $_POST['select'] : addslashes($_POST['select']); 
ah!.. y creo que:
Código PHP:
$totalRows_RsCA mysql_num_rows($RsCA); 
te está sobrando... en una revisión rápida no veo que lo ocupes ... pero bueno aviza si se solucionó.. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 03/03/2005 a las 17:39
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 19:07.