Foros del Web » Programando para Internet » PHP »

Menu desplegable bajo php

Estas en el tema de Menu desplegable bajo php en el foro de PHP en Foros del Web. Hola amigos!!! Soy nuevo en el foro y tambien en el leguaje php, por ello tengo una duda que aunque he leido en el faq ...
  #1 (permalink)  
Antiguo 08/11/2003, 12:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Exclamación Menu desplegable bajo php

Hola amigos!!!

Soy nuevo en el foro y tambien en el leguaje php, por ello tengo una duda que aunque he leido en el faq no he podido solucionarlo, tengo una duda de como mostrar en un menu desplegable los datos de un tabla creada en mysql, os escribo mi intento, seguro que es ridiculo pero os lo pongo soy novato , sorry:

<html>
<body>

<?php

// Conexión con la base de datos

$link = mysql_connect("localhost", "usuario", "contraseña");
mysql_select_db("mybd", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);

// El menu desplegable

echo "<select name= "menunombre" size="7">";
while ($row=mysql_fetch_array($result)){
echo " <option value> ".$row['nombre']." </option> ";
}
</select>


?>


Que me decis
  #2 (permalink)  
Antiguo 08/11/2003, 14:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero, .. ¿cual es la duda concreta?

El código "aparentemente" es correcto salvo:

Código PHP:
echo " <option value> ".$row['nombre']." </option> "
El "option" .. ese value será el valor que tome tu $menunombre al momento de enviar esos datos en tu formulario ... así, que deberas poner el valor que corresponda .. no sé si tu "email" o tu "nombre" ...

Código PHP:
echo " <option value=\"".$row['email']."\"> ".$row['nombre']." </option> "
Fijate en el código HTML que generas (Edición -> ver código fuente en tu navegador) .. y verás como estás formato el HTML de ese <select> .. Eso ya es "HTML" no es PHP (pese que lo generéras dinámicamente con PHP).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 09/11/2003, 10:22
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
No es ridicula tu pregunta, ya que tambien estoy desarrollando el menu (70% avanzado), el cual permitira actualizar los link desde un panel de control que se conecta a MYsql, y usandolo en una intranet, me permitira asignar privilegion y accesos a determinadas paginas a distintos usuarios.

No usa los form select, pero si, codigo Java script y php, cuando lo tenga listo, lo subo a este foro. Saludos


Kotosh
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #4 (permalink)  
Antiguo 10/11/2003, 13:01
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Exclamación menu desplegable vinculado

El erro estaba en:

Cita:
echo "</select>";
, pero ya esta seleccioado, de tal forma que el código queda de esta forma:


<html>
<body>
<?php

// Conexión con la base de datos

$link = mysql_connect("localhost", "usuario", "contraseña");
mysql_select_db("mybd", $link);
$result = mysql_query("SELECT nombre FROM agenda", $link);

// El menu desplegable de los nombres

echo '<select name= "menunombre" size="1">' ;
while ($row=mysql_fetch_array($result)){
echo " <option value> ".$row['nombre']." </option> ";
}
echo "</select>";


?>
<blockquote>
<blockquote>
<blockquote>
<p>
<?php

// Conexión con la base de datos

$link2 = mysql_connect("localhost", "usuario", "contraseña");
mysql_select_db("mybd", $link2);
$result2 = mysql_query("SELECT email FROM agenda", $link2);

// El menu desplegable de los nombres

echo '<select list name= "mail" size="1">' ;
while ($row2=mysql_fetch_array($result2)){
echo " <option value> ".$row2['email']." </option> ";
}
echo "</select>";

?>
</p>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>


La idea sería vincular los combos de tal forma que cuando se seleccione el nombre del primer menudesplegable se cargue en el segundo el email correspondiente del primer nombre, nose si me explico?? Ojala me podais echar una mano amigos.
  #5 (permalink)  
Antiguo 10/11/2003, 13:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No entiendo muy bien a que te refieres .. pero, fijate bien en el ejemplo que te puse yo más arriba (sobre el value="...").

