Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con Envio de Formulario Php con Checkbox

Estas en el tema de Problemas con Envio de Formulario Php con Checkbox en el foro de Frameworks JS en Foros del Web. Hola tengo un problema este es mi formulario de prueba http://www.peru-expeditions.com/c-prueba.php Ahorita esta ok si manda el mensaje, pero porque en el php de envio ...
  #1 (permalink)  
Antiguo 31/07/2009, 16:00
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Problemas con Envio de Formulario Php con Checkbox

Hola tengo un problema este es mi formulario de prueba http://www.peru-expeditions.com/c-prueba.php

Ahorita esta ok si manda el mensaje, pero porque en el php de envio no declaro o llamo a los checkbox, este es mi código que uso para el envio (es un js que llama a un php)

Tanto el js como el php en ellas esta declarado los checkbox pero cuando lo declaro asi no se envia el correo, MI prgunta es como hacer para que tambien en el envio se manden los valores del checkbox que ha sido seleccionado. Muchas gracias

El objetivo de esto en realidad es solo tomar los valores de los checkbox que esta seleccionados y ser enviado con el mensaje, porque al ultimo en el formulario que me han pedido hacer habra al rededor de 30 checkbox y si el usuario solo activa uno sera tedioso recibir en el mensaje el valor de los checkbox que estan vacios. Muchas Gracias

Código PHP:
function get(obj) {
      var 
poststr "Nombre=" encodeURIdocument.getElementById("Nombre").value ) +
                    
"&Correo=" encodeURIdocument.getElementById("Correo").value )+
                
"&Otros=" encodeURIdocument.getElementById("Otros").value )+
                
"&tour1=" encodeURIdocument.getElementById("tour1").value )+
                
"&tour2=" encodeURIdocument.getElementById("tour2").value )+
                
"&tour3=" encodeURIdocument.getElementById("tour3").value )+
                
"&tour4=" encodeURIdocument.getElementById("tour4").value )+
              
"&capt=" encodeURIdocument.getElementById("capt").value )+              
              
"&Submit=" encodeURIdocument.getElementById("Submit").value );
      
makePOSTRequest('captcha/c-envio-prueba.php'poststr);
   }

   function 
write_captcha(){
        
define('Nombre''string''Nombre');
        
define('Correo''email''E-mail');
       
clicks++;
       
document.getElementById('capt').value        ''
      
document.getElementById('captcha_id').innerHTML '<img src="captcha/captcha_img.php?clicks=' clicks '" border="0" alt="" /><a href="#" onclick="write_captcha();"><img src="gifs/refresh.gif" border="0" alt="" /></a>';
   return 
false;
   } 
Código PHP:
<?
        $email_recipient     
'[email protected]';

        
session_start();
        
error_reporting(0);
        include(
"class/captchaZDR.php");

        
$capt = new captchaZDR;
        
$wrong_captcha     '';

        if(isset(
$_REQUEST['Submit']) and $capt->check_result()){        
              
$message_send "Mensaje desde la página\n\n      
              Nombre: "
.$_REQUEST['Nombre']." \n
              Correo: "
.$_REQUEST['Correo']." \n
                Otros: "
.$_REQUEST['Otros']." \n
              tour1: "
.$_REQUEST['tour1']." \n
                tour2: "
.$_REQUEST['tour2']." \n
                tour3: "
.$_REQUEST['tour3']." \n
                tour4: "
.$_REQUEST['tour4']." \n";

                
$headers .= 'To: <'.$email_recipient.'>' "\r\n";
                
$headers .= 'From: '.$_REQUEST['Nombre'].' <'.$_REQUEST['Correo'].'>' "\r\n";

            if(
mail($email_recipient'SOLICITUD DE INFORMACION PERU EXPEDITIONS' $message_send$headers))
                        
header ("Location: http://www.peru-expeditions.com/c-gracias.html");
                else 
                        echo 
'<div style="color: red"><strong>Hubo un problema en el mensaje. Por favor, inténtelo de nuevo. Gracias.</strong></div>';  
        } 
        
        else{if(isset(
$_REQUEST['Submit']) and (!$capt->check_result()) ) 
                echo 
'<div style="color: red"><b>Intente de nuevo. Actualizar:</b><a href="#" onclick="write_captcha();"><img src="gifs/refresh.gif" border="0" alt="" /></a></div>';
        }
