Comunidad de diseño web y desarrollo en internet online

Problema con array

Citar            
MensajeEscrito el 25 Jun 2013 11:08 pm
Hola buenas noches Cristalab ... estoy en búsqueda de ayuda con un formulario de contacto. Tengo un formulario de contacto al cual no le he hecho diseño css pero si lo he dejado funcionalmente correcto. El único problema que tengo es que el resultado de los checkboxes llega con la palabra array a mi email en vez de llegar el contenido elegido. Les dejo los códigos a ver si encuentran el error , por que yo ya estoy exhausto de intentarlo, realmente logre que todo funcione pero esto me supera. Desde ya, muchas gracias!.

Código HTML :

<!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>formu</title>
<script type="text/javascript" src="scripts/jquery-1.8.3.min.js"></script>

<style type="text/css">
.cuerpo {
   border: thin solid #69F;
   height: 600px;
   width: 650px;
}
.div-primeros-campos {
   padding-top: 5px;
   padding-bottom: 5px;
   padding-left: 5px;
}

.nombre {
}
.email {
}
.telefono {
}
.localidad {
}
.lugardetrabajo {
}
.dimension {
}
.archivos {
}
.consulta {
}
.encuesta {
}

.botonenviarlo {
   clear: right;
   float: right;
}
.perfect {
   text-align: center;
   display: block;
   background-color: #3CF;
   width: 200px;
   right: auto;
   clip: rect(auto,auto,auto,auto);
   clear: left;
   float: left;
}
.perfect2 {
   text-align: center;
   display: block;
   clear: left;
   float: left;
   background-color: #000;
   width: 400px;
   right: auto;
   clip: rect(auto,auto,auto,auto);
   color: #FFF;
}
.perfect3 {
   text-align: center;
   display: block;
   clear: left;
   float: left;
   background-color: #F00;
   width: 400px;
   right: auto;
   clip: rect(auto,auto,auto,auto);
   color: #000;
}
.transparente {
   display: none;
}
.errores{
   -wedkit-box-shadow: 0 0 5px rgba(0,0,0,0.3);
   -moz-box-shadow: 0 0 5px rgba(0,0,0,0.3);
   -o-box-shadow: 0 0 5px rgba(0,0,0,0.3);
   background: red;
   box-shadow: 0 0 5px rgba(0,0,0,0.3);
   color: #fff;
        display: none;
   font-size: 13px;
   margin-top: -23px;
   width: 250px;
   text-align: center;
   position: absolute;
   padding: 5px;
   margin-left: 200px;
   font-family: "Open Sans";
}
</style>
</head>
<body>
<form method="post" name="formulariotipopresupuesto" class="cuerpo" id="formulario2">
  <div class="div-primeros-campos">
    <input name="nombre" type="text" class="nombre" id="nombre" placeholder="  *Nombre"/>
    <div id="mensaje1" class="errores">DEBE INGRESAR SU NOMBRE!</div>
  </div>
  <div class="div-primeros-campos"><input name="email" type="text" class="email" id="email" placeholder="  *E-Mail"  />
  <div id="mensaje2" class="errores">DEBE INGRESAR UN EMAIL CORRECTO!</div>
  </div> 
  <div class="div-primeros-campos"><input name="telefono" type="text" class="telefono" placeholder="   Telefono" /> </div>
  <div class="div-primeros-campos"><input name="localidad" type="text" class="localidad" id="localidad" placeholder="  *Localidad" />
  <div id="mensaje3" class="errores">NECESITAMOS SABER SU LOCALIDAD!</div>
  </div>
  <div>
    Indique cual sería nuestra área de trabajo:
      <br />
    Puede elegir más de una opción. <div id="mensaje4" class="errores">SELECCIONE AL MENOS UNA OPCIÓN!</div>
    </div>
  <div>
     <table width="633" class="lugardetrabajo">
      <tr>
        <td width="251"><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Interior de una casa." />
          Interior de una casa.</label></td>
        <td width="415"><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Local de comidas (Ej. Pizzería, rotisería, heladería)" />
          Local de comidas (Ej. Pizzería, rotisería, heladería)</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Exterior de una casa (Ej. jardín)." />
          Exterior de una casa (Ej. jardín).</label></td>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Un negocio (Ej. Maxi quiosco, ferretería)" />
        Un negocio (Ej. Maxi quiosco, ferretería)</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Casa y jardín completos." />
          Casa y jardín completos.</label></td>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Un salón (Ej. Iglesia, salón de fiestas)" />
        Un salón (Ej. Iglesia, salón de fiestas)</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Un techo." />
          Un techo.</label></td>
        <td><label>
          <input type="checkbox" name="lugardetrabajo[]" value="Escuela o Institución (Ej. Colegio, Jardín de infantes)" />
        Escuela o Institución (Ej. Colegio, Jardín de infantes)</label></td>
      </tr>
    </table>
  </div>
  <div>De qué tamaño aproximado considera que es el total del lugar a tratar:</div>
  <div>
  <table width="218" class="dimension">
    <tr>
      <td><label>
        <input type="radio" name="dimension" value="Grande"/>
        Grande.</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="radio" name="dimension" value="Mediano"/>
        Mediano</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="radio" name="dimension" value="Chico"/>
        Chico.</label></td>
    </tr>
  </table>
  <div id="mensaje5" class="errores">SELECCIONE UN TAMAÑO APROXIMADO!</div>
  </div>
  <div><textarea name="consulta" cols="" rows="" class="consulta" id="consulta" placeholder=" *Describa aquí su problema..."></textarea>
  <div id="mensaje6" class="errores">POR FABOR, DESCRIBA SU PROBLEMA!</div>
  </div>