Y si quieres hacer algo con DOS tablas que sean relacionadas .. revisa:
http://www.forosdelweb.com/showthrea...608#post327608

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 10/11/2003 a las 13:36
  #6 (permalink)  
Antiguo 10/11/2003, 15:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
dos menus desplegables

Hay esta el código, con el intento. me explico mejor. El asunto constaria de dos menus desplegables vinculadas a una tabla con tres campos (Id, Nombre, Email), en el primer menu desplegable se cargan todos los nombres existentes del campo Nombre de la tabla agenda, y en el segundo menu se cargara el email correspondiente al nombre seleccionado en el primer menu.

Ejemplo:

tabla

0 pedo [email protected]
1 Angel [email protected]
2 Paco [email protected]
3 Paco [email protected]

En el primer menu se veran: Pedro, Angel, Paco.

Si se selecciona Pedro en el segundo menu solo se mostrara [email protected]

Si se selecciona Angel en el segundo menu solo se mostrara
[email protected]

Pero si se selecciona Paco como hay dos en el segundo menu se vera:
[email protected]
[email protected]

Espero que ahora se me etienda mejor.
  #7 (permalink)  
Antiguo 10/11/2003, 15:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
El codigo propuesto

<?php

// Conexión con la base de datos

$link = mysql_connect("localhost", "Pepe", "hola");
mysql_select_db("mybd", $link);
$result = mysql_query("SELECT nombre FROM agenda", $link);

// El menu desplegable de los nombres

echo '<select name= "$menunombre" size="1">' ;
while ($row=mysql_fetch_array($result)){
echo " <option value> ".$row['nombre']." </option> ";
}
echo "</select>";


?>
</p>
</blockquote>
</blockquote>
</blockquote>
<p>&nbsp;</p>
<blockquote>
<blockquote>
<blockquote>
<p>
<?php

// Conexión con la base de datos

$link2 = mysql_connect("localhost", "Pepe", "hola");
mysql_select_db("mybd", $link2);
$result2 = mysql_query("SELECT distinct(email) FROM agenda WHERE nombre like '%$menunombre%' ", $link2);

// El menu desplegable de los nombres

echo '<select list name= "mail" size="1">' ;
while ($row2=mysql_fetch_array($result2)){
echo " <option value> ".$row2['email']." </option> ";
}
echo "</select>";

?>
  #8 (permalink)  
Antiguo 10/11/2003, 16:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Bueno .. yo sólo haría esto:

SELECT email FROM agenda WHERE nombre='$menunombre'

Suponiendo que tu nombre (campo) es único (no hay dos iguales) ...

Y .. bueno .. para que $menunombre pase al 2º select .. debes de enviar ese dato al servidor .. así que te hace falta meter un submit en el primer select .. ya sea un botón .. o algó automático via javascript (onChange = .. submit ... ).



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 11/11/2003, 13:45
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Menu deslplegable

Me podrias decir o en su defecto donde podria encontrar el codigo para que cuando en el primer menus se haga click en el segundo se carguen ciertos datos

Gracias amigo
  #10 (permalink)  
Antiguo 11/11/2003, 14:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En las FAQ's de PHP tienes la opción "PHP"

http://www.forosdelweb.com/showthrea...608#post327608

.. pero en muchas ocasiones (cuando son pocos los datos a manejar y más bien constantes) se usa integramente javascript o bien se cargan los arrays javascript completos (el de tu "select1 y 2") para que sea desde javascript quien haga la relación entre ambos selects ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 12/11/2003, 14:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Menu desplegables

Hola Cluster:

Aquí estoy otra vez metiendote la chapa, he leido el apunte del faq que me dabas pero no he entendido mucho, es que como te comentaba acabo de empezar con el php, y pensaras como me meto en una movida así sin tener mucho idea, la razon es que tengo un programa realizado en Visual Basic que me gustaría pasar a una web y como trabajo con bases de datos Combox etc he empezado a aplicar php, estoy intendado lo que me dijistes que es esto:

Cita:
PHP
Código PHP:
// Conexión con la base de datos