?>

Última edición por salvador86; 31/07/2009 a las 16:20 Razón: editar
  #2 (permalink)  
Antiguo 31/07/2009, 17:04
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola en resumidas cuentas solo quiero que funcione (imaginanse que en vez de checkbox son cajas de texto y se envie sus valores) si estan activados se mande en el envio, antes yo usaba FormNewMail y no tenia ningún problema, le pido porfa su ayuda, si algo no me deje explicar porfa diganmelo gracias. He buscado en google y no encuentro lo que necesito, muchas gracias
  #3 (permalink)  
Antiguo 31/07/2009, 17:17
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola , prueba este codigo y me decis si? en tu formulario , especifica el method como POST.

Código php:
Ver original
  1. <?
  2.         $email_recipient     = '[email protected]';
  3.  
  4.         session_start();
  5.         error_reporting(0);
  6.         include("class/captchaZDR.php");
  7.  
  8.         $capt = new captchaZDR;
  9.         $wrong_captcha     = '';
  10.  
  11.         if(isset($_POST['Submit']) and $capt->check_result()){        
  12.               $message_send = "Mensaje desde la página\n\n      
  13.              Nombre: ".$_POST['Nombre']." \n
  14.              Correo: ".$_POST['Correo']." \n
  15.                Otros: ".$_POST['Otros']." \n
  16.              tour1: ".$_POST['tour1']." \n
  17.                tour2: ".$_POST['tour2']." \n
  18.                tour3: ".$_POST['tour3']." \n
  19.                tour4: ".$_POST['tour4']." \n";
  20.  
  21.                 $headers .= 'To: <'.$email_recipient.'>' . "\r\n";
  22.                 $headers .= 'From: '.$_POST['Nombre'].' <'.$_POST['Correo'].'>' . "\r\n";
  23.  
  24.             if(mail($email_recipient, 'SOLICITUD DE INFORMACION PERU EXPEDITIONS' , $message_send, $headers))
  25.                         header ("Location: http://www.peru-expeditions.com/c-gracias.html");
  26.                 else
  27.                         echo '<div style="color: red"><strong>Hubo un problema en el mensaje. Por favor, inténtelo de nuevo. Gracias.</strong></div>';  
  28.         }
  29.        
  30.         else{if(isset($_POST['Submit']) and (!$capt->check_result()) )
  31.                 echo '<div style="color: red"><b>Intente de nuevo. Actualizar:</b><a href="#" onclick="write_captcha();"><img src="gifs/refresh.gif" border="0" alt="" /></a></div>';
  32.         }
  33. ?>
  #4 (permalink)  
Antiguo 01/08/2009, 08:27
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola ok, ahora si envia el mensaje pero no llegan los valores de los checkbox, por ejemplo si un check box que sea este
Código HTML:
<input name="Tour" type="checkbox" class="stcajatexto" id="Tour" value="Cusco"> 
Deberia llegarme en el mensaje asi:
Cita:
mensaje desde la pagina
bla bla bla
Tour: Cusco
Pero me viene vacio, pero claro solo quiero que se muestren los valores de los check que han sido seleccionados.
Alguna sugerencia o algo que este pasando por alto. Muchas gracias

Última edición por salvador86; 01/08/2009 a las 09:01 Razón: editar
  #5 (permalink)  
Antiguo 01/08/2009, 09:49
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola , al momento de utilizar más de un checkbox debes pensar en una estructura de arreglo de checkbox , es decir un array y debes modificar del siguiente modo tu codigo

<input name="Tour[]" type="checkbox" class="stcajatexto" id="Tour" value="Cusco">

Fijate que inclui unos corchetes al lado del nombre del campo esto genera al momento d enviarse mediante POST o GET un arreglo que podes visualizarlo del siguiente modo:

Código php:
Ver original
  1. <?php
  2. print_r($_POST['tour']);
  3. ?>
Por otro lado te recomiendo usar un campo del tipo select que te sera mucho mas simple de procesar y mas comodo visualmente.

Saludos!
  #6 (permalink)  
