Foros del Web » Programando para Internet » PHP »

cambiar valores de un <select>

Estas en el tema de cambiar valores de un <select> en el foro de PHP en Foros del Web. Muy buenas, Estoy programando una página web, y tengo un formulario con dos <select>, y el segundo depende de lo seleccionado en el primero. El ...
  #1 (permalink)  
Antiguo 03/09/2003, 05:40
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 53
Antigüedad: 20 años, 7 meses
Puntos: 1
Pregunta cambiar valores de un <select>

Muy buenas,

Estoy programando una página web, y tengo un formulario con dos <select>, y el segundo depende de lo seleccionado en el primero.

El problema viene que tengo hecho el <select> con php, porque los valores los coge de una base de datos, y el segundo <select> tiene que mostrar los valores del resultado de una consulta, si no fuese así se podría hacer con javascript, con la función onChange, pero como se hace con php.

Gracias a todos.
  #2 (permalink)  
Antiguo 03/09/2003, 07:18
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Pon algo de codigo para que podamos ayudarte

un saludo
  #3 (permalink)  
Antiguo 03/09/2003, 07:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Te recomiendo que antes de preguntar repases el mensaje de las FAQs que hay al comienzo del foro (hay un para de mensajes con indices). Hay hubieras encontrado http://www.forosdelweb.com/showthrea...608#post327608

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 03/09/2003, 09:04
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
hola te mando este codigo eso si tienes que revizarlo porque borre algunas cosas , pone en el select 1 las marcas sacadas dela base de datos y carga el select 2 dependiendo del valor del select 1.

saludos

<?php

include ('base.php');

$consulta="SELECT DISTINCT MARCA from autos order by TIPO" ;
$res=mysql_query($consulta) or die ("consulta fallo2");
$num=mysql_num_rows($res);

?>
<em><strong><font size="5">SELECCIONE VEHICULO</font></strong></em>
<p><font size="2"><h3>MARCAS:</h3></font></p>
<form name="form1" method="post" action="">

<select name="sfile0" style="font-family:arial; fonf-weight:bold; font-size:15pt; width:190px; height:50px;">
_<option>SELECCION</option>

<?php
For ($i=0;$i<$num;$i++)
{
$a=mysql_result($res,$i,0);


echo "<option value=\"".$a."\">".$a;


}

ECHO"</td><BR>";
ECHO "<BR>";
echo "<td width=\"75%\"><input type=submit name=boton2 value=BUSCAR>";
ECHO "</FORM></td><BR>";

mysql_close();

?>
</select>

</p>

</p>
</form>


<?php




include ('base.php');


$consulta="SELECT DISTINCT modelo from autos where marca='".$sfile0."'" ;

$res=mysql_query($consulta) or die ("consulta fallo2");
$num=mysql_num_rows($res);


?>

<form name="form2" method="post" target="mainFrame" action=tabla.php>



<input name=sfile0 style="visibility:hidden" value="<?php echo $sfile0 ?>" >

<p><font size="2"><?php echo "<h3>$num" ;echo " ";?>MODELO(S) :<?php ECHO $sfile0;echo "</h3>"; ?></font></p>
<select name="sfile1" style="font-family:arial; fonf-weight:bold; font-size:15pt; width:200px; height:90px;">



<?php

For ($i=0;$i<$num;$i++)
{
$a=mysql_result($res,$i,0);


echo "<option value=\"".$a."\">".$a;
}

ECHO"</td>";

echo "<td width=\"75%\"><input type=submit name=boton2 value=BUSCAR>";
ECHO "</FORM></td><BR>";

mysql_close();
?>
</select>

</p>
<em> <font size="2">

</font> </em> </p>
<p>&nbsp;</p>
</form>
</body>
</html>
  #5 (permalink)  
Antiguo 03/09/2003, 09:28
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 53
Antigüedad: 20 años, 7 meses
Puntos: 1
muy bien, he mirado lo que me dices, y gracias pero no me vale, porque mi formulario llama a otra página.

