Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/03/2012, 16:58
setenta
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Script embrujado: Resta cuando tiene que sumar

Hola Luis y gracias por contestar. Ya me parecía que había que reestructurar el script, no veia bien como podía tomar el par gramos/alimento. El tema de llamar a la funcion una vez elegido el par peso/alimento es muy buena, limpiando un poco el script, ya que antes hacia eso, pero como vez mezclaba todo.

Cita:
Suposiciones:
Tienes dos lista select:
- cantidad: Sus opciones son <valor=cientos de gramos, texto= gramos>
- ??: Sus opciones son <valor=calorias por cada 100 gramos, texto= nombre alimento>
Respuesta: El primer select selecciona una lista de valores de peso en gramos (100, 200, etc de texto, con un valor de 1,2, etc respectivamente).
El segundo select selecciona una lista de alimentos (por ejemplo, jamon) pero en el cuadro de texto escribe el alimento y las calorias por 100 gramos, (ponele, jamon : 250 calorias /100 gramos), porque ambas columnas son traidas de la base de datos sql con php.
Lógicamente, si el usuario selecciona 200 gramos, y su option value=2, entonces debe multiplicar las 250 calorias x 2, dando un par de jamon : 500 calorias (ya que seleccionó el doble). Si es el triple, serían 750, etc.


Para aclarar dudas (principalmente a IsaBel ), coloco todo el código (js+xhtml) para que vean como puse los objetos select y cuadros de texto. Es muy buena tu idea Luis, ya voy a ver como la voy probando y reestudiando el código. Muchas gracias. Por ahora, lo antiguo:

Cita:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tu Dieta</title>
<p align="center"><b>Selecci&oacute;n y adici&oacute;n de elementos a una lista</b></p>
<script language="javascript">
var valor="1";
var texto;
var indice;
var valor_total = 0;
var _list_kalorias = new Array(); //Array para _list_kalorias

function Propiedades(){
texto = document.formulario.cantidad.length
indice = document.formulario.cantidad.selectedIndex
valor = document.formulario.cantidad.options[indice].value
}

function insertar_el_numero(op) {

var chosenoption=op.options[op.selectedIndex] //this refers to "selectmenu"
if (!isNaN(chosenoption.value)){
_list_kalorias.push(chosenoption);

calculate(); }
}
function calculate(){

var form = document.getElementById('formulario');
var txt='';
valor_total=0;
for(var i =0;i<_list_kalorias.length;i++ ){
var op = _list_kalorias[i];
txt+=op.text +':'+op.value*valor+"\n";
valor_total += parseInt(op.value);
}
form.seleccionados.value=txt;
form.suma.value="Total: "+valor_total+" kcal" ;
}

// End -->
</script>
</head>
</b>
<body style="font-family: Verdana">
</p>
<form id="formulario" name="formulario" action=""/>
<select name="cantidad" onchange="Propiedades()"/>
<option value="1" selected="selected">100 gramos</option>
<option value="2">200 gramos</option>
<option value="3">300 gramos</option>
<option value="4">400 gramos</option>
<option value="5">500 gramos</option>
</select>
<select name="form_carnes" onchange="insertar_el_numero(this);"/>
<?php
mysql_query ("SET NAMES 'utf8'");
do {
?>
<option value="<?php echo $row_registro_carnes['kilocalorias'] ?>"><?php echo $row_registro_carnes['nombre']?></option>
<?php
} while ($row_registro_carnes = mysql_fetch_assoc($registro_carnes));
$rows = mysql_num_rows($registro_carnes);
if($rows > 0) {
mysql_data_seek($registro_carnes, 0);
$row_registro_carnes = mysql_fetch_assoc($registro_carnes);
}
?>

</select>
<select name="form_cereales" onchange="insertar_el_numero(this);"/>

<?php
mysql_query ("SET NAMES 'utf8'");
do {
?>
<option value="<?php echo $row_registro_cereal['kilocalorias'] ?>"><?php echo $row_registro_cereal['nombre']?></option>
<?php
} while ($row_registro_cereal = mysql_fetch_assoc($registro_cereal));
$rows = mysql_num_rows($registro_cereal);
if($rows > 0) {
mysql_data_seek($registro_cereal, 0);
$row_registro_cereal = mysql_fetch_assoc($registro_cereal);
}
?>
</select><font face="Arial, Helvetica, Sans Serif" size="2">Cereales:</font>
<font face="Arial, Helvetica, Sans Serif" size="2">Elementos a&ntilde;adidos a la lista:</font><br>
<textarea cols="40" rows="10" name="seleccionados">&nbsp;</textarea>
<textarea cols="20" rows="10" name="suma"></textarea>
</form>

<!-- AQUI COMIENZA EL OTRO -->
<form id="form-cereales" name="formularios2" action=""/>
</form>


</body>
</html>

<?php
mysql_free_result($registro_carnes);
mysql_free_result($registro_cereal);
?>
Nota: Falta una parte del codigo php (que esta encima del html y que no tiene importancia, solo js y formularios). SALUDOS!!!!!!!!!!!!!!!!!!!!!

Última edición por setenta; 21/03/2012 a las 17:05