Antiguo 01/08/2009, 10:23
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola Jonatanc gracias por responder, si aquí en contre este enlace http://www.forosdelweb.com/f18/faqs-...tml#post518710 lo probe haciendo array por ejemplo defini los checkbox asi, cada con un valor diferente pero con name e id igual
Código HTML:
<input name="tour[]" type="checkbox" class="stcajatexto" id="tour" value="Cusco"> 
Pero como mi formulario antes de enviarse debe ir a un js que lo valida (pues se valida mediante captcha) entonces mi función lo cambia asi que esta en el archivo "c-funciones-prueba.js" pero al hacer esto creo que malogra tosas las funciones porque ya no se ve el captcha
Código PHP:
function get(obj) {
      var 
poststr "Nombre=" encodeURIdocument.getElementById("Nombre").value ) +
                    
"&Correo=" encodeURIdocument.getElementById("Correo").value )+
                
"&Otros=" encodeURIdocument.getElementById("Otros").value )+
                for (
i=0i<=tour.lengthi++)
                {
                        
"&tour=" encodeURIdocument.getElementById("tour").value )+
                }
              
"&capt=" encodeURIdocument.getElementById("capt").value )+              
              
"&Submit=" encodeURIdocument.getElementById("Submit").value );
      
makePOSTRequest('captcha/c-envio-prueba.php'poststr);
   }

   function 
write_captcha(){
        
define('Nombre''string''Nombre');
        
define('Correo''email''E-mail');
       
clicks++;
       
document.getElementById('capt').value        ''
      
document.getElementById('captcha_id').innerHTML '<img src="captcha/captcha_img.php?clicks=' clicks '" border="0" alt="" /><a href="#" onclick="write_captcha();"><img src="gifs/refresh.gif" border="0" alt="" /></a>';
   return 
false;
   } 
Y en mi php que despues de validado envia el mensaje que se llama "c-envio-prueba.php" cambia el código así
Código PHP:
<?
        $email_recipient     
'[email protected]';

        
session_start();
        
error_reporting(0);
        include(
"class/captchaZDR.php");

        
$capt = new captchaZDR;
        
$wrong_captcha     '';

        if(isset(
$_POST['Submit']) and $capt->check_result()){        
              
$message_send "Mensaje desde la página\n\n      
              Nombre: "
.$_POST['Nombre']." \n
              Correo: "
.$_POST['Correo']." \n
                Otros: "
.$_POST['Otros']." \n"
              
foreach ($_POST['tour'] as $id){
                   echo 
$id."<br>";
                }
                ;

                
$headers .= 'To: <'.$email_recipient.'>' "\r\n";
                
$headers .= 'From: '.$_POST['Nombre'].' <'.$_POST['Correo'].'>' "\r\n";

            if(
mail($email_recipient'SOLICITUD DE INFORMACION PERU EXPEDITIONS' $message_send$headers))
                        
header ("Location: http://www.peru-expeditions.com/c-gracias.html");
                else 
                        echo 
'<div style="color: red"><strong>Hubo un problema en el mensaje. Por favor, inténtelo de nuevo. Gracias.</strong></div>';  
        } 
        
        else{if(isset(
$_POST['Submit']) and (!$capt->check_result()) ) 
                echo 
'<div style="color: red"><b>Intente de nuevo. Actualizar:</b><a href="#" onclick="write_captcha();"><img src="gifs/refresh.gif" border="0" alt="" /></a></div>';
        }
?>
Pero aín no logro mi cometido, alguna sintaxis estara mal o estoy obviando algo, por favor les pido su ayuda porque soy muy nuevo con php, muchas gracias.

Última edición por salvador86; 01/08/2009 a las 10:40 Razón: editar
  #7 (permalink)  
Antiguo 01/08/2009, 10:56
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 9 meses
Puntos: 16
Respuesta: Problemas con Envio de Formulario Php con Checkbox

mmm fijate con esoto pero no estoy seguro...

function get(obj) {
var poststr = "Nombre=" + encodeURI( document.getElementById("Nombre").value ) +
"&Correo=" + encodeURI( document.getElementById("Correo").value )+
"&Otros=" + encodeURI( document.getElementById("Otros").value )+
for (i=0; i<=3; i++)
{
"&tour[" + i + "] = " + encodeURI( document.getElementByName("tour")[i].value )+
}
"&capt=" + encodeURI( document.getElementById("capt").value )+
"&Submit=" + encodeURI( document.getElementById("Submit").value );
makePOSTRequest('captcha/c-envio-prueba.php', poststr);
}
  #8 (permalink)  