<div>Como conoció nuestra web?<div id="mensaje8" class="errores">POR FABOR, ELIJA UNA RESPUESTA...</div></div>
  <div><select name="encuesta" id="encuesta" class="encuesta" >
<option>-Por Facebook.</option>
    <option>-A traves de otra web.</option>
    <option>-Por revista publicitaria.</option>
    <option>-Buscando en Google</option>
    <option selected="selected">-Elija una respuesta...</option>
  </select></div>
  
  <div id="perfecto" class="perfect" style="display:none">enviado!</div>
  <div id="road" class="perfect2 transparente" >pensando...</div>  
  <div id="fracaso" class="perfect3" style="display:none">Hubo un error al enviar su consulta, por favor, reenvíela!</div>
      
 <input name="boton" type="submit" class="botonenviarlo" value="Enviar" />   
</form>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="scripts/funcionesdos.js"></script>
</body>
</html>


Código Javascript :

jQuery(document).ready(function($) {
  $('#formulario2').submit(function(e) {
 e.preventDefault();
  if( validarDatos() ) {
      var data = $(this).serialize(); // Así te aseguras de que todos los datos sean enviados

      $.ajax({
        url: 'envio.php',
        type: 'post',
        data: data,
        success: function(data) { // No haces nada con data
          $("#mensaje8").fadeOut();
          $('.perfect2').hide();        
          $('#perfecto').delay(500).fadeIn('slow');
          $('form[name=formulariotipopresupuesto]').get(0).reset();
          $('#perfecto').delay(5000).fadeOut('slow');     
        },
        error: function() {
          $('#fracaso').delay(500).fadeIn('slow');
        }
      });
    }
  });

function validarDatos() {
var nombre = $(".nombre").val();
            email = $(".email").val();
            validacion_email = /^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
            telefono = $(".telefono");
        localidad= $(".localidad").val();
        consulta = $(".consulta").val();
            encuesta= $(".encuesta").val();

    if (nombre == "") {
      $("#mensaje1").fadeIn();
      $("#nombre").focus();
      return false;
   }else
     $("#mensaje1").fadeOut();
      if(email == "" || !validacion_email.test(email)) {
      $("#mensaje2").fadeIn();
      $("#email").focus();
      return false;
     }else
     $("#mensaje2").fadeOut();
      if(localidad == "") {
      $("#mensaje3").fadeIn();
      $("#localidad").focus();
      return false;
     }else
     $("#mensaje3").fadeOut();
      if($('input[type=checkbox]:checked').length <= 0) {
      $("#mensaje4").fadeIn();
      return false;
     }else
     $("#mensaje4").fadeOut();
      if($('input[type=radio]:checked').length <= 0) {
      $("#mensaje5").fadeIn();
      return false;
     }else
     $("#mensaje5").fadeOut();
      if(consulta == ""){
      $("#mensaje6").fadeIn();
      $("#consulta").focus();
      return false;
     }else
     $("#mensaje6").fadeOut();
      if(encuesta == "-Elija una respuesta..."){
      $("#mensaje8").fadeIn();
      return false;    
      } else {
      $('.perfect2').removeClass('transparente');
    }

    return true;
  }
});


Código PHP :

<?php
// Guardar los datos recibidos en variables:
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$localidad = $_POST['localidad'];
$encuesta = $_POST['encuesta'];
$consulta = $_POST['consulta'];
$lugardetrabajo= $_POST['lugardetrabajo']; 
$dimension= $_POST['dimension']; 
// Definir el correo de destino:
$dest = "[email protected]"; 
 
// Estas son cabeceras que se usan para evitar que el correo llegue a SPAM:
$headers = "From: $nombre <$email>\r\n";  
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 
// Aqui definimos el asunto y armamos el cuerpo del mensaje
$asunto = "Consulta desde formulario BARRIER web site.";
$cuerpo = "Este mensaje fue enviado por ".$nombre."<br>";
$cuerpo .= "Su Email es: ".$email."<br>";
$cuerpo .= "Numero de telefono: ".$telefono."<br>";
$cuerpo .= "Vive en: ".$localidad."<br>";
$cuerpo .= "Como conocio la pagina web? ".$_POST['encuesta'] . "<br>";
$cuerpo .= "El lugar a tratar es: ".$lugardetrabajo."<br>"; 
$cuerpo .= "Considera que el tamaño total del lugar a tratar es: ".$dimension. "<br>"; 
$cuerpo .= "Consulta: ".$consulta. "<br>";
$cuerpo .= "Enviado el: " . date('d/m/Y', time());
 
// Esta es una pequena validación, que solo envie el correo si todas las variables tiene algo de contenido:
if($nombre != '' && $email != '' && $telefono != '' && $encuesta != '' && $consulta != ''){
    mail($dest,$asunto,$cuerpo,$headers); //ENVIAR!

//Enviando auto respuesta.
      $pfw_header = "From: [email protected]\n"
      . "Reply-To: [email protected]\n";
                $headers = "From: $nombre <$email>\r\n";  
      $pfw_subject = "Tu consulta fue recibida";
      $pfw_email_to = "$email";
// Estas son cabeceras que se usan para evitar que el correo llegue a SPAM:
$headers = "From: $nombre <$email>\r\n";  
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

      $pfw_message = "Muchas Gracias $nombre por contactar con BARRIER Control De Plagas\n"
      . "Tu consulta fue recibida satisfactoriamente. \n"
      
      . "Nos pondremos en contanto contigo lo antes posible a tu E-mail: $email \n"
      . "Si no respondemos por e-mail nos comunicaremos al: $telefono \n"
      . " \n"
      . "--------------------------------------------------------------------------\n"
                . "Por favor de NO responda este mensaje ya que es generado Automaticamente.\n"
                . "BARRIER-Control De Plagas.\n"
      . "Tel: (011) 4233-7274.\n"
                . "www.barrierplagas.com.ar.\n";
      
      @mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;
}
?>

Por barrierp

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Jun 2013 12:20 pm
Te llega array(), precisamente porque $lugardetrabajo es un array...
El problema esta acá:

Código PHP :

$cuerpo .= "El lugar a tratar es: ".$lugardetrabajo."<br>"; 

Yo lo remplazaría por:

Código PHP :

$cuerpo .= "El lugar a tratar es: ".implode(',',$lugardetrabajo)."<br>"; 

O en vez de usar un check, usar un radio...

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 26 Jun 2013 06:03 pm
Gracias genio!! lo solucione con eso que me dijiste!, por fin.

Voy a exponer otras dudas extras, pero que ya no son parte de la funcionabilidad del formu.


GRACIAS!

Por barrierp

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Jun 2013 08:15 pm
De nada bro.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.