Hay va un trozo de código para ver si me podeis hechar una manito.

<form name="datostelefono" action="alta2.php" onsubmit="return checkform();" method="POST" >

<select name="operadora" >
<option selected value=" ">--Eliga una operadora--</option>

<?php
$resultado = mssql_query("SELECT nombre from OPERADORA");
while ($linea=mssql_fetch_row($resultado)) {
echo ("<option>".$linea[0]."</option>\n");
}
?>

<select name="tarifa">
<option selected>--selecciona tarifa-- </option>

<?php
$resultado = mssql_query ("select nTarifa from tarifa ");
while ($linea=mssql_fetch_row($resultado)) {
echo ("<option>".$linea[0]."</option>\n");
}
?>


Esto es lo que tengo ahora, y me saca las operadoras y las tarifas pero todas las que tengo en la base de datos, como puedo obtener el valor del primer select dentro de esta hoja para realizar una consulta en el segundo select que me muestre solo las tarifas que correspondan a cierta operadora.


Muchas gracias.
  #6 (permalink)  
Antiguo 03/09/2003, 13:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, supongo tambien lo querras sin que recarge la pagina. Puedes probar este de biblio http://www.forosdelweb.com/showthrea...hreadid=144903 . Usa javascript para cargar el segundo. Solo te lo recomiendo si el numero de registros totales de la segunda tabla no es muy grande, porque tambien "carga" todos al principio.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 03/09/2003, 15:03
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
deja ver si te entiendo osea tu select1 en pag.1 llama al select dos en pag. 2


saludos
  #8 (permalink)  
Antiguo 04/09/2003, 02:27
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 53
Antigüedad: 20 años, 7 meses
Puntos: 1
Primero:

josemi: Es una tabla bastante grande, osea que si me dices que no me lo aconsejas en caso de tablas grandes, no se, de todas maneras lo voy a probar y os respondo si funciona.
De todas maneras, me da igual que se recarge la página, pero si esto no provoca que se me borren el resto de campos y luego puedo obligarlo de alguna manera a cargar el tratamiento en la otra hoja. "alta2.php" . a la que llama el formulario.

Segundo:

mveraa: el select 1 en pag1 llama al select 2 en pag1. y los valores estos, más otros de otros campos van a la pag2 dónde se ejecuta un script php que trata los valores del formulario.

Gracias.

Aquí va el código completo que funciona, menos esto.

<html>
<HEAD>
<link href="../estilos.css" rel="stylesheet" type="text/css">
<TITLE>POR F!N YA</TITLE>
<?php
$dbli = mssql_connect("172.16.0.10","usuarioweb","fuensant a");

if ($dbli > 0)
{
$dbs = mssql_select_db("porfinya",$dbli);
}
?>
<SCRIPT LANGUAGE="JAVASCRIPT">
<!-- hide JavaScript code from browsers that are not JavaScript enabled

function valid1(form) {
var field = form.finicio;
var str = field.value;
var reg1 = /(\d{4})-(\d{2})(-(\d{2}))/;
var reg2 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
if (!reg1.test(str) && reg2.test(str)) {
return true;
}
return false;
}

function valid2(form) {
var field = form.ffin;
var str = field.value;
var rega = /(\d{4})-(\d{2})(-(\d{2}))/;
var regb = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
if (!rega.test(str) && regb.test(str)) {
return true;
}
return false;
}