Antiguo 01/08/2009, 11:20
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola Pochos si me parece mas lógico este for, pero cuando pongo esto ya no se muestra el Captcha y no se puede validar, la función que llama al captcha esta debajo de la funcion get() en mi js, me supongo que algo esta mal para que impida que el captcha salga. Este es mi form prueba http://www.peru-expeditions.com/c-prueba.php

Última edición por salvador86; 01/08/2009 a las 11:21 Razón: editar
  #9 (permalink)  
Antiguo 01/08/2009, 11:52
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola , salvador no haz pensado en usar un select para que te sea mas facil la validación y demás? , quizas te resulte incluso mas intuitivo su emplo , o si o si tenes que usar checkbox ?.

Recorda que podes utilizar un select multiple :) , algo asi:

Código html:
Ver original
  1. <select name='demo' multiple>
  2. <option>Mi nombre</option>
  3. <option>Elias</option>

Saludos!
  #10 (permalink)  
Antiguo 01/08/2009, 11:53
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 9 meses
Puntos: 16
Respuesta: Problemas con Envio de Formulario Php con Checkbox

si habia un grosero error de sintaxis...

para asegurar modifica el id de los checkbox de esta forma

Código HTML:
<input name="tour[]" type="checkbox" class="stcajatexto" id="tour0" value="Cusco">
<input name="tour[]" type="checkbox" class="stcajatexto" id="tour1" value="Otrovalor"> 
y luego algo asi...

function get(obj) {
var poststr = "Nombre=" + encodeURI( document.getElementById("Nombre").value ) +
"&Correo=" + encodeURI( document.getElementById("Correo").value )+
"&Otros=" + encodeURI( document.getElementById("Otros").value );
for (i=0; i<=3; i++)
{
poststr = poststr + "&tour[" + i + "] = " + encodeURI( document.getElementById("tour"+i).value );
}
poststr = poststr + "&capt=" + encodeURI( document.getElementById("capt").value )+
"&Submit=" + encodeURI( document.getElementById("Submit").value );
makePOSTRequest('captcha/c-envio-prueba.php', poststr);
}

verifica que no haya error de sintaxis...
  #11 (permalink)  
Antiguo 03/08/2009, 08:18
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola Jonatanc, si a mi me gustaría de sea un select tengo otros formularios así pero me estan pidiendo que mantenga un formato que ya había en cierto formulario, es por eso que insisto en los checkbox, Gacias pochos lo probaré
  #12 (permalink)  
Antiguo 03/08/2009, 09:32
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola POchos, estuve probando el código y me parece que el js ya esta bien (el que me postiaste) por que ya sale el captcha pero parece que hay problemas en el php con el bucle que recoge las variables de check enviadas por el js aquí:
Código PHP:
$message_send "Mensaje desde la página\n\n      
              Nombre: "
.$_POST['Nombre']." \n
              Correo: "
.$_POST['Correo']." \n
                Otros: "
.$_POST['Otros']." \n"
              
foreach ($_POST['tour'] as $id){
                   echo 
$id."<br>";
            }
                ; 
Yo coloque el bucle tal como encontre en el FAQ de esta página pero me queda duda donde es que solo envia los valores de los checkbox que estan seleccionados y que es esta varible $id que no he definido, ademas por lo que he visto en ejemplos de foreach el bucle no deberia ser así

Código PHP:
foreach ($_POST['tour'] as $_POST['tour']){
                   echo 
$_POST['tour']"<br>";
            }
                ; 
Gracias, muchas gracias
  #13 (permalink)  
Antiguo 03/08/2009, 09:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Tema trasladado desde PHP
  #14 (permalink)  
Antiguo 03/08/2009, 16:56
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

Hola, disculpen que sea insistente, lo que pasa que me piden que haga este formulario, con ese formato antes usabamos FormNewMail y no era complicado, pero ahora que se cambio que tenga captcha, es que tuve que usar php y me complico, pues recien me encamine trabajar con php gracias, por sus sugerencias
  #15 (permalink)  
Antiguo 25/08/2009, 10:33
Avatar de salvador86  
Fecha de Ingreso: enero-2008
Ubicación: Guadalajara- Mexico
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problemas con Envio de Formulario Php con Checkbox

MI problema era que no sabia concatenar variables en Php aquí me ayudaron a resolverlo, muchas gracias http://www.forosdelweb.com/f18/como-...ox-php-725660/
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 07:50.