Foros del Web » Programando para Internet » PHP »

tomar valor de input

Estas en el tema de tomar valor de input en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente código dentro de un while … muestro varios alumnos dependiendo mi consulta… ahora bien tengo la calificación ya registrada ...
  #1 (permalink)  
Antiguo 29/05/2014, 15:33
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
tomar valor de input

Hola a todos, tengo el siguiente código dentro de un while … muestro varios alumnos dependiendo mi consulta… ahora bien tengo la calificación ya registrada del parcial uno,dos y tres …
Y me toca ingresar la del cuatro… pero me gustaría que ahí mismo el promedio se calcule automáticamente…
El problema es que no sé cómo tomar el valor de mi último input (4) es decir el que no tiene valor de mi base


agradezco su ayuda

Código PHP:

<td ><input   type="text"  name="p1[]" id="p1" value="<?php echo $row_calificar['uno']; ?>"     </td>
<td ><input   type="text"  name="p2[]" id="p2" value="<?php echo $row_calificar[dos']; ?>"     </td>
<td ><input   type="text"  name="p3[]" id="p3" value="<?php echo $row_calificar['
tres]; ?>"     </td>
<td ><input   type="text"  name="p4[]" id="p4" value=""     </td>
  #2 (permalink)  
Antiguo 29/05/2014, 15:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: tomar valor de input

¿Cómo que no sabes?

El valor lo obtienes como cualquier otro campo, tenga o no tenga algo en el value, no hay diferencias.

Lee el siguiente manual: http://www.php.net/variables.external
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/05/2014, 16:02
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Cómo que no sabes?

El valor lo obtienes como cualquier otro campo, tenga o no tenga algo en el value, no hay diferencias.

Lee el siguiente manual: http://www.php.net/variables.external
Gracias pateketrueke tal vez no me explique bien lo que necesito es tomar el ultimo valor sin usar Post o Get... es decir sin tener que presionar algun boton ...
  #4 (permalink)  
Antiguo 29/05/2014, 16:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: tomar valor de input

¿Es decir que quieres tomar el valor en el navegador mismo sin tener que enviar el formulario?

Si eso es correcto entonces te estás confundiendo de lenguaje, porque PHP se ejecuta en el servidor y es necesario que envíes el formulario para que pueda tomar algún valor.

Lo que buscas debes resolverlo con Javascript ¿no crees?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/05/2014, 16:11
 
Fecha de Ingreso: febrero-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: tomar valor de input

No entendi bien tu problema, pero si lo que necesitas es que en el cuarto input se calcule el promedio, se me ocurren dos maneras:
Con una Cuenta desde el servidor (PHP) o con javascript. Por ejemplo:

- Desde PHP:
haces la cuenta del promedio e imprimis el valor en el cuarto input como hiciste con el resto.

<?php $row_calificar['cuatro'] = ($row_calificar['uno']+$row_calificar['dos']+$row_calificar['uno'])/3 ?>

<td ><input type="text" name="p4[]" id="p4" value="<?php echo $row_calificar['cuatro']; ?>"</td>


- Desde Javascript:
Obtenes con el ID los valores de los input, luego haces la cuenta del promedio y actualizas el valor del cuarto input.

Lo que si no se, es si esos input pueden ser modificables por el usuario, en ese caso deberias recalcular el promedio y tu mejor opcion seria Javascript.

Si necesitas ayuda con JS te puedo armar una funcion de ejemplo
  #6 (permalink)  
Antiguo 29/05/2014, 16:13
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Es decir que quieres tomar el valor en el navegador mismo sin tener que enviar el formulario?

Si eso es correcto entonces te estás confundiendo de lenguaje, porque PHP se ejecuta en el servidor y es necesario que envíes el formulario para que pueda tomar algún valor.

