Foros del Web » Programando para Internet » Javascript »

Marcar y Sumar todos los checkbox a la vez

Estas en el tema de Marcar y Sumar todos los checkbox a la vez en el foro de Javascript en Foros del Web. Hola no tengo ni idea pero tengo hecho un formulario y me funciona, si marco de uno en uno, pero si doy en seleccionar todos ...
  #1 (permalink)  
Antiguo 04/08/2006, 06:55
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Marcar y Sumar todos los checkbox a la vez

Hola no tengo ni idea pero tengo hecho un formulario y me funciona, si marco de uno en uno, pero si doy en seleccionar todos no me marca el total de la suma.

Agradezo a ver quien me puede ayudar, un saludo.

<html>

<head>
<form method="POST" name="fvalida">
<script language="JavaScript" type="text/javascript">

function marcar(chk)
{
for(i=1;ele = arguments[i]; i++)
document.forms[0][ele].checked=chk.checked;
}

function checkChoice(whichbox)
{
with (whichbox.form)
{
if (whichbox.checked == false)
fvalida.value = eval(fvalida.value) - eval(whichbox.value);
else
fvalida.value = eval(fvalida.value) + eval(whichbox.value);
return(formatCurrency(fvalida.value));
}
}

function formatCurrency(num)
{
num = num.toString().replace(/\€|\,/g,'');
if(isNaN(num))
num = "0";
cents = Math.floor((num*100+0.5)%100);
num = Math.floor((num*100+0.5)/100).toString();
if(cents < 10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
return (num + "." + cents+ " €" );
}
</script>

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
</head>

<p align="center"><font size="2">El total Anual es:&nbsp; <input readonly size="6" name="total">
IVA. Incluido</font></p>
<form method="POST">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="752" align="left" colspan="5">
<p align="center"><input type="checkbox" onclick="marcar(this,'num1','num2','num3','num4',' num5')" value="ON"><font size="2">Todos</font>
</tr>
<tr>
<td width="214" align="left">&nbsp;<font size="2"><input onclick="this.form.total.value=checkChoice(this);" type="checkbox" value="34.40" name="num1">Uno</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="this.form.total.value=checkChoice(this);" type="checkbox" value="34.40" name="num2">Dos</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="this.form.total.value=checkChoice(this);" type="checkbox" value="34.40" name="num3">Tres</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="this.form.total.value=checkChoice(this);" type="checkbox" value="34.40" name="num4">Cuatro</font></td>
<td width="216" align="left">
<p align="left"><font size="2"><input onclick="this.form.total.value=checkChoice(this);" type="checkbox" value="34.40" name="num5">Cinco</font></td>
</tr>
</table>
<p align="center"><input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
<input type="hidden" name="fvalida" value="0">
</form>

</html>
  #2 (permalink)  
Antiguo 04/08/2006, 10:45
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Y xq no añades q dentro de la función marcar llame a la función que va sumando?

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 04/08/2006, 11:45
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Marcar y Sumar todos los checkbox a la vez

Hola soy kdiz, el que ha hecho la pregunta de Marcar y Sumar todos los checkbox a la vez.

Agradezco tu respuesta, pero me puedes explicar un poco mejor como tengo que hacer lo que me has dicho?

que añada dentro de la función marcar llame a la función que va sumando.


Espero tu respuesta,

Saludos.
  #4 (permalink)  
Antiguo 04/08/2006, 11:49
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Pues me refiero a algo así por ejemplo:

Código HTML:
function marcar(chk) 
{
    for(i=1;ele = arguments[i]; i++) {
        document.forms[0][ele].checked=chk.checked;
        document.form.total.value=checkChoice(document.forms[0][ele]);
    }
}
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #5 (permalink)  
Antiguo 04/08/2006, 12:09
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Esto no va

Hola de nuevo.

Esto no va, he puesto tal como me has dicho pero que va, da error.

A ver si puedes explicar mejor.

Saludo
  #6 (permalink)  
Antiguo 04/08/2006, 12:20
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Corrijo la función, se me escapó una tonterida:

Código HTML:
function marcar(chk) 
{
	for(i=1;ele = arguments[i]; i++) {
		if (document.forms[0][ele]!=undefined) { 
			document.forms[0][ele].checked=chk.checked;
			document.forms[0].total.value=checkChoice(document.forms[0][ele]);
		}
	}
}
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #7 (permalink)  
Antiguo 04/08/2006, 12:56
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

OK, de momento parece que empieza a funcionar, te doy las gracias si te veo por ahí ya te invitaré a una copita, jejeje.

Pero aún me fantan un par de cositas para dejar el tema niquelado del todo.

1ª Por ejemplo. Cuando pincho el checkbox de todos, me da el resultado de 102.00. Pero al ir desmarcando los checkbox restantes se me llega a quedar en 0.00 pero la casilla de todas continúa marcada y al desmarcarla me da como resultado - 102.00. y si vuelvo a pinchar me da 0.00 .

Esto quiere decir que si en un formulario un visitante hace esta operación, me llegará como resultado de la compra=0.00

2ª Este javascrip irá lógicamente en un formulario pero el scrip que recoge el formulario me envía unos datos y me dice que se han marcado los checkbox. x x x . Es decir me envía los resultados de los value, y estos son: value="20.40" ="20.40" ="20.40"

Pero yo quisiera que me llegase o que me recogiese el name="num1">Uno "num2">Dos - etc.

Espero haberme explicado con claridad,

Un Saludo.
  #8 (permalink)  
Antiguo 04/08/2006, 13:07
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Para lo 1º deberías coger por cada checkbox de los independientes verificar si es el último que se marca o desmarca para que quede marcado o desmarcado el Seleccionar Todos.

Para lo 2º lo normal es q lleguen los values, pero para recogerlos debes recogerlos por el name (al menos en PHP)... así q eso debes de mirarlo en el script q recoge las variables.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #9 (permalink)  
Antiguo 04/08/2006, 13:39
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Marcar y Sumar todos los checkbox a la vez

Uuuffffff.

OK, ya veo que es pedir demasiado,

De todas formas te agradezco, cuando puedas, si quieres y tienes tiempo me respondes pero por favor que yo pueda entenderlo, ya deje claro que no se nada.

¿Como se hace lo 1º? - ¿y lo 2º?

Un Salud
  #10 (permalink)  
Antiguo 04/08/2006, 13:45
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Marcar y Sumar todos los checkbox a la vez

Uuuffffff.

OK, ya veo que es pedir demasiado,

De todas formas te agradezco, cuando puedas, si quieres y tienes tiempo me respondes pero por favor que yo pueda entenderlo, ya deje claro que no se nada.

¿Como se hace lo 1º? - ¿y lo 2º?

Un Salud
  #11 (permalink)  
Antiguo 04/08/2006, 14:40
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Marcar y Sumar todos los checkbox a la vez

Hola de nuevo.

Agradecería a quien me pueda ayudar:

me fantan un par de cositas para dejar el tema niquelado del todo.

1ª Por ejemplo. Cuando pincho el checkbox de todos, me da el resultado de 102.00. Pero al ir desmarcando los checkbox restantes se me llega a quedar en 0.00 pero la casilla de todas continúa marcada y al desmarcarla me da como resultado - 102.00. y si vuelvo a pinchar me da 0.00 .

¿Sería posible que al seleccionar el checkbox de todos me marcase el total, y al deseleccionar este mismo checkbox, me resetease todos?,

Es decir que no devuelva 0.00, y así evitar que se pueda volver a marcar y desmarcar, recogiendo datos dispares.

2ª el scrip que recoge el formulario PHP, me envía unos datos y me dice que se han marcado los checkbox. x x x . Es decir me envía los resultados de los value, y estos son: value="20.40" ="20.40" ="20.40"

Pero yo quisiera que me llegase o que me recogiese el name="num1">Uno "num2">Dos - etc.

Espero haberme explicado con claridad, y ver si alguien me puede ayudar.

Un Saludo.
  #12 (permalink)  
Antiguo 04/08/2006, 14:51
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

Perdón pero me he equivocado:

Quería decir:

1ª Por ejemplo. Cuando pincho el checkbox de todos, me da el resultado de 102.00. Pero al ir desmarcando los checkbox restantes se me llega a quedar en 0.00 pero la casilla de todas continúa marcada y al desmarcarla me da como resultado - 102.00. y si vuelvo a pinchar me da 0.00 .

¿Sería posible que al seleccionar el checkbox de todos me marcase el total, y que este total fuese un número tope, o máximo, y al deseleccionar este mismo checkbox, me resetease todos?,

Es decir que no devuelva 0.00, y así evitar que se pueda volver a marcar y desmarcar, recogiendo datos dispares.

Perdón de nuevo y un Saludo a todos/as.
  #13 (permalink)  
Antiguo 04/08/2006, 16:13
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
yo lo haría así:

Cita:
<html>
<head>
<script language="JavaScript" type="text/javascript">
var c=new Array('num1','num2','num3','num4','num5');

function marcar(check){
for(z=0;z<c.length;z++){
document.forms[0][c[z]].checked=check.checked;
}
calcular();
}

function calcular(){
tt=0;
for(z=0;z<c.length;z++){
tt+=(document.forms[0][c[z]].checked)?parseInt(document.forms[0][c[z]].value):0;
}
document.forms[0]['total'].value=formatCurrency(tt);
}

function formatCurrency(num)
{
num = num.toString().replace(/\€|\,/g,'');
if(isNaN(num))
num = "0";
cents = Math.floor((num*100+0.5)%100);
num = Math.floor((num*100+0.5)/100).toString();
if(cents < 10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
return (num + "." + cents+ " €" );
}
</script>
</head>

<body>
<form method="POST">
<p align="center"><font size="2">El total Anual es:&nbsp; <input readonly size="6" name="total">
IVA. Incluido</font></p>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="752" align="left" colspan="5">
<p align="center"><input type="checkbox" onclick="marcar(this)" value="ON"><font size="2">Todos</font>
</tr>
<tr>
<td width="214" align="left">&nbsp;<font size="2"><input onclick="calcular()" type="checkbox" value="34.40" name="num1">Uno</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="34.40" name="num2">Dos</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="34.40" name="num3">Tres</font></td>
<td width="108" align="left">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="34.40" name="num4">Cuatro</font></td>
<td width="216" align="left">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="34.40" name="num5">Cinco</font></td>
</tr>
</table>
<p align="center"><input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
<input type="hidden" name="fvalida" value="0">
</form>

</body>
</html>
pego todo el codigo prque había algunas etiquetas que faltaban. Además no se que función cumple el campo "fvalida" pero supongo que solo era algo de transición.

Restaría un pequeño detalle: que cuando se van marcanto uno a uno los checkbox cuando se marque n todos, el check todos también se tilde, pero creo que no influye demaciado.

saludos
__________________
by Capitán Buscapina
.
  #14 (permalink)  
Antiguo 04/08/2006, 17:30
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

OK, perfecto, Cap.Buscapina-

Lo único que no calcula los decimales (los centimos)

Tampoco hay mención a mi segunda pregunta:

2ª el scrip que recoge el formulario PHP, me envía unos datos y me dice que se han marcado los checkbox. x x x . Es decir me envía los resultados de los value, y estos son: value="34.40" ="34.40" ="34.40" etc.

Pero yo quisiera que me llegase o que me recogiese el name="num1">Uno "num2">Dos - etc. o bién cambiar el value?

Espero tu respuesta.

Un Salud
  #15 (permalink)  
Antiguo 04/08/2006, 17:57
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
Iniciado por kdiz Ver Mensaje
Lo único que no calcula los decimales (los centimos)

Upppsss!!! disculpa se me pasó por alto, cambia donde dice parseInt por parseFloat

Cita:
Iniciado por kdiz Ver Mensaje
Tampoco hay mención a mi segunda pregunta:

2ª el scrip que recoge el formulario PHP, me envía unos datos y me dice que se han marcado los checkbox. x x x . Es decir me envía los resultados de los value, y estos son: value="34.40" ="34.40" ="34.40" etc.

Pero yo quisiera que me llegase o que me recogiese el name="num1">Uno "num2">Dos - etc. o bién cambiar el value?
lo probé y pasa los valores como debería. No será algun problema de como recojes esa informacion??? (fijate que no tengas repetidas las etiquetas form)
saludos
__________________
by Capitán Buscapina
.
  #16 (permalink)  
Antiguo 05/08/2006, 07:45
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

OK, Cap.Buscapina.

Lo de los decimales (los centimos), se solucionó.

Pero lo 2º, No.

El scrip PHP recoge los valores de los values.

Dices que tu lo has probado y te funciona?

Dime que resultado recoges. ="34.40" ="34.40" ="34.40" etc.
?no?

Si no, pasame una copia de como lo configuraste tu para que te recogiera los nombres de los campos.

saludos
  #17 (permalink)  
Antiguo 05/08/2006, 09:20
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
como es lógico no me voy a poner a recogerlos con php, pero si solamente cambias de post a get te podés fijar en la url que allí estan los datos correctos (logicamente solo pasan los values de los check marcados).

Algún pequeñín detalle esta faltando, o es al momento de recogerlos, o bien algo en el formulario. El que publicaste es 100% el que estás usando , o es un resumen????
__________________
by Capitán Buscapina
.
  #18 (permalink)  
Antiguo 05/08/2006, 12:10
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola de nuevo

Ahí te envío 1º el fotmulario y 2 el scrip.

un saludo.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>validatodoeste</title>

<script>

function valida_envia(){

var cuentaChecked=0;
for(var i=0;i<fvalida.elements.length;i++) {
if(fvalida.elements[i].checked) {
cuentaChecked+=1;
}
}
if(cuentaChecked == 0) {
window.alert("Por favor Seleccione al menos una Provincia");
document.fvalida.todos.focus()
return false;
}

//valido el Email
if (document.fvalida.Email.value.indexOf('@')== -1){
alert("Por favor Escriba su E-Mail Correcto")
document.fvalida.Email.focus()
return 0;
}

//el formulario se envia
alert("Muchas gracias por enviar el formulario");
document.fvalida.submit();
}

</script>

</head>

<body topmargin="0" leftmargin="0">

<form name="fvalida" method="POST" action="contactform2.php">
<input type="hidden" name="rec_mailto" value="[email protected]"><input type="hidden" name="rec_subject" value="Nueva Solicitud desde su Formulario"><input type="hidden" name="rec_thanks" value="thanks.php">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="left" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;&nbsp;
1.- Datos del la Solicitud:&nbsp;&nbsp;</font></td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%"></td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">
<p align="center"><font size="3">Elija el Vehículo</font></p>
</td>
</tr>
<tr>
<td width="100%" align="center" colspan="2"></td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">
<p align="center"><font size="2">&nbsp;&quot;Para Elegir Todas marque
Aquí&quot; <input type="checkbox" onclick="marcar(this)" value="0" name="todos">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
El total es:&nbsp; <input type="text" name="total" size="9"></font></p>
</td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">&nbsp;</td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">
<script language="JavaScript" type="text/javascript">
var c=new Array('Mercedes','Renault','Citroen','Volvo','Ford ');

function marcar(check){
for(z=0;z<c.length;z++){
document.forms[0][c[z]].checked=check.checked;
}
calcular();
}

function calcular(){
tt=0;
for(z=0;z<c.length;z++){
tt+=(document.forms[0][c[z]].checked)?parseFloat(document.forms[0][c[z]].value):0;
}
document.forms[0]['total'].value=formatCurrency(tt);
}

function formatCurrency(num)
{
num = num.toString().replace(/\€|\,/g,'');
if(isNaN(num))
num = "0";
cents = Math.floor((num*100+0.5)%100);
num = Math.floor((num*100+0.5)/100).toString();
if(cents < 10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
return (num + "," + cents+ " €" );
}
</script>
<div align="center">
<center>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="107" align="center"></td>
<td width="107" align="center">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="10.20" name="Mercedes" value="Mercedes">Mercedes</font></td>
<td width="108" align="center">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="10.20" name="Renault" value="Renault">Renault</font></td>
<td width="108" align="center">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="10.20" name="Citroen" value="Citroen">Citroen</font></td>
<td width="108" align="center">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="10.20" name="Volvo" value="Volvo">Volvo</font></td>
<td width="108" align="center">
<p align="left"><font size="2"><input onclick="calcular()" type="checkbox" value="10.20" name="Ford" value="Ford">Ford</font></td>
<td width="108" align="center"></td>
</tr>
<tr>
<td width="754" align="center" colspan="7"></td>
</tr>
<tr>
<td width="100%" align="center" colspan="7">
<hr color="#002F5E" align="center">
</td>
</tr>
</center>
<tr>
<td width="100%" align="center" colspan="7">
<p align="left"></td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td width="29%" align="right"><span class="producto_dato"><font size="2">Nombre
o Razón Social:&nbsp;</font></span></td>
<td width="71%"><font size="2"><input name="Nombre" type="text" size="35"></font></td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%"></td>
</tr>
<tr>
<td width="29%" align="right"><span class="producto_dato"><font size="2">Teléfonos
de Contacto:&nbsp;</font></span></td>
<td width="71%"><font size="2"><input name="Telefono" type="text" size="10" maxlength="9">
- </font><span class="producto_dato"><font size="2">Email: </font></span><font size="2"><input name="Email" type="text" size="30"></font><span class="producto_dato"><font size="2">&nbsp;</font></span></td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%"></td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%">
<p align="left"><font size="2">Descripción de productos y servicios:</font></p>
</td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%"><font size="2"><textarea name="Texto" cols="35" rows="5"></textarea></font></td>
</tr>
<tr>
<td width="29%" align="right"></td>
<td width="71%"></td>
</tr>
</table>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p align="center"><font face="Arial" size="2" color="#336699"><b><input type="button" name="Submit" value="Enviar" onclick="valida_envia()"></b></font></p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</form>

</body>
  #19 (permalink)  
Antiguo 05/08/2006, 12:21
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Ahí el scrip

<?

// ################################################## ##

//
$from_address = "[email protected]";

// ################################################## ##
// ################################################## ##
// #### ACTIVATE REQUIRED FIELDS? ############################################

// THIS AREA IS OPTIONAL. ONLY TOUCH THESE SETTINGS IF YOU KNOW WHAT YOU ARE
// DOING. PLEASE READ README.TXT FOR MORE INFORMATION.
//
// If you would like to make some fields of your form required, change "no" to
// "yes" below.

$required_on = "yes";

// If you have set $required_on to "yes" above, you can make fields required
// by beginning their name with "r_". For example, if you want to require
// a user to enter their name, use the following HTML:
//
// <input type='text' name='r_Name'>
//
// If a user fails to enter a required field, they will be taken to a page
// where a message such as "You have not completed all the required fields."
// will be displayed. Please specify the URL to this file below:

$required_errorpage = "error.php";

// ################################################## ##

// ################################################## ##
// #### OVERRIDE REQUIRED VARIABLES? #########################################

// THIS AREA IS OPTIONAL. ONLY TOUCH THESE SETTINGS IF YOU KNOW WHAT YOU ARE
// DOING. PLEASE READ README.TXT FOR MORE INFORMATION. NOTE: THIS WILL NOT
// AFFECT YOUR 'TURN ON REQUIRED FIELDS?' SECTION SETTINGS ABOVE.
//
// If you would like to override the three required variables in
// order to hide your email address, email subject, and thank you page
// URL from your email form, change "no" to "yes" below.

$override = "no";

// If override is set to "yes", the hidden variables on your HTML
// email form named "rec_mailto", "rec_subject", and "rec_thanks" will be
// overridden and can therefore be removed from the form.

// If you have set override to "yes" above, you must specify new values for
// each of these variables below.

// Enter the email address(es) to send the email to.
$incoming_mailto = "[email protected]";

// Enter the email subject.
$incoming_subject = "Tiene un nuevo mensaje desde Su Formulario";

// Enter the thank you page URL.
$incoming_thanks = "thanks.php";

// ################################################## ##

################################################## ##
// #### ACTIVATE DOMAIN SECURITY? ############################################
//

$secure_domain_on = "yes";

// ################################################## ##
// ################################################## ##

// ################################################## ##
// #### ACTIVATE AUTO-RESPONSE? ##############################################
//

$autorespond_on = "yes";

// If you have set $autorespond_on to "yes" above, you must specify a subject,
// from-address, and message to include in the auto-response email.

// The following setting is the subject of the auto-response email:
$autorespond_subject = "Info!";

// The following setting is the from-address of the auto-respond email:
$autorespond_from = "[email protected]";

// The following setting is the message of your auto-response email:
$autorespond_contents = "Estimado/a Sr. Sra: $Nombre, Gracias por su solicitud

La suma total es: $total

Acontinuación le enviamos sus datos que nos ha enviado, guarde este mensaje pues le puede necesitar para contactar con nuestra Empresa y para modificar sus datos.

------------------------
1.- Datos:*
------------------------
Nombres de los Vehículos: $Mercedes $Renault $Citroen $Volvo $Ford

------------------------
Nombre o Razón Social: $Nombre

------------------------
Telefono de Contacto: $Telefono

------------------------
Email: $Email

------------------------
Descripción de Producto o Servicio:
$Texto

*************************
Gracias";

// DynaForm also needs to know how to retrieve the user's email address.
// You must specify the name of the field into which the user will enter
// their email address. For example, if your email form contains an input
// field like "<input type='text' name='Email'>" you would set the
// following setting to "Email".
$autorespond_mailto_field = "Email";

// ################################################## ##
// ################################################## ##

// MAKE SURE DYNAFORM IS NOT BEING LOADED FROM THE URL
if($HTTP_SERVER_VARS['REQUEST_METHOD'] == "GET") {
echo "
<html>
<head><title>Contact PHP Form is installed correctly.</title></head>
<body>
<font style='font-family: verdana, arial; font-size: 9pt;'>
<b>Contact Form is installed correctly.</b></font><br>
<font style='font-family: verdana, arial; font-size: 8pt;'>
Form Easy PHP Form Mailer.
</font>
</body></html>
";
exit();
}

// SET VARIABLES
$incoming_fields = array_keys($HTTP_POST_VARS);
$incoming_values = array_values($HTTP_POST_VARS);

if($override == "no") {
$incoming_mailto = @$HTTP_POST_VARS['rec_mailto'];
$incoming_subject = @$HTTP_POST_VARS['rec_subject'];
$incoming_thanks = @$HTTP_POST_VARS['rec_thanks'];
}

$incoming_mailto_cc = @$HTTP_POST_VARS['opt_mailto_cc'];
$incoming_mailto_bcc = @$HTTP_POST_VARS['opt_mailto_bcc'];
$form_url = @$HTTP_REFERER;

// MAKE SURE DYNAFORM IS BEING RUN FROM THE RIGHT DOMAIN
if($secure_domain_on == "yes") {
$form_url_array = parse_url($form_url);
$form_domain = $form_url_array[host];
if($form_domain != $HTTP_SERVER_VARS[HTTP_HOST]) {
echo "<h2>Form Error - Invalid Domain</h2>
You have accessed Form from an external domain - this is not allowed.<br>
You may only submit forms to a Form file that exists on the same domain name.<br>
If you believe to be receiving this message in error, please refer to your readme.txt file.
<br><br>";
$error = "yes";
}
}

// CHECK IF MAILTO IS SET
if($incoming_mailto == "") {
echo "<h2>Form Error - Missing Field</h2>
Your form located at <a href='$form_url'>$form_url</a> does not work because you forgot to include
the required \"<b>rec_mailto</b>\" field within the form. This field specifies who the email will
be sent to.
<br><br>
This should look like:<br>
<input type=\"hidden\" name=\"rec_mailto\" value=\"[email protected]\">
<br><br>
If you are still confused, please refer to the readme.txt for more information and examples.<br><br><br><br>
";
$error = "yes";
}

// CHECK IF SUBJECT IS SET
if($incoming_subject == "") {
echo "<h2>Form Error - Missing Field</h2>
Your form located at <a href='$form_url'>$form_url</a> does not work because you forgot to include
the required \"<b>rec_subject</b>\" field within the form. This field specifies the subject of
the email that will be sent.
<br><br>
This should look like:<br>
<input type=\"hidden\" name=\"rec_subject\" value=\"New Form Email\">
<br><br>
If you are still confused, please refer to the readme.txt for more information and examples.<br><br><br><br>
";
$error = "yes";
}

// CHECK IF THANKS IS SET
if($incoming_thanks == "") {
echo "<h2>Form Error - Missing Field</h2>
Your form located at <a href='$form_url'>$form_url</a> does not work because you forgot to include
the required \"<b>rec_thanks</b>\" field within the form. This field specifies what page the user
will be taken to after they submit the form.
<br><br>
This should look like:<br>
<input type=\"hidden\" name=\"rec_thanks\" value=\"thanks.html\">
<br><br>
If you are still confused, please refer to the readme.txt for more information and examples.<br><br><br><br>
";
$error = "yes";
}

// CHECK IF IP ADDRESS IS BANNED
if($ban_ip_on == "yes") {

if(strstr($ban_ip_list, $HTTP_SERVER_VARS[REMOTE_ADDR])) {
echo "<h2>Form Error - Banned IP</h2>
You cannot use this form because your IP address has been banned by the administrator.<br>
";
$error = "yes";
}
}

if($error == "yes") {
exit();
}

// SET EMAIL INTRODUCTION
$message = "Este email ha sido recibido desde su web $form_url \n\n";

// LOAD EMAIL CONTENTS
for ($i = 0; $i < count($incoming_fields); $i++) {
if($incoming_fields[$i] != "rec_mailto") {
if($incoming_fields[$i] != "rec_subject") {
if($incoming_fields[$i] != "rec_thanks") {
if($incoming_fields[$i] != "opt_mailto_cc") {
if($incoming_fields[$i] != "opt_mailto_bcc") {

// CHECK FOR REQUIRED FIELDS IF ACTIVATED
if($required_on == "yes") {
$sub = substr($incoming_fields[$i], 0, 2);
if($sub == "r_") {
if($incoming_values[$i] == "" OR !isset($incoming_values[$i]) OR $incoming_values[$i] == " ") {
header("Location: $required_errorpage");
exit();
}}}

// ADD FIELD TO OUTGOING MESSAGE
$message .= "$incoming_fields[$i]:\n$incoming_values[$i]\n\n";
}}}}}}

// SET EMAIL FOOTER
$message .= "\n\nFormulario contacto";

// CLEAR HEADERS
$headers = "";

// ADD FROM ADDRESS
if($from_address != "") {
$headers .= "From: $from_address\r\n";
}

// CHECK FOR CC OR BCC
if($incoming_mailto_cc != "") {
$headers .= "Cc: $incoming_mailto_cc\r\n";
}
if($incoming_mailto_bcc != "") {
$headers .= "Bcc: $incoming_mailto_bcc\r\n";
}

// SEND EMAIL
mail($incoming_mailto, $incoming_subject, $message, $headers);

// SEND AUTO-RESPONSE IF ACTIVATED
if($autorespond_on == "yes") {
$autorespond_mailto = @$HTTP_POST_VARS[$autorespond_mailto_field];
$autorespond_headers = "From: $autorespond_from";
mail($autorespond_mailto, $autorespond_subject, $autorespond_contents, $autorespond_headers);
}

// FORWARD TO THANK YOU PAGE
header("Location: $incoming_thanks");

?>
  #20 (permalink)  
Antiguo 05/08/2006, 12:30
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

Fijate en el autresponder del scrip.

1.- Datos:*
------------------------
Nombres de los Vehículos: $Mercedes $Renault $Citroen $Volvo $Ford



Ahí es donde se recogen los values.

Y en vez de devolverme los nombres de los vehículos seleccionados, me devuelve los números de los precios, pero éstos ya los recibo en: La suma total es: $total.
  #21 (permalink)  
Antiguo 05/08/2006, 16:05
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
ok, vamos por parte (como diría Jack)

1.- El script con las funciones calcula(), marcar() y formatCurrency() deberías ponerlos en el <head> debajo de las funciones que ya tienes

2.-problemas en "espacio en blanco luego de Ford
Cita:
var c=new Array('Mercedes','Renault','Citroen','Volvo','Ford ');
3.-
Cita:
<input onclick="calcular()" type="checkbox" value="10.20" name="Renault" value="Renault">
solo se le puede poner un solo value

4.- funciones de validiacion utilizan por ejemplo:
Cita:
document.fvalida.Email.value
si bien algunos navegadores lo "digieren" bien no es del todo correcto sería document.forms['fvalida']['Email'].value

5.-La validación utiliza un método que no es del todo correcto . Buscá en este foro como sería una validacion correcta (pista: se utiliza el evento onchange)


A pesar de todo ello, el formulario envía tanto el valor como el nombre del checkbox (claro que JS depende del navegador que lo ejecute, por ello sería interesante que corrijas todo eso y luego lo pruebes, y de ser posible al menos con 2 navgadores)

Si en estas cosas no aparece el error, el problema es como lo recoges con php.

saludos
__________________
by Capitán Buscapina
.
  #22 (permalink)  
Antiguo 06/08/2006, 13:11
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola, Cap.Buscapina

El formulario funciona perfectamente, creo que el problema es como lo recoge con php.

Para ello tendría que modificar el campo de éste,

Espero que me puedas ayudar con esto.

Un Salud
  #23 (permalink)  
Antiguo 06/08/2006, 14:40
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola de nuevo.

Me han comentado por el foro PHP, que haga lo siguiente. Pero cuando lo hago no me funciona el javascript.
__________________________________________________ _______________
pone esto como nombre para tus checkbox

<input type="checkbox" name="Vehiculo['Auto_1']" value="10,20">

entoonces con

$claves = array_keys($_POST['Vehiculo']) obtenes los nombres

y con

for ($i = 0 ; $i < count($claves) ; $i++){
echo $_POST['Vehiculo'][$claves[$i]]
// obtenes nlos valores

}
__________________________________________________ _______________

¿Alguna idea para que al poner lo anterior me siga funcionando el javascript?

Espero tu respuesta, un Saludo
  #24 (permalink)  
Antiguo 06/08/2006, 15:30
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
solo tendrías que cambiar:
Cita:
var c=new Array("Vehiculo['Mercedes']","Vehiculo['Renault']","Vehiculo['Citroen']","Vehiculo['Volvo']","Vehiculo['Ford']");
y cada checkbox
Cita:
<input onclick="calcular()" type="checkbox" value="10.20" name="Vehiculo['Volvo']" >
de esa forma funciona el JS, luego lo que pase en php ya no se que decirte

saludos
__________________
by Capitán Buscapina
.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:00.