PHP - Select option / Textbox

   
Vista:

Select option / Textbox

Publicado por Gonzalo (9 intervenciones) el 23/05/2017 15:39:04
Estimados,

Necesito si es que me pueden ayudar con este problemita:
Necesito asignar un valor a un textbox al momento que seleccione una opcion del select option y que vaya cambiando automaticamente según la opción.
Por ejemplo si selecciono 120, quiero que se muestre en el textbox el valor 3.1 y asi para cada uno.
No he logrado realizarlo, desde muchas gracias por su ayuda y aportes.
Lo valores los extraigo de una tabla
Datos de la tabla:
______________
| masthel |
+---------------------+
mhID | bar | m3
--------+-------+------
1 | 150 | 3.4
2 | 120 | 3.1
3 | 80 | 2.1
------------------------
Parte del código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sqlh = "SELECT mhID, bar, m3 FROM masthel ORDER BY bar ASC";
	$reshel = $mysqli->query($sqlh);
?>
<td>
<select class="form-control" id="txtbar1" name="txtbar1" required>
		<option value=""> BAR</option>
		<?php WHILE($row3 = $reshel->fetch_assoc()) { ?>
		<option value="<?php echo $row3['mhID']; ?>"><?php echo $row3['bar']; ?></option>
				<?php } ?>
</select>
</td>
<td>
<input type="number" class="form-control col-xs-2" id="txtm3_1" name="txtm3_1" value=txtbar1>
</td>
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

Select option / Textbox

Publicado por xve (6544 intervenciones) el 23/05/2017 17:50:55
Hola Gonzalo, la manera que se me ocurre, es que guardes los valores de la base de datos en un array de JavaScript, para de esta manera, al ir seleccionando uno u otro valor, mostrar el campo m3 en el cuadro de texto.

Te he preparado este ejemplo haber si te sirve...

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
<script>
var valores=Array();
</script>
 
<?php
$reshel = array(
	array(1,150,3.4),
	array(2,120,3.1),
	array(3,80,2.1)
);
 
foreach($reshel as $row)
{
	?>
	<script>
	valores.push(Array(<?php echo $row[0]?>,<?php echo $row[1]?>,<?php echo $row[2]?>));
	</script>
	<?php
}
?>
<td>
<select class="form-control" id="txtbar1" name="txtbar1" onClick="mostrarM3(this.value);" required>
	<option value="">BAR</option>
	<script>
	valores.forEach(function(element){
		document.write("<option value='"+element[0]+"'>"+element[1]+"</option>");
	});
	</script>
</select>
</td>
<td>
<input type="number" class="form-control col-xs-2" id="txtm3_1" name="txtm3_1" value="">
</td>
 
<script>
function mostrarM3(seleccion) {
	document.getElementById("txtm3_1").value="";
	valores.forEach(function(element){
		if(element[0]==seleccion)
		{
			document.getElementById("txtm3_1").value=element[2];
		}
	});
}
</script>

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
2
Comentar

Select option / Textbox

Publicado por Gonzalo (9 intervenciones) el 23/05/2017 18:57:18
Estimado xve

Funciona, pero un unico detalle que se me fue comentar es que la table tiene 150 registros, obviamente escribi tres para mostrar el ejemplo.

Como puedo realizarlo sin hacer 150 veces el código del array?
1
2
3
4
5
$reshel = array(
	array(1,150,3.4),
	array(2,120,3.1),
	array(3,80,2.1)
);

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
Imágen de perfil de xve

Select option / Textbox

Publicado por xve (6544 intervenciones) el 24/05/2017 07:23:54
Hola Gonzalo, yo lo puse en un array de PHP para simular el resultado de tu consulta sql.
Lo que tienes que hacer, es rellenar ese array a partir de los datos devueltos por la consulta sql.

En vez de hacer:
1
foreach($reshel as $row)

haz algo como:
1
WHILE($row = $reshel->fetch_assoc())
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Revisar política de publicidad