$link = mysql_connect("localhost", "Pepe", "hola"); 
mysql_select_db("mybd", $link); 
$result = mysql_query("SELECT nombre FROM agenda", $link); 

// El menu desplegable de los nombres

echo '<select name= "$menunombre" size="1" OnClick = "$result2 = mysql_query(" SELECT email FROM agenda WHERE nombre='$menunombre'  ", $link2);" >' ;
while ($row=mysql_fetch_array($result)){
echo " $valor ";
echo " <option value> ".$row['nombre']." </option> ";
}
echo "</select>"; 


?>

 <?php

// Conexión con la base de datos

$link2 mysql_connect("localhost""Pepe""hola"); 
mysql_select_db("mybd"$link2); 
 

// El menu desplegable de los nombres

echo '<select list name= "mail" size="1">' ;
while (
$row2=mysql_fetch_array($result2)){
echo 
" <option value> ".$row2['email']." </option> ";
}
echo 
"</select>"

?>

Reitero tu interes en un icauto como yo, jejjeje serio gracias.
  #12 (permalink)  
Antiguo 15/11/2003, 09:53
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
3 menus

Hola otra vez amigo!!

Por fin he entendido algo, pero existiría la posibilidad de poder hacerlo con tres menus?? Esto es que el tercer menu estuviera vinculado a las dos opciones previas, habría que añadir un select mas y una tabla mas no?? Sería mucha molestia que me lo escribieras, ya se que es muy egoista de mi parte, pero es que a mi me costaria mas de 3 meses seguro, espero tu respuesta
  #13 (permalink)  
Antiguo 15/11/2003, 13:23
Usuario no validado
 
Fecha de Ingreso: abril-2002
Ubicación: mx
Mensajes: 65
Antigüedad: 22 años, 7 meses
Puntos: 0
lo q yo hice

yo la realize, para 3 combos. Cada q sucede un evento onChange mando a llamar a una funcion para recargar y cargar los nuevos valores, let's see....

