Programación Web y Scripting > PHP
Menus Desplegables Dinamicos
Gaviotica:
--- Cita de: "Gaviotica" ---
--- Cita de: "Slimer" --- Hola Gaviotica:
Por lo que entiendo, tu quieres conectarte a una BD mysql para que en un Select te salga lo que contiene la BD.
Soy de los que piensa que para aprender necesitas "pistas" u "orientaciones" y que no te lo tienen que dar hecho, por lo que te lanzo lo siguiente.
(Ya estas conectada a tu BD mysql por lo que no te digo mas o menos como...)
Dentro del Select, en vez de enumerar las opciones, prueba con algo como esto:
--- Código: Text --- <select name="pais" id="selectPais"><option> </option> VACIO<? mysql_data_seek ($result,0); // Con esto nos ponemos cada vez que entremos en la primera posición de la BD while ($row = mysql_fetch_array($result)) { echo "<opcion value=".$row["columna1"].">".$row["valor1"]."</opcion>"; }?></select>
De esta forma tienes resuelta la conexión en PHP a una BD.
Aquí hay algunos ejemplos (algunos sin depurar) pero que te pueden dar ideas (todos estos estan en el lado de JScript)
--- Código: Text --- <html><head><title>Consulta de BD con JavaScript y PHP</title><head><script language="JavaScript">function funciona() { numero = porcentajes.length; document.formulario.select1.length = numero; for (i=0; i<numero; i++){ document.formulario.select1.options[i].value = valor_por[i]; document.formulario.select1.options[i].text = porcentajes[i]; }}</script> <script language="JavaScript">function tessto() { var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value);var restado = (100 - valoracion); if ( valoracion != 100) { document.formulario.select2.length = numero; for (i=0; i<numero; i++){if (valor_por[i] <= restado){ document.formulario.select2.options[i].value = valor_por[i]; document.formulario.select2.options[i].text = porcentajes[i]; }}}} </script> </head><body onLoad="funciona()"><?php$javascript = "<script language=\"JavaScript\">\n"; //activamos Java dentro de PHP$javascript .= " var porcentajes = new Array();\n"; //Creamos el Array vacio$javascript .= " var valor_por = new Array();\n"; //Creamos otro Array vacioinclude("conect.php"); //Incluimos un fichero$link=Conectarse(); // Nos conectamos a la BD$porcentajes=mysql_query("select * from porcentaje",$link) or die (mysql_error()); // hacemos consulta y metemos valores en $porc $contador = 0;while ($elem = mysql_fetch_array($porcentajes)) { $javascript .="porcentajes[".$contador."] = ".$elem['porcentaje_n'].";\n"; // asignamos valores al array. Estructura Array[i] = valor $javascript .="valor_por[".$contador."] = ".$elem['porcentaje_v'].";\n"; $contador++; }$javascript .= "</script>\n"; //cerramos JavaScriptecho $javascript;?> <form name="formulario"> <select name="select1" onchange= "tessto()"> <!-- option value ="-">- !--> </select> <select name="select2"> </select> <select name="select3"> </select> <select name="select4"> </select> <select name="select5"> </select> <input type="text" name="texto"> </form></body></html>
--- Citar ---Tienes dos select (o tres o los que quieras), y quieres que depende de lo que elijas en la primera opcion (Pais en tu caso), en el segundo select ponga estado, o ciudad, (o lo que quieras,,, puedes encadenarlo a tu gusto...). Un ejemplo sería el siguiente, siendo el primer Select, para el Pais, y el segundo select para la ciudad.
CODE
<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>
<select name=provincia>
<option value="-">-
</select>
</form>
Hasta aqui hemos creado el primer Select
CODE
var provincias_1=new Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La Rioja","La Pampa","...")
var provincias_3=new Array("-","Cali","Santamarta","Medellin","Cartagena","...")
var provincias_4=new Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde ","...")
Con esto creamos los arrays del segundo select
CODE
function cambia_provincia(){
var pais
pais = document.f1.pais[document.f1.pais.selectedIndex].value
if (pais != 0) {
mis_provincias=eval("provincias_" + pais)
num_provincias = mis_provincias.length
document.f1.provincia.length = num_provincias
for(i=0;i<num_provincias;i++){
document.f1.provincia.options.value=mis_provincias
document.f1.provincia.options.text=mis_provincias
}
}else{
document.f1.provincia.length = 1
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"
}
document.f1.provincia.options[0].selected = true
}
Y con esto decimos que depende de lo que hayamos puesto en el primer select, tiene que aparecer en el segundo...
Esto es un ejemplo "simple" de como hacerlo. Si te das cuenta, los arrays los he introducido manualmente. Lo que tienes que hacer es una consulta a tu BD
CODE
<?php
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row["valor"].">".$row["enunciado"]."</option>"; }
?>
Despues si no me equivoco, solo nos queda pasar la consulta de php a JavaScript
Para esto hay que "introducir" JavaScript dentro de PHP.
CODE
<?php
$javascript = "<script language=\"JavaScript\">\n";
$javascript .= " var array_js = new Array();\n";
//aqui nos conectariamos a la base de datos,,, a tu gusto!!!!! Yo uso algo asi:
include("conexion_bd.php");
$link=Conexion();
$valores=mysql_query("select * from columna",$link) or die (mysql_error());
$contador = 0;
while ($elem = mysql_fetch_array($valores)) {
$javascript .="columna[".$contador."] = ".$elem['columna2'].";\n";
$contador++; }
$javascript .= "</script>\n";
echo $javascript;
?>
--- Fin de la cita ---
Aquí tienes varias ayudas... Ya me diras si te ayuda algo de esto...
Un saludo
Slimer
--- Fin de la cita ---
Hola Muchas gracias por su ayuda. Estoy trabajando en eso pero todo esta saliendo bien.
--- Fin de la cita ---
Gracias por su ayuda anterior tengo una nueva pregunta:
Buenas mi pregunta es la siguiente:
Tengo dos tablas una llamada investigador que tiene los sig campos: id(key) Cedula apellido nombre mail pais estado direccion area codigo1
y una llamada proyectos que tiene id_proyecto(key) proyecto, proyecto_futuro ,area_proyecto y id
Mi problema se esta presentando porque no logro incluir el valor del id de investigador en proyectos, todo lo demas se me incluye, este es mi codigo:
Primero viene una pag que se llama formulario.
Este es el codigo de la pagina que procesa la info obtenida y la guarda en la base de datos
<?php
$Nombre=$_POST["Nombre"];
$Apellido=$_POST["Apellido"];
$Cedula=$_POST["Cedula"];
$Mail=$_POST["Mail"];
$Pais=$_POST["Pais"];
$Estado=$_POST["Estado"];
$Direccion=$_POST["Direccion"];
$Area=$_POST["Area"];
$Temario=$_POST["Temario"];
$proyecto=$_POST["proyecto"];
$proyecto_futuro=$_POST["proyecto_futuro"];
$area_proyecto=$_POST["area_proyecto"];
$id=$_GET["id"]; //(No se si debo hacerle un POST o un GET , yo creo que es un GET)
//Le hago un echo para ver los datos
echo "Nombre: $Nombre<br>";
echo "Apellido: $Apellido<br>";
echo "Cedula: $Cedula<br>";
echo "Mail: $Mail<br>";
echo "Pais: $Pais<br>";
echo "Estado: $Estado<br>";
echo "Direccion: $Direccion<br>";
echo "Area: $Area<br>";
echo "Temario: $Temario<br>";
echo "Proyecto: $proyecto<br>";
echo "Proyectos Futuros: $proyecto_futuro<br>";
echo "Area: $area_proyecto<br>";
Me conecto a la base de datos
if (!($enlace=mysql_connect("localhost","root","")))
die ("Fallo la conexion con el servidor");
mysql_select_db("prueba",$enlace);
$sentencia = "insert into investigador values ('$id','$Cedula','$Apellido','$Nombre','$Mail','$Pais','$Estado','$Direccion','$Area','$Temario')";
$sentencia1= "insert into proyectos values ('$id_proyecto','$proyecto','$proyecto_futuro','$area_proyecto','$id')";
//El valor de $id en la tabla proyectos no se me esta guardando.
mysql_query($sentencia,$enlace);
mysql_query($sentencia1,$enlace);
echo "<CENTER><B>Los datos fueron agregados exitosamente!!!!!</B></CENTER>";
mysql_close ($enlace);
?>
Porfa podrian ayudarme porque la verdad estoy un poquito trancada en esto.
¿Como guardo el valor del $id de la tabla investigadores en proyecto?
Chau y gracias de antemano.
Navegación
[*] Página Anterior
Ir a la versión completa