Somma automatica checkbox

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera, ho un problema...
Ho dei checkbox che si auto generano da un database... Ognuno di questi ha al suo interno un valore numerico (importo in euro). Io ho gia un importo che mi porto avanti dall'inizio e dovrei sommargli gli eventuali importi che vengono checkati.

Questa è la pagina che ho fatto, ma ovviamente non mi somma nulla... La somma t

PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Step 2</title>
<script>
function somma() {
var importi = document.getElementsByTagName("input")
  var sum = 0;
  var gn, elem;
  for (i=0; i<importi.length; i++) {
    gn = 'importi'+i;
    elem = document.getElementById(gn);
    if (elem.checked == true) { sum += Number(elem.value); }
  }
  document.getElementById('totalcost').value = sum.toFixed(2);
} 
</script>
</head>

<body>
<?php
$str = $_POST['XMLRETURN'];
$xml = simplexml_load_string($str);
$i= count($xml->Servizi);
echo "<h3>Disponiblità totale Servizi: (".$i.")</h3>";
echo "ID Stazione In: <b>" .$stazionein = $xml->StazioneIn."</b><br />";
echo "Stazione Out: <b>" .$desstazioneout = $xml->DesStazioneOut."</b><br />";
echo "Stazione In: <b>" .$desstazionein = $xml->DesStazioneIn."</b><br />";
echo "Data Out: <b>" .$dataout = $xml->DataOut."</b><br />";
echo "Data In: <b>" .$datain = $xml->DataIn."</b><br />";
echo "Gruppo: <b>" .$gruppo = $xml->Gruppo."</b><br />";
echo "Giorni Noleggio: <b>" .$giorninol = $xml->ggNoleggio."</b><br />";
echo "Eta: <b>" .$eta = $xml->Eta."</b><br />";
echo "kListino: <b>" .$klistino = $xml->kListino."</b><br />";
echo "Importo: <b>" .$importo = $xml->Importo."</b><br />";
echo "<hr><br><br>"; 
$j=0;  
while ($j < $i) 
{ 
 $disponibilita = $xml->Servizi[$j]; 
echo '<form action="prosegui.php" method="post" name="frm'.$xml->Gruppo.'">';  
  echo '<input type="hidden" name="gruppo" id="gruppo" value="'.$xml->Gruppo.'" />';
  echo '<input type="hidden" name="idout" id="idout" value="'.$xml->StazioneOut.'" />';
  echo '<input type="hidden" name="idin" id="idin" value="'.$xml->StazioneIn.'" />';
  echo '<input type="hidden" name="dataout" id="dataout" value="'.$xml->DataOut.'" />';
  echo '<input type="hidden" name="datain" id="datain" value="'.$xml->DataIn.'" />';
  echo '<input type="hidden" name="giorninolo" id="giorninolo" value="'.$xml->ggNoleggio.'" />';
  //echo "Descrizione: <b>" .$disponibilita->Descrizione."</b><br />"; 
 // echo "kServizio: <b>" .$disponibilita->kServizio."</b><br />";
 // echo "Importo: <b>" .$disponibilita->Importo."</b><br />"; 
 // echo "MaxAddebito: <b>" .$disponibilita->MaxAddebito."</b><br />"; 
//  echo '<input type="submit" id="invia" name="invia" value="PROSEGUI" /></form>';
//  echo "<hr><br>"; 
echo ''.$disponibilita->Descrizione.' : <input type="checkbox" name="'.$disponibilita->Descrizione.'" value="'.$disponibilita->Importo.'" id ="importi[]" onclick="somma();" />';
  $j++;
}
$k = count($xml->Coperture);
	  echo "<h3>Coperture: (".$k.")</h3>" ;
	 $l=0;
	 while ($l < $k)
	 {
		 $coperture = $xml->Coperture[$l];
		 echo ''.$coperture->Descrizione.' : <input type="checkbox" name="'.$coperture->Descrizione.'" id ="importi[]" value="'.$coperture->Importo.'" onclick="somma();" />';
		 $l++;
	 }
	/* $a = count($xml->Accessori);
	  echo "<h3>Accessori: (".$a.")</h3>" ;
	 $b=0;
	 while ($b < $a)
	 {
		 $accessori = $xml->Accessori[$b]; 
		 echo "Descrizione: <b>" .$accessori->Descrizione."</b><br />"; 
  echo "kServizio: <b>" .$accessori->kServizio."</b><br />";
  echo "Importo: <b>" .$accessori->Importo."</b><br />"; 
  echo "MaxAddebito: <b>" .$accessori->MaxAddebito."</b><br />"; 
    echo "<hr><br>"; 
		 $b++;
	 }*/
?>
<br /><input type="text" id="totalcost" value="">
</b>
</body>
</html>

Riuscite a dirmi come e dove sbaglio ?
 
Ciao
Codice:
i < importi.length
restituisce il numero degli elementi partendo da 1
Codice:
i = 0;
qui invece parti da 0

potresti risolvere cosi
Codice:
i < importi.length - 1
 

Discussioni simili