function checkform() {

var message = ""; // create error message string variable, with nothing in it


// Check el teléfono
if (document.datostelefono.telefono.value.length == 0) {
message = message + "Por favor, introduzca un número de teléfono!\n";
}
else if (document.datostelefono.telefono.value.length < 9) {
message = message + "El número de teléfono debe contener mínimo 9 números!\n"
}
else if (isNaN(document.datostelefono.telefono.value)) {
// test for numeric digits only
message = message + "El teléfono debe contener solo datos numéricos\n";
}

// Check finicio
if (document.datostelefono.finicio.value.length == 0) {
message = message + "Por favor, introduzca la fecha de inicio!\n";
}
/*else if (! valid1(document.datostelefono)){
message = message + "El formato fechaincio es yyyy-mm-dd!\n";
}*/

// Check ffin
/*if (document.datostelefono.ffin.value.length !=0){
if (! valid2(document.datostelefono)){
message = message + "El formato fechafin es yyyy-mm-dd!\n";
}
}*/

if ( message.length > 0 ) { // is there an error message?
alert( message ); // display error message
return false; // return bad, not ok to process
}
else {
return true; // no error message to display,
}

} // end of the function checkform()




//end hiding of JavaScript code -->
</SCRIPT>

</HEAD>
<BODY onLoad="document.datostelefono.telefono.focus();">
<table width="100%" border="0" style="font-size:12px" cellspacing="2">
<tr>
<td valign="top">
<h3><strong>Alta</strong></h3>
</td>
<td>&nbsp;</td>
</tr>
<tr>
<td valign="top">
</td>
<td valign="top">
<center>
<table border="1" align="top" cellspacing="0" cellpadding="6" class="bordeazul">
<tr>
<td class="tdwhite">
Formulario de alta
</td>
</tr>
<tr>
<td>
<table border="0" align="top" >
<form name="datostelefono" action="alta2.php" onsubmit="return checkform();" method="POST" >
<tr>
<td>Tel&eacute;fono</td>
<td>Empresa</td>
</tr>
<tr>
<td><input name="telefono" type="text" size="36" maxlength="15" title="Introduzca el teléfono completo de su empresa"></td>
<td><select name="empresa" >

<?php

if ($dbs)
{
$resultado = mssql_query("SELECT nombre from EMPRESA");
while ($linea=mssql_fetch_row($resultado)) {

echo ("<option>".$linea[0]."</option>\n");
}
}
?>


</select></td>

</tr>
<tr>

<td>Operadora</td><td>Tarifa</td>
</tr>
<tr>
<td><select name="operadora" >
<option selected value=" ">--Eliga una operadora--</option>


<?php
$resultado = mssql_query("SELECT nombre from OPERADORA");
while ($linea=mssql_fetch_row($resultado)) {
echo ("<option>".$linea[0]."</option>\n");
}
?>
</select></td>
<td><select name="tarifa">
<option selected value=" ">--selecciona tarifa--</option>

<?php


$resultado = mssql_query ("select nTarifa from tarifa ");

while ($linea=mssql_fetch_row($resultado)) {
echo ("<option>".$linea[0]."</option>\n");
}

mssql_close($dbli);
?>
</select></td>
</tr>
<tr>
<td>Fecha de inicio</td>
<td>Fecha final</td>
</tr>
<tr>
<td><input name="finicio" type="text" value=" aaaa-mm-dd" size="36" maxlength="50" title="Introduzca la fecha de comienzo de aplicaci&oacute;n de la tarifa."></td>
<td><input name="ffin" type="text" value=" aaaa-mm-dd" size="36" maxlength="50" title="Introduzca la fecha de finalizaci&oacute;n de aplicaci&oacute;n de la tarifa." ></td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="right"><br><input name="Submit" type="submit" value="ACEPTAR" ></td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</Center>
</td>
</tr>
</table>
<br><br>
<hr width="100%" size="1" style="color:darkblue">

</body>
</html>

Última edición por bomaye; 16/09/2003 a las 07:31
  #9 (permalink)  
Antiguo 09/10/2003, 09:58
 
Fecha de Ingreso: septiembre-2003
Mensajes: 109
Antigüedad: 20 años, 7 meses
Puntos: 0
debes recargar la pagina, si las tablas son grandes no debes enviar todo el contenido al principio. Al recargar envias la operadora y haces la consulta de las tarifas de esa operadora. Tambien debes reenviar el resto de campos del formulario para recogerlos y volverlos a mostrar, sino les perderas.
saludos
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 13:51.