Lo que buscas debes resolverlo con Javascript ¿no crees?
ok entiendo :(

Última edición por Briss; 29/05/2014 a las 16:18
  #7 (permalink)  
Antiguo 29/05/2014, 16:21
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por Kenovi Ver Mensaje
No entendi bien tu problema, pero si lo que necesitas es que en el cuarto input se calcule el promedio, se me ocurren dos maneras:
Con una Cuenta desde el servidor (PHP) o con javascript. Por ejemplo:

- Desde PHP:
haces la cuenta del promedio e imprimis el valor en el cuarto input como hiciste con el resto.

<?php $row_calificar['cuatro'] = ($row_calificar['uno']+$row_calificar['dos']+$row_calificar['uno'])/3 ?>

<td ><input type="text" name="p4[]" id="p4" value="<?php echo $row_calificar['cuatro']; ?>"</td>


- Desde Javascript:
Obtenes con el ID los valores de los input, luego haces la cuenta del promedio y actualizas el valor del cuarto input.

Lo que si no se, es si esos input pueden ser modificables por el usuario, en ese caso deberias recalcular el promedio y tu mejor opcion seria Javascript.

Si necesitas ayuda con JS te puedo armar una funcion de ejemplo
Gracias amigo el detalle esta asi...
el usuario tiene que calcular la calificacion 4... (como es la ultima tengo con esto que calcular el promedio automaticamente... (los 3 primeros valores no se pueden cambiar ya que vienen de mi base de datos... el 4 es el que el usuario ingresara...
te agradezco mucho si me orientas con alguna función (javascript es nuevo para mi)
  #8 (permalink)  
Antiguo 29/05/2014, 16:34
 
Fecha de Ingreso: febrero-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: tomar valor de input

no entendi bien que es el 4 input. Es otra nota que ingresa el usuario y el valor aparece en otro lado (ej DIV, Alert, input 5) o es donde aparece el promedio calculado?
acordate de poner el disabled en los input que no queres que el usuario modifique para bloquearlos
  #9 (permalink)  
Antiguo 29/05/2014, 16:47
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por Kenovi Ver Mensaje
no entendi bien que es el 4 input. Es otra nota que ingresa el usuario y el valor aparece en otro lado (ej DIV, Alert, input 5) o es donde aparece el promedio calculado?
acordate de poner el disabled en los input que no queres que el usuario modifique para bloquearlos
Si el 4 es otra nota y el input 5 seria para promedio
  #10 (permalink)  
Antiguo 29/05/2014, 17:07
 
Fecha de Ingreso: febrero-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: tomar valor de input

eso supuse, y ya arme algo xD

Lo que hice fue obtener los datos de un formulario y con el evento "onChange()" de JS detecta automaticamente cuando el valor es otro y recalcula el promedio.
Si copias y pegas este codigo en un archivo HTML funciona sin problemas.

----------------------------------------------------------------------------------------------
CODIGO:
----------------------------------------------------------------------------------------------

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Calculo de Promedio con Javascript</title>
<script>
function calcular_prom(f){
var val1 = parseInt(f.p1.value);
var val2 = parseInt(f.p2.value);
var val3 = parseInt(f.p3.value);
var val4 = parseInt(f.p4.value);

//Calculo del Promedio
f.res.value = ( val1 + val2 + val3 + val4 ) / 4;
}
</script>
</head>
<body>
<h1>Calculo de Promedio con Javascript</h1>
<form action="#" name"form0" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
</table>
</form>
</body>
</html>
  #11 (permalink)  
Antiguo 29/05/2014, 17:13
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por Kenovi Ver Mensaje
eso supuse, y ya arme algo xD

Lo que hice fue obtener los datos de un formulario y con el evento "onChange()" de JS detecta automaticamente cuando el valor es otro y recalcula el promedio.
Si copias y pegas este codigo en un archivo HTML funciona sin problemas.

----------------------------------------------------------------------------------------------
CODIGO:
----------------------------------------------------------------------------------------------

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Calculo de Promedio con Javascript</title>
<script>
function calcular_prom(f){
var val1 = parseInt(f.p1.value);
var val2 = parseInt(f.p2.value);
var val3 = parseInt(f.p3.value);
var val4 = parseInt(f.p4.value);

//Calculo del Promedio
f.res.value = ( val1 + val2 + val3 + val4 ) / 4;
}
</script>
</head>
<body>
<h1>Calculo de Promedio con Javascript</h1>
<form action="#" name"form0" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
</table>
</form>
</body>
</html>
Gracias amigo funciona bien pero cuando lo meto en do while... para todos mis alumnos
<form action="#" name"form0" method="post">
<table>
<?php do { ?>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1[]" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2[]" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3[]" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4[]" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
<?php } while ($row_calificar = mysql_fetch_assoc($calificar)); ?>

No se ejecuta yap :(
  #12 (permalink)  
Antiguo 29/05/2014, 17:19
 
Fecha de Ingreso: febrero-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: tomar valor de input

es que el error que estas cometiendo es no meter la etiqueta form en el do while.
la tabla es cuestion de maquetación, eso depende de vos.

podrias hacer algo asi:


--------------------------------------------------------------------------------------------------------

<?php
$CONT =0;
do { ?>
<form action="#" name"form<?php echo $CONT; ?>" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
</table>
</form>
<?php } while ($row_calificar = mysql_fetch_assoc($calificar)); ?>

--------------------------------------------------------------------------------------------------------

de esa manera todos los form tendrian nombre distintos, y te funcionaria porque la funcion recibe como aprametro el nombre del formulario para acceder a los valores.

probalo y contame
  #13 (permalink)  
Antiguo 29/05/2014, 17:24
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

Cita:
Iniciado por Kenovi Ver Mensaje
es que el error que estas cometiendo es no meter la etiqueta form en el do while.
la tabla es cuestion de maquetación, eso depende de vos.

podrias hacer algo asi:


--------------------------------------------------------------------------------------------------------

<?php
$CONT =0;
do { ?>
<form action="#" name"form<?php echo $CONT; ?>" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res" value="" ></td></tr>
</table>
</form>
<?php } while ($row_calificar = mysql_fetch_assoc($calificar)); ?>

--------------------------------------------------------------------------------------------------------

de esa manera todos los form tendrian nombre distintos, y te funcionaria porque la funcion recibe como aprametro el nombre del formulario para acceder a los valores.

probalo y contame

agregue los corchetes a los input ya que es necesario... pero no arroja nada en la funcion no se como indicar en javascript que mis input son array osea no se como meter los corchetes
Código PHP:
<?php 
$CONT 
=0;
do { 
?> 
<form action="#" name"form<?php echo $CONT?>" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="p1[]" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="p2[]" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="p3[]" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="p4[]" value="" onChange="calcular_prom(this.form);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res[]" value="" ></td></tr>
</table>
</form>
<?php } while ($row_calificar mysql_fetch_assoc($calificar)); ?>
  #14 (permalink)  
Antiguo 29/05/2014, 17:50
 
Fecha de Ingreso: febrero-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: tomar valor de input

No podes poner los corchetes para estos input, sino que tenes que modificar los name y/o los id con un contador desde PHP

para este ejemplo los name y id se forman de la siguiente manera: alumno[id_alumno]_[contador_input]

Ej: Alumno 1: ID=1:
alumno1_1


Aca te dejo un Ejemplo para 3 alumno, acordate de reemplazar los numeror por los contadores y los id.

Alumno 1: ID=1
Alumno 2: ID=2
Alumno 3: ID=3

Para este caso,

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Calculo de Promedio con Javascript</title>
<script>
function calcular_prom(id_alumno){

var Aux = null;

Aux = document.getElementById("alumno"+id_alumno+"_1");
var val1 = parseInt(Aux.value);
Aux = document.getElementById("alumno"+id_alumno+"_2");
var val2 = parseInt(Aux.value);
Aux = document.getElementById("alumno"+id_alumno+"_3");
var val3 = parseInt(Aux.value);
Aux = document.getElementById("alumno"+id_alumno+"_4");
var val4 = parseInt(Aux.value);

//Calculo del Promedio
Aux = document.getElementById("res"+id_alumno);
Aux.value = ( val1 + val2 + val3 + val4 ) / 4;
}
</script>
</head>
<body>
<h1>Calculo de Promedio con Javascript</h1>
<form action="#" name"form0" method="post">
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="alumno1_1" id="alumno1_1" value="7,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="alumno1_2" id="alumno1_2" value="5,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="alumno1_3" id="alumno1_3" value="9,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="alumno1_4" id="alumno1_4" value="" onChange="calcular_prom(1);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res1" id="res1" value="" ></td></tr>
</table>
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="alumno2_1" id="alumno2_1" value="2,55" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="alumno2_2" id="alumno2_2" value="4,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="alumno2_3" id="alumno2_3" value="10" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="alumno2_4" id="alumno2_4" value="" onChange="calcular_prom(2);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res2" id="res2" value="" ></td></tr>
</table>
<table>
<tr><td><p>Valor 1: </p></td><td><input type="text" name="alumno3_1" id="alumno3_1" value="8,75" disabled></td></tr>
<tr><td><p>Valor 2: </p></td><td><input type="text" name="alumno3_2" id="alumno3_2" value="8,50" disabled></td></tr>
<tr><td><p>Valor 3: </p></td><td><input type="text" name="alumno3_3" id="alumno3_3" value="4,50" disabled></td></tr>
<tr><td><p>Valor 4: </p></td><td><input type="text" name="alumno3_4" id="alumno3_4" value="" onChange="calcular_prom(3);"></td></tr>
<tr><td><p>Resultado: </p></td><td><input type="text" name="res3" id="res3" value="" ></td></tr>
</table>
</form>
</body>
</html>


PD: no metas el form en el while para este caso
  #15 (permalink)  
Antiguo 29/05/2014, 18:43
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: tomar valor de input

:( es que tengo que usar do while porque en base a mi consulta muestro a los alumnos....

y estos pueden varias en cantidad

Etiquetas: input, tomar, valor
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 03:26.