PHP - Formulario - Select onChange

   
Vista:

Formulario - Select onChange

Publicado por gerniracing (47 intervenciones) el 10/05/2012 16:36:36
Buenas tardes,

Tengo el siguiente codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
require("conexion.php");
require("funciones.php");
$query = "SELECT * FROM .....................";
$queEmp = mysql_query($query, $conexion);
 
if(isset($_POST['enviar']))
{
	echo $_POST["miSelect"];
	for ( $i = 1 ; $i <= $_POST["miSelect"] ; $i ++) {
			$nombre = sqlValue($_POST["nombre_'.$i.'"], "text");
 
			$sql = "INSERT INTO ..................";
			$sql.= "VALUES (".$nombre.")";
			mysql_query($sql, $conexion);
	}
}
?>
<head>
<title>Prueba</title>
</head>
<body>
<p class="cabecera">PRUEBA</p>
<form id="frRegister" name="frRegister" method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table width="400" border="0">
  <tr>
    <td>Seleccionar carrera: <br />
    <select name="miSelect" onchange="submit()">
	<option value="0">Seleccionar carrera</option>
	<?php while ($resEmp = mysql_fetch_array($queEmp)){
		echo '<option value="'.$resEmp['NumeroTramosCarreraT01'].'">'.$resEmp['NombreCarreraT01'].'</option>';
    } ?>
    </select>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
	<?php
		for ( $i = 1 ; $i <= $_POST["miSelect"] ; $i ++) {?>
	   	<tr>
      		<td>Nombre TC-<?php print $i ;?><br />
				<?php echo '<input  name="nombre_'.$i.'" type="text" size="40" class="required">';?></td>
			</td>
		<tr>
	<?php } ?>
   </table>
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    <label>
    <input name="restablecer" type="reset" id="restablecer" value="Restablecer" />
    </label>
</form>
</body
</html>


El problema se me surge cuando selecciono en la <select> una opcion hace el Submit para mostrar lo que tengo en la FOR y me pone a 0 el valor de la <select>, en este caso miSelect. Lo que pasa es que necesito mantener el valor de miSelect porque lo tengo que guardar en la base de datos.

Como lo podria hacer?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Formulario - Select onChange

Publicado por xve (5525 intervenciones) el 10/05/2012 17:56:00
En el mismo momento de mostrar nuevamente el <select>, tendrías que indicarlo... algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name="miSelect" onchange="submit()">
    <option value="0">Seleccionar carrera</option>
    <?php
    while ($resEmp = mysql_fetch_array($queEmp)){
        if($_POST["miSelect"]==$resEmp['NumeroTramosCarreraT01'])
        {
            # si coinciden, indica que es el valor enviado...
            echo '<option value="'.$resEmp['NumeroTramosCarreraT01'].'" selected>'.$resEmp['NombreCarreraT01'].'</option>';
        }else{
            echo '<option value="'.$resEmp['NumeroTramosCarreraT01'].'">'.$resEmp['NombreCarreraT01'].'</option>';
        }
    }
    ?>
</select>

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario - Select onChange

Publicado por gerniracing (47 intervenciones) el 10/05/2012 21:08:27
Lo acabo de probar y muy bien, es lo que queria.

Tengo otro duda, al guardar los datos en la base de datos tengo lo siguiente puesto:

1
2
3
4
5
6
7
8
9
10
11
$id2 = sqlValue($i, "int");
$idcarrera = sqlValue($resEmp[IDCarreraT01], "int");
$nombre = sqlValue($_POST['nombre_'.$i.''], "text");
$fecha = sqlValue($_POST['fecha_'.$i.''], "date");
$metros = sqlValue($_POST['metros_'.$i.''], "int");
$entrena = sqlValue($_POST['entrena_'.$i.''], "int");
 
$sql = "INSERT INTO T03Tramos (ID2TramoT03, IDCarreraT03, NombreT03, FechaT03, KmT03, EntrenamientoT03) ";
$sql.= "VALUES ($id2, $idcarrera, $nombre, $fecha, $metros, $entrena)";
echo $sql;
echo "<br>";


Me devuelve bien todos los valores menos el $idcarrera, que me devuelve NULL. Lo que quiero es recoger un dato desde una tabla (del registro seleccionado en la <select>)para guardarla en otra tabla.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario - Select onChange

Publicado por gerniracing (47 intervenciones) el 10/05/2012 22:55:15
Ya lo he resuelto, he guardado en una variable el valor y ya esta. Ahora al guardar en la base de datos no se porque solo me guarda el primer, los demas no me guarda:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if(isset($_POST['enviar']))
{
	for ( $i = 1 ; $i <= $_POST["miSelect"] ; $i ++) {
			$id2 = sqlValue($i, "int");
			$idcarrera = sqlValue($IDCarrera, "int");
			$nombre = sqlValue($_POST['nombre_'.$i.''], "text");
			$fecha = sqlValue($_POST['fecha_'.$i.''], "date");
			$metros = sqlValue($_POST['metros_'.$i.''], "int");
			$entrena = sqlValue($_POST['entrena_'.$i.''], "int");
 
			$sql = "INSERT INTO T03Tramos (ID2TramoT03, IDCarreraT03, NombreT03, FechaT03, KmT03, EntrenamientoT03, TramoTerminadoT03) ";
			$sql.= "VALUES ($id2, $idcarrera, $nombre, $fecha, $metros, $entrena, 0)";
			echo $sql;
			echo "<br>";
			mysql_query($sql, $conexion);
 
	}
}
require("cerrar_conexion.php");
?>


Guardo hago el ECHO me muestra todas las lineas a insertar, pero en cambio, en la base de datos solo añade el primero de ellos.

Con el ECHO del SQL me imprime lo siguiente:

1
2
INSERT INTO T03Tramos (ID2TramoT03, IDCarreraT03, NombreT03, FechaT03, KmT03, EntrenamientoT03, TramoTerminadoT03) VALUES (1, 1, 'A', '2011-01-01', 1, 0, 0)
INSERT INTO T03Tramos (ID2TramoT03, IDCarreraT03, NombreT03, FechaT03, KmT03, EntrenamientoT03, TramoTerminadoT03) VALUES (2, 1, 'B', '2011-01-01', 2, 0, 0)


En cambio, en la base de datos solo tengo el primero.
Me parece que me falta halgo...pero el que...no lo se.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario - Select onChange

Publicado por rodrigo (1 intervención) el 28/05/2015 21:20:57
Gracias funciona al 100
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar