Foros del Web » Programando para Internet » PHP »

Datos de un checkbox por email

Estas en el tema de Datos de un checkbox por email en el foro de PHP en Foros del Web. Hola a todos!!! A ver quien sabe esta Tengo un pagina en donde recojo la informacion de usuarios a traves de un formulario, esos datos ...
  #1 (permalink)  
Antiguo 05/12/2003, 09:29
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 22 años, 6 meses
Puntos: 0
Datos de un checkbox por email

Hola a todos!!! A ver quien sabe esta

Tengo un pagina en donde recojo la informacion de usuarios a traves de un formulario, esos datos los capturo en otra pagina para que el usuario confirme que esos datos son los correctos o no y proceda a enviar por correo los mismos con un submit

El asunto es que en el formulario de entrada tengo varios checkbox cuando paso esos valores a la pagina de confirmacion me aparecen sin ningun problema pero cuando procedo a enviar por email me aparece este error:

Warning: Bad arguments to implode() in /xxx/yyyy/tttt/zzzz/mostrar.php on line 22
Gracias por rellenar el formulario. Se ha enviado correctamente.



Y el resto de los datos que se introdujeron si aparecen. Que puede estar pasando????


Gracias
  #2 (permalink)  
Antiguo 05/12/2003, 09:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Vete al manual, y revisa si estas pasando bien los parametros a implode() (www.php.net/implode). Comprueba que los valores que les pasas corresponden al tipo de datos que necesita.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 05/12/2003, 10:26
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 22 años, 6 meses
Puntos: 0
Esta es la estructura que estoy utilizando para enviar los valores marcados por email:


$cuerpo .= "Servicios : ".implode(',',$opciones)."\n";


Pero para que me entiendas mejor voy a colocar un poco de codigo

En consult2.php que es el formulario de entrada:

echo "<tr><td colspan='4'><font face='Verdana, Arial,Helvetica, sans-serif' size='1'><font color='#CC0000'>*</font><b>Tipo de Servicios</font></td></tr>\n";


echo "<tr><td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>Servicios y Aplicaciones</font></td>\n";

echo "<td>Correo<input type='checkbox' name='opciones[]' value='Correo'>
Diseño y Desarrollo Web<input type='checkbox' name='opciones[]' value='Diseño y Desarrollo Web'>
Administración de Dominios<input type='checkbox' name='opciones[]' value='Administración de Dominios'>
Alojamiento Web<input type='checkbox' name='opciones[]' value='Alojamiento Web'>
Instalación de S.O y Servicios<input type='checkbox' name='opciones[]' value='Instalación de S.O y Servicios'\n";


echo "<input type=\"submit\" name=\"continuar\" value=\" Continuar \">\n\n";

--------

La que recoje los datos introducidos totconsult2.php:
(Aquí va el código para la conexión con la base y consultas para presentar los datos introducidos antes de enviar)

<?
echo "<tr><td><font face='Verdana, Arial, Helvetica,sans-serif' size='1'>Servicios: </font></td>
<td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>".implode(',',$opciones)."</font></td>\n";

echo "</tr>\n";
?>

Paso estos valores a traves de campos ocultos a mostrar.php:

<input type="submit" name="enviar" value="Enviar">

<input type="hidden" name="nombre_ente"

value="<?php echo $nombre_ente;?>">
<input type="hidden" name="descripcion"

value="<?php echo $descripcion;?>">
<input type="hidden" name="nombre_estado"

value="<?php echo $nombre_estado;?>">
<input type="hidden" name="nombre_ciudad"

value="<?php echo $nombre_ciudad;?>">
<input type='hidden' name='usuario' value="<? echo
$usuario; ?>">
<input type='hidden' name='email' value="<? echo

$email; ?>">
<input type='hidden' name='telefono' value="<? echo

$telefono; ?>">
<input type='hidden' name='fax' value="<? echo

$fax; ?>">
<input type='hidden' name='celular' value="<? echo

$celular; ?>">
<input type='hidden' name='tipo_servicio' value="<?

echo $opciones; ?>">

Y en mostrar.php:

<?

$opciones=$_POST["opciones"];