Los datos son extraidos de una tabla categorias q contiene las categorias y subcategorias:
# Estructura de tabla para tabla `categoria`
CREATE TABLE categoria (
id int(4) unsigned NOT NULL auto_increment,
nombre varchar(50) default NULL,
nivel int(3) unsigned default '0',
relacion int(3) unsigned default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


el id, pues es el id de la categoria; nombre, el nombre de la categoria; nivel, a q nivel pertenece, o sea si carga dentro del primer select o el segundo o el ultimo; relacion almacena el id de la categoria con la q esta relacionado esta subcategoria (para el caso de las categorias de nivel 1 no tienen relacion, obviamente), supongo esta claro; bueno hasta ahi la BD.
Procedan a cargar la BD con unos cuantos datos, ....

VAMOS AL SCRIPT
Código PHP:
<?
include("funciones.php");
$link=conecBD();
echo 
'
<table width="90%" border="0" cellspacing="0" cellpadding="0">
  <form name="mx" method="post">
  <tr align="center"><td width="33%"> 
  <!------ Primer Select  (s1) ---->
  <input name="is1" type="hidden" value="'
,$is1,'">
  <select name="s1" id="select1" class="prod" onChange="recarga(this.form);">'
;
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE nivel=1",$link);
if (
$row=mysql_fetch_array($consulta))
{ echo 
'<option value="0" selected>Elija...</option>';
  do   echo 
'<option value="',$row["id"],'">',$row["nombre"],'</option>';
  while (
$row=mysql_fetch_array($consulta));
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>No hay categorias def.</option>';
echo 
'
              </select>
            </td>
            <td width="34%"> 
              <!------ Segundo Select (s2)---->
              <input name="is2" type="hidden" value="'
,$is2,'">
              <select name="s2" class="prod" onChange="recarga(this.form);">
'
;
if (
$is1>0)
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE relacion=$s1",$link);
  
$nf=mysql_num_rows($consulta);
  if (
$nf>0)
  { echo 
'<option value="0" selected>Elija...</option>';
    while (
$row=mysql_fetch_array($consulta))
      echo 
"<option value='",$row["id"],"'>
      "
,$row["nombre"],"</option>";
  }
else echo 
'<option value="0" selected>No hay categorias</option>';
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>&lt;ninguno&gt;</option>';
echo 
'
              </select></td>
            <td width="33%"> 

              <!------ Tercer Select (s3)---->
<input name="is3" type="hidden" value="'
,$is3,'">
              <select name="s3" class="prod" id="select3" onChange="recarga(this.form);">
'
;
if (
$is2>0)
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE relacion=$s2",$link);
  
$nf=mysql_num_rows($consulta);
  if (
$nf>0)
  { echo 
'<option value="0" selected>Elija...</option>';
    while (
$row=mysql_fetch_array($consulta))
      echo 
"<option value='",$row["id"],"'>
      "
,$row["nombre"],"</option>";
  }
  else echo 
'<option value="0" selected>No hay categorias</option>';
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>&lt;ninguno&gt;</option>';
echo 
'
              </select></td>
          </tr>
          </form>
        </table>
'
;
?>
Despues hacemos:
<script language="JavaScript">
selecciona (<? echo $is1; ?>, <? echo $is2; ?>, <? echo $is3; ?>, document.mx.s1, document.mx.s2, document.mx.s3);
</script>

La funcion conecBD se vincula a la base que se encuentra dentro de la "libreria" funciones.php .....

ah si! falta la funciones: recarga() y selecciona()
Aqui estan .....
<script language="JavaScript">
function recarga(form)
{ form.is1.value=form.s1.selectedIndex;
form.is2.value=form.s2.selectedIndex;
form.is3.value=form.s3.selectedIndex;
if (form.s1.selectedIndex != <? echo $is1; ?>)
{ form.is2.value=0;
form.is3.value=0;}
if (form.s2.selectedIndex != <? echo $is2; ?>)
{form.is3.value=0;}
form.action="prueba_foro.php";
form.submit();
}//function recarga(...
function selecciona(opt1, opt2, opt3, combo1, combo2, combo3)
{
combo1.options[opt1].selected= "true";
combo2.options[opt2].selected= "true";
combo3.options[opt3].selected= "true";
}//fin de la funcion selecciona
</script>

ok espero le entiendas al codigo.... cualquier cosa sobre el, puedo aclarartela. ok adios.
  #14 (permalink)  
Antiguo 15/11/2003, 13:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Muchas gracias por tu interes, lo he comprobado y me da error en la linea 10 que es la de ConecBD:

Fatal error: Call to undefined function: conecbd() in C:\miweb\ejemplo3.php on line 10
  #15 (permalink)  
Antiguo 15/11/2003, 16:51
Usuario no validado
 
Fecha de Ingreso: abril-2002
Ubicación: mx
Mensajes: 65
Antigüedad: 22 años, 7 meses
Puntos: 0
en definitiva...

en definitiva te tendre que proporcionar los demas,

conecBD() es la funcion de conexion a la BD, ok.

en el block de notas o en cualquier otro editor de texto pega lo siguiente:

Código PHP:
<?php
function conecBD()
{
   if (!(
$link=mysql_connect("localhost","usaurio","password")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("name_BD",$link))
   {
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}
?>
Posteriormente guardalo en el directorio donde estas realizando tu proyecto con el nombre de funciones.php

ok.
En
  #16 (permalink)  
Antiguo 16/11/2003, 07:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Avanzando...

Bueno ya voy poco a poco haciendo algo amigo jejejej gracias a ti.

Bueno ya puedo ver los tres combox pero solo veo los datos en el primer combo en los preceentes me aparece <ninguno>. Sera que no lo aplico bien la base de datos??

Lo que entiendo por la base de datos si guardo un registro como:

id nombre nivel relacion
-- ---------- ------- ----------

1 Juan 1 2



que significa??


Espero que no te desesperes conmigo

Gracias por tu ayuda
  #17 (permalink)  
Antiguo 17/11/2003, 13:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Error

Me imagino que el error estar en la base de datos me lo podrias indicar por favor??
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:52.