if ($enviar=="Enviar" and $HTTP_POST_VARS){


//Estoy recibiendo el formulario, compongo el

cuerpo
//

$cuerpo = "Formulario Enviado\n";
$cuerpo .= "Ente : " . $_POST["nombre_ente"] . "\n";
$cuerpo .= "Tipo : " . $_POST["descripcion"] . "\n";
$cuerpo .= "Estado : " . $_POST["nombre_estado"] . "\n";
$cuerpo .= "Ciudad : " . $_POST["nombre_ciudad"] . "\n";
$cuerpo .= "Usuario : " . $usuario . "\n";
$cuerpo .= "Email : " .$_POST["email"] . "\n";
$cuerpo .= "Telefono : " . $_POST["telefono"] . "\n";
$cuerpo .= "Fax : " . $_POST["fax"] . "\n";
$cuerpo .= "Celular : " .$_POST["celular"] . "\n";
$cuerpo .= "Servicios : ".implode(',',$opciones)."\n";


$to = "[email protected]";
$subject = "Solicitud de Servicio";


//mando el correo...
mail ($to,$subject,$cuerpo);


//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha

enviado correctamente.";
}


else{


echo "vamos aver que pasa";
}

?>


A ver si notas el error porque revisé el manula como me sugeriste pero no consigo cual pueda ser el error
  #4 (permalink)  
Antiguo 05/12/2003, 10:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Te falto hacer lo de verificar que el valor de las variables corresponde al tipo que requiere implode(). Haz:
Código PHP:
var_dump($opciones); 
en el script que manda el email. Te pondra algo como

string(5) "Array"

es decir, le estas pasando un string, cuando implode necesita un array.

¿Que cuando se ha transformado $opciones de un array a un string? Pues aqui:
Código PHP:
<input type='hidden' name='tipo_servicio' value="<? 
echo $opciones?>">
Porque el echo de un array devuelve simplemente la cadena "Array", que es el valor que asignas a ese campo, y es el que recibe el ultimo script.

¿Como pasar un array por un formulario? Puedes verlo en http://www.forosdelweb.com/showthrea...072#post262072 . Otra forma distinta seria crear un campo oculto con cada elemento del array (con un foreach), todos con el nombre 'opciones[]'.

Saludos.

PD: Espero que la explicacion no os haya resultado pesada
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 05/12/2003 a las 10:38
  #5 (permalink)  
Antiguo 05/12/2003, 13:46
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 22 años, 6 meses
Puntos: 0
Pues realmente no entendi mucho, pero resulta que en la pagina de confirmacion si me aparecen los datos pero cuando los envio por email no, me podrías explicar mejor como es el asunto de pasar los valores por campos ocultos para cada opciones []????


Disculpa pero le echando cabeza y no he entendido
  #6 (permalink)  
Antiguo 05/12/2003, 15:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Veamos, si usas lo del mensaje de las FAQs (el ultimo link que te di), alli ya te lo da todo.

Si no quieres usar serialize() (lo de la FAQ), entonces puedes usar esto:
Código PHP:
<?php
foreach($opciones as $opcion) {
?>
<input type="hidden" name="opciones[]" value="<?php echo $opcion?>">
<?php
}
?>
Asi habras creado un campo hidden para cada elemento del array.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 08/12/2003, 10:09
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 22 años, 6 meses
Puntos: 0
Perfecto, me salió solo que por cada elemento del array recibo un correo. Me explico, el formulario tien opciones de checbox para elegir los servicios, en el formulario de vista previa pero paracen todos pero cuando envio por email, me llega un correo por cada servicio seleccionado, te pongo el codigo:


mostrar.php:

<?

function opciones_recibe($url_opciones) {
$tmp = stripslashes($url_opciones);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);

return $tmp;
}


if ($enviar=="Enviar" and $HTTP_POST_VARS){


$opciones=$_POST['opciones'];

foreach($opciones as $opcion) {

//Estoy recibiendo el formulario, compongo el cuerpo


$cuerpo = "Formulario Enviado\n";
$cuerpo .= "Ente : " . $_POST["nombre_ente"] . "\n";
$cuerpo .= "Tipo : " . $_POST["descripcion"] . "\n";
$cuerpo .= "Estado : " . $_POST["nombre_estado"] . "\n";
$cuerpo .= "Ciudad : " . $_POST["nombre_ciudad"] . "\n";
$cuerpo .= "Usuario : " . $usuario . "\n";
$cuerpo .= "Email : " .$_POST["email"] . "\n";
$cuerpo .= "Telefono : " . $_POST["telefono"] . "\n";
$cuerpo .= "Fax : " . $_POST["fax"] . "\n";
$cuerpo .= "Celular : " .$_POST["celular"] . "\n";
$cuerpo .= "Servicios : $opcion \n";


$to = "[email protected]";
$subject = "Solicitud de Servicio";


//mando el correo...
mail ($to,$subject,$cuerpo);
}

//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha

enviado correctamente.";
}


else{


echo "vamos a ver que pasa";
}

?>



Como puedo resolver esto, donde tengo el error??????


Gracias por la prontitud de tus respuestas
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 14:44.