Foros del Web » Programando para Internet » PHP »

Problema con checkbox, solo recoge un dato

Estas en el tema de Problema con checkbox, solo recoge un dato en el foro de PHP en Foros del Web. Hola a todos. Aunque trato primero de investigar y después en todo caso molestar, lamentablemente esta es la de molestar. Tengo este código que luego ...
  #1 (permalink)  
Antiguo 22/02/2012, 08:48
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Pregunta Problema con checkbox, solo recoge un dato

Hola a todos.
Aunque trato primero de investigar y después en todo caso molestar, lamentablemente esta es la de molestar.
Tengo este código que luego de hacer una consulta a mysql y presentar los datos en una tabla permite seleccionar por medio de un checkbox el correo de cada cliente. El boton del formulario llama a una función de PHPMailer para enviar el correo a cada cliente.
El problema es que solo me envia de a uno, es decir, si marco un checkbox y le doy a enviar, no hay problema me envia el correo, pero cuando selecciono dos o mas solo me envia al primero.
Por favor, ya me he quemado las neuronas (dos) y no hay caso.
......//
$quoted_sql = mysql_query("SELECT * FROM quoted ORDER BY personalID DESC limit " . $limit[0] . ', ' . $limit[1]);
echo "
<form action='recordatorio.php' method='POST' >
<table class='css3' id='mytable' cellspacing='0'>
<tr class='nobg'>
<th class='title2' scope='col'><input type='submit' value='Send'></td>
<th scope='col'><strong>Personal ID</strong</th>
<th scope='col'><strong>Date</strong></th>
<th scope='col'><strong>Client Information</strong></th>
<th scope='col'><strong>Vehicle Information</strong></th>
<th scope='col'><strong>Comment</strong></th>
<th scope='col'><strong>Pickup/Dropoff</strong></th>
<th scope='col'><strong>Shipping On</strong></th>
<th scope='col'><strong>Pre/Quote</strong></th>
<th class='title' scope='col'>Pre/Quote</th>
<th class='title' scope='col'>Quote</th>
<th class='title' scope='col'>Email</th>
<th class='title' scope='col'>Archive</th>
<th class='title' scope='col'>Delete</th>
</tr>

";
while ($fila = mysql_fetch_array($quoted_sql))
{
echo"
<tr class='spec'>
<td align=center><input type='checkbox' name='select[]' value=".$fila['email']."></form></td>
<td align=center>ID: ".$fila['personalID']."</td>
<td align=center>".$fila['fecha_registro']."</td>
.........//

y el código que recoge este checkbox es el siguiente:

.......//

foreach ($_POST['select'] as $email){

$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);


$mail = new PHPMailer();

$mail->IsHTML(true);

$mail->CharSet = 'UTF-8';

$mail->IsSMTP();

$mail->Host = "smtp.gmail.com";

$mail->From = "[email protected]";

$mail->FromName = "Car freight INC.";

$mail->Subject = "Do-Not-Replay Car Freight";

$mail->MsgHTML($body);


$mail->AddAddress($email);

$mail->AddBCC("[email protected]"); // Copia oculta

$mail->SMTPAuth = true;

$mail->Username = "[email protected]";

$mail->Password = "contraseña";
}

if(!$mail->Send()) {
echo "Error al enviar el E-mail: " . $mail->ErrorInfo;
} else {
echo "
.......//

Gracias por su ayuda y espero poder solucionar este pequeño lio.

Saludos
  #2 (permalink)  
Antiguo 22/02/2012, 08:58
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

Verificaste que dentro del bucle te muestre todos los mails que seleccionaste?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 22/02/2012, 09:01
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

hola linuxzero, como hago eso?
Yo pense que esto: foreach ($_POST['select'] as $email){
seleccionaba todos los correos y luego $mail->AddAddress($email); me pondría todos los correos que se seleccionaron.
Creo que estoy confundido no?

Gracias
  #4 (permalink)  
Antiguo 22/02/2012, 09:10
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

Cita:
Iniciado por desoler Ver Mensaje
hola linuxzero, como hago eso?
Yo pense que esto: foreach ($_POST['select'] as $email){
seleccionaba todos los correos y luego $mail->AddAddress($email); me pondría todos los correos que se seleccionaron.
Creo que estoy confundido no?

Gracias
Si, la logica esta bien aplicada, pero queria serciorarme que dentro del bucle puedas acceder a los mails en forma correcta porque en el formulario tenes:

Código PHP:
Ver original
  1. <input type='checkbox' name='select[]' value=".$fila['email'].">

y no encerras el value en comillas simples porque es un string que deberia quedar asi:

Código PHP:
Ver original
  1. <input type='checkbox' name='select[]' value='".$fila['email']."'>

queria descartar un posible error, para saber si accedes bien a cada email y no tienen error proba haciendo esto:

Código PHP:
Ver original
  1. foreach ($_POST['select'] as $email){
  2.     echo $email . "<br />";
  3.     /**** comentar toda la funcionalidad debajo ****/
  4. }

Acordate de comentar todo el codigo debajo.

Probalo y avisame, te deberia imprimir en pantalla todos los mails que seleccionaste.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 22/02/2012, 09:53
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Hola linuxzero, ya estoy en eso, en unos minutos te comento.
Muchas gracias
  #6 (permalink)  
Antiguo 22/02/2012, 10:01
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

De nada, cualquier cosa pega un chiflido ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 22/02/2012, 10:41
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Hola linuxzero,

Genial, el problema estaba en las comillas de m.. fallo mio.

Un millón de gracias.
  #8 (permalink)  
Antiguo 22/02/2012, 10:52
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

De nada campeón ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 28/02/2012, 11:42
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Hola linuxzero

Te cuento que me pasa, es raro, el mismo codigo del que hablamos antes, sin ninguna modificiacion me envia el email correctamente si los envio individualmente (lo cual no me sirve) cuando selecciono mas de uno me envia el email solo al ultimo de la lista, es decir si selecciona 3 me lo envia al tercero pero no al primero y el segundo.
Alguna idea de por que pasa? ya le he dado vueltas, leido y releido y no le encuentro fallo.
si hago un echo me imprime en pantalla todos los email que selecciono pero a la hora de enviarlo solo se queda con el ultimo.

Gracias por tu tiempo o el del que me pueda ayudar.
  #10 (permalink)  
Antiguo 28/02/2012, 11:52
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con checkbox, solo recoge un dato

Quizas sea porque en todos los checkbox, tienes el mismo "name". Al hacer el bucle en el que creas los checkbox. Crea un contador que le de un nombre distinto al check.

$A = 1;
while ($fila = mysql_fetch_array($quoted_sql))
{
echo"
<tr class='spec'>
<td align=center><input type='checkbox' name='select".$A."' value=".$fila['email']."></form></td>
<td align=center>ID: ".$fila['personalID']."</td>
<td align=center>".$fila['fecha_registro']."</td>

$A++;
}

en el que enbvias el email lo mismo

$A = 1;
foreach ($_POST['select'.$A] as $email){

$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);


$mail = new PHPMailer();

$mail->IsHTML(true);

$mail->CharSet = 'UTF-8';

$mail->IsSMTP();

$mail->Host = "smtp.gmail.com";

$mail->From = "[email protected]";

$mail->FromName = "Car freight INC.";

$mail->Subject = "Do-Not-Replay Car Freight";

$mail->MsgHTML($body);


$mail->AddAddress($email);

$mail->AddBCC("[email protected]"); // Copia oculta

$mail->SMTPAuth = true;

$mail->Username = "[email protected]";

$mail->Password = "contraseña";

$A++;
}

if(!$mail->Send()) {
echo "Error al enviar el E-mail: " . $mail->ErrorInfo;
} else {
echo "
  #11 (permalink)  
Antiguo 28/02/2012, 12:52
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

no, en el name tendrias que tener el mismo nombre para todos pero que sea un array, como lo tenias al principio, seria algo asi:

Código PHP:
Ver original
  1. <?php foreach ($mails as $mail) : ?>
  2.     <input name="valores[]" value="<?php echo $mail; ?>" />
  3. <?php endforeach; ?>

y despues cuando envias el formulario recorres el vector $valores, que seria algo asi:

Código PHP:
Ver original
  1. <?php
  2.  
  3. foreach ($valores as $mail) {
  4.     sendmail($mail); // envio de mails
  5. }
  6.  
  7. ?>
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #12 (permalink)  
Antiguo 28/02/2012, 12:58
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

hola manugiralda,
entiendo el codigo pero me da error:
el primero es:
Warning: Invalid argument supplied for foreach() in /home/laura/public_html/dash/recordatorio.php on line 11

Fatal error: Call to a member function Send() on a non-object in /home/laura/public_html/dash/recordatorio.php on line 46

asi que crei que era por que aqui faltaba un punto foreach ($_POST['select'.$A.] as $email){

pero si le pongo el punto me sale:
Parse error: syntax error, unexpected ']' in /home/laura/public_html/dash/recordatorio.php on line 11

alguna sugerencia por favor.

Gracias por tu tiempo
  #13 (permalink)  
Antiguo 28/02/2012, 13:21
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Hola linuxzero,

no entiendo bien tu codigo, de donde saco $mail aqui
<?php foreach ($mails as $mail) : ?>
<input name="valores[]" value="<?php echo $mail; ?>" />
<?php endforeach; ?>
  #14 (permalink)  
Antiguo 28/02/2012, 13:30
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

Cita:
Iniciado por desoler Ver Mensaje
Hola linuxzero,

no entiendo bien tu codigo, de donde saco $mail aqui
<?php foreach ($mails as $mail) : ?>
<input name="valores[]" value="<?php echo $mail; ?>" />
<?php endforeach; ?>
Es un ejemplo de como deberia ser el bucle, no que escribas exactamente lo mismo, fijate en el primer post que hiciste, deja el bucle con los checkbox que generas de la misma forma, eso no lo cambies, dejalo con los name="select[]" y probalo asi
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #15 (permalink)  
Antiguo 28/02/2012, 14:08
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Lo siento linuxzero pero no hay caso, no por que lo que me digas este mal si no por que no lo entiendo y si no lo entiendo no lo puedo poner en practica.

while ($fila = mysql_fetch_array($quoted_sql))
{
echo"
<tr class='spec'>
<td align=center>";<? foreach ('select' as $mail) : ?><input type='checkbox' name='select[]' value="<?php echo''.$fila['email'].?>''" /><?php endforeach; ?><? echo"</form></td>
<td align=center>".$fila['personalID']."</td>
<td align=center>".$fila['fecha_registro']."</td>

por lo que yo entiendo en esta parte lo que yo hago es decir que por cada (foreach) select se guarde como $mail tomando como referencia el value, que por lo que entiendo lo que hace es imprimir cada uno de los email, ese es el dato que recupera, en este punto no se donde entra select, donde estoy pasando select, o como se llena parte "valores[]" y ademas no entiendo por que hay que hacer un echo de $fila['email'] dentro de value..... no se ya me perdi, deben las 8 horas que llevo con esta mierda..

Gracias
  #16 (permalink)  
Antiguo 28/02/2012, 14:38
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

Cita:
Iniciado por desoler Ver Mensaje
Lo siento linuxzero pero no hay caso, no por que lo que me digas este mal si no por que no lo entiendo y si no lo entiendo no lo puedo poner en practica.

while ($fila = mysql_fetch_array($quoted_sql))
{
echo"
<tr class='spec'>
<td align=center>";<? foreach ('select' as $mail) : ?><input type='checkbox' name='select[]' value="<?php echo''.$fila['email'].?>''" /><?php endforeach; ?><? echo"</form></td>
<td align=center>".$fila['personalID']."</td>
<td align=center>".$fila['fecha_registro']."</td>
Dejalo como lo tenias en el primer post esta parte, no modifiques nada de eso.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #17 (permalink)  
Antiguo 28/02/2012, 15:03
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

linuxzero

aja.. eso que significa?, "dejate de joder pibe y dedicate a otra cosa"?.

No te preocupes ya buscare la vuelta por algun lado.

Gracias por tu tiempo
  #18 (permalink)  
Antiguo 28/02/2012, 15:09
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

jajajajaj, no camepon, seria algo asi como deberias tenerlo vos:

Código PHP:
Ver original
  1. <?php
  2. while ($fila = mysql_fetch_array($quoted_sql))
  3. {
  4. echo "
  5. <tr class='spec'>
  6. <td align=center><input type='checkbox' name='select[]' value='" . $fila['email'] . "' /></td>
  7. <td align=center>".$fila['personalID']."</td>
  8. <td align=center>".$fila['fecha_registro']."</td>
  9. .....
  10. .....
  11. ?>

el bucle foreach que te ejemplifique yo, era igual a tu while ($fila = ...) porque no me acordaba como lo tenias, entonces tu while esta bien, y de name les pones a todos los mismos pero que sea un vector, como lo tenes vos tal cual.

y despues utilizas un foreach en el envio del formulario para recorrer el array de checkbox y enviar el mail

Código PHP:
Ver original
  1. foreach ($_POST['select'] as $mail) {
  2.     // PARTE DEL ENVIO DE MAIL utilizando cada $mail
  3. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #19 (permalink)  
Antiguo 28/02/2012, 15:22
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

me da vergüenza volver a escribirte, pero si no lo comento queda como que funciona.

estoy igual que al principio, este codigo es el que tenia, si selecciono de a uno lo envia bien
pero cuando selecciono por ej. 3 me envia solo el ultimo, ya que como dijo el otro usuario que contesto el select es siempre el mismo.

Si te preguntas por que no utilizo el ej. del otro usuario es por que da error, no esta bien, aunque leyendolo no presenta fallo a la hora de funcionar si.

no entiendo como una estupidez como esta me esta dando tanto dolor de cabeza (literalmente).

gracias macho y lo siento, parece que aunque seamos de la misma tierra a mi no me llego el fertilizante...:(
  #20 (permalink)  
Antiguo 28/02/2012, 18:39
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

hola manugiralda,

necesito si por favor me poder dar una mano con tu codigo ya que me da un error que no puedo solucionar. Realmente necesito encontrarle el problema a esto.

Muchas gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #21 (permalink)  
Antiguo 28/02/2012, 19:04
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con checkbox, solo recoge un dato

Bueno a ver voy a ponerte un codigo un poco resumido que utilizo to para mandar emails en mi pagina a mucha gente, tal y como yo lo hago. A ver si puedo ayudarte.

Pagina donde esta el formulario.

Código PHP:
//Aqui creo un array de usuario y lo asigno a cada respuesta de la BD por medio de un while de esta manera.
$usuario = array()
$db_conexion mysql_query("SELECT ID FROM usuarios ");
while(
$a_conexion mysql_fetch_array($db_conexion)){
    
$usuario[] = $a_conexion['usuario']

Ahora en el array usuario tengo todos los usuarios de mi tabla usuarios y creo un checkbox para cada usuario

Código PHP:
<html>
<
head>
</
head>
<
body>
<
form name="formulario" action="action.php" method="POST">

for(
$A=0;$usuario[$A]!="";$A++)}{
     echo 
'<input type="checkbox" name="check'.$A.'" value="'.$usuario[$A].'"/> Enviar a '.$usuario[$A].'<br>';
}

<
input type="submit" value="Enviar email">

</
form>
</
body>
</
html
Aqui tendriamos inpreso un checkbox por dada usuario llamados "check0, check1, check2";

y en action PHP

envio el email asi

Código PHP:

for($A=0;$_POST['check'.$A]!="";$A++){
     
$db_conexion mysql_query("SELECT nombre, email FROM usuarios WHERE id = '".$_POST['check'.$A]."' ");
     
$a_conexion mysql_fetch_array($db_conexion);

     
$nomrbre $a_conexion['nombre'];
     
$email$a_conexion['email'];
     
     
//Aqui tenemos los datos del usuario   $_POST['check'.$A] y enviamos el mensaje

      
$header "MIME-Version: 1.0\n";
      
$header .= "Content-Type: text/html; charset=UTF-8\n";
      
$header .="From: [email protected]\n";

      
$mensaje "Bienvenido".$nomrbre;

      
mail("$email","Titulo","$mensaje","$header");



Con este bucle recorre todos los $_POST['check'] cada uno con un numero mas que asigna la variable $A, encada vuelta de bucle recoge los datos necesarios para enviar el email de cada usuario y lo envia, hasta que ya no halla mas $_POST['check'] con un valor.

Espero haberte ayudado con mi ejemplo, sobre todo a entender el tema de los arrays. Que es lo importante, recuerda el proverbio chino, si un hombre tiene hambre no le des peces, enseñale a pescar.

Por cierto, he escrito el codigo directamente aqui, asi que es problable que haya algun error de sintaxis, si te da fallo o no entiendes algo dimelo, y si siegues sin poder hacerlo, si quieres puedes pasarme tu codigo entero y le hecho un vistazo. Para ver si te lo puedo soluciuonar, aunque lo mejor es que tu veas donde esta el fallo, pues es donde se aprende.
  #22 (permalink)  
Antiguo 28/02/2012, 19:16
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

hola manugiralda,
sin duda es como el proverbio y no espero el codigo solucionado, es mas, si no lo entiendo prefiero no usarlo por que en algun momento en que necesite hacer algo no lo voy a entender.
Voy a chequar lo que me pasaste aunque algo parecido a este codigo ya mire, y lo mio no es tan complicado, es mas, tu codigo solo arroja este fallo:
Warning: Invalid argument supplied for foreach() in /home/laura/public_html/prueba/Admin/recordatorio.php on line 12

no lo puedo solucionar por que aunque busco y leo en internet este fallo es demasiado general y no encuentro el punto en el que falla.

Pero bueno, ya llevo mas de 10 horas metido y mañana tengo que presentar esto funcionando, me toca toda la noche.

gracias por tu respuesta
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #23 (permalink)  
Antiguo 28/02/2012, 19:26
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con checkbox, solo recoge un dato

Perdona, pero en el codigo de action.php te daria error, ya a lo mejor has marcado el "check0", el "check3" y no el check1 y el 2, asi que el bucle que te puse en el ejemplo se cortaria. Tendrias que hallar el numero de usuarios o de checkbox que pones y correr el bucle ese numero.

A ver si me explico si tienes 20 checkbox, pues corres el bucle 20 veces, asi.

Código PHP:

for($A=0;$A<20;$A++){
     
    if(
$_POST['check'.$A]!=""){

         
$db_conexion mysql_query("SELECT nombre, email FROM usuarios WHERE id = '".$_POST['check'.$A]."' ");
         
$a_conexion mysql_fetch_array($db_conexion);

         
$nomrbre $a_conexion['nombre'];
         
$email$a_conexion['email'];
     
         
//Aqui tenemos los datos del usuario   $_POST['check'.$A] y enviamos el mensaje

          
$header "MIME-Version: 1.0\n";
          
$header .= "Content-Type: text/html; charset=UTF-8\n";
          
$header .="From: [email protected]\n";

          
$mensaje "Bienvenido".$nomrbre;

           
mail("$email","Titulo","$mensaje","$header");

      }


asi el bucle correra 20 veces y enviara un email en caso de que ese check correspondiente, tenga algun valor.
  #24 (permalink)  
Antiguo 28/02/2012, 19:31
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con checkbox, solo recoge un dato

Cita:
Iniciado por desoler Ver Mensaje
hola manugiralda,
sin duda es como el proverbio y no espero el codigo solucionado, es mas, si no lo entiendo prefiero no usarlo por que en algun momento en que necesite hacer algo no lo voy a entender.
Voy a chequar lo que me pasaste aunque algo parecido a este codigo ya mire, y lo mio no es tan complicado, es mas, tu codigo solo arroja este fallo:
Warning: Invalid argument supplied for foreach() in /home/laura/public_html/prueba/Admin/recordatorio.php on line 12

no lo puedo solucionar por que aunque busco y leo en internet este fallo es demasiado general y no encuentro el punto en el que falla.

Pero bueno, ya llevo mas de 10 horas metido y mañana tengo que presentar esto funcionando, me toca toda la noche.

gracias por tu respuesta

Entonces prueba cambiando el bucle foreach y utliza un bucle for o while, yo son los que siempre utilzo, ya que aunq con los otros ahorres un poco de codigo, a la hora de un fallo es siempre mas dificil dar con la clave. A mi ese error me huele a que estas argumentando mal el bucle en algun momento. Hechale un vistazo detenidamente.
  #25 (permalink)  
Antiguo 28/02/2012, 19:43
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con checkbox, solo recoge un dato

Cita:
Iniciado por manugiralda Ver Mensaje
$A = 1;
foreach ($_POST['select'.$A] as $email){

$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);


$mail = new PHPMailer();

$mail->IsHTML(true);

$mail->CharSet = 'UTF-8';

$mail->IsSMTP();

$mail->Host = "smtp.gmail.com";

$mail->From = "[email protected]";

$mail->FromName = "Car freight INC.";

$mail->Subject = "Do-Not-Replay Car Freight";

$mail->MsgHTML($body);


$mail->AddAddress($email);

$mail->AddBCC("[email protected]"); // Copia oculta

$mail->SMTPAuth = true;

$mail->Username = "[email protected]";

$mail->Password = "contraseña";

$A++;
}
Vale creo que el fallo se puede originar por el bucle foreach precisamente. Es porque si no seleccionas todos los checlbox en orden, el bucle se corta. A ver si me explico. Si seleccionas el Check2 y no el check1, el primer check no esta definido y entonces se cortaria y no da lugar a pasar al siguiente check.

Prueba cambiando el bucle foreach por el for que te puse yo y condicionandlo el envio del mensaje a que haya algo en la variable $_POST['select'.$A].

Prueba a dejarlo asi.

Código PHP:

//Calcula la cantidad de checlbox que tienes para que el bucle se suceda todas esas veces


$numcheckbox 20//esto es suponiendo qye tubieses 20 checbox.


for ($A=1;$A<=$numcheckbox;$A++){

if(
$_POST['select'.$A]!=""){

$email $_POST['select'.$A];

$body file_get_contents('contents.html');
$body eregi_replace("[\]",'',$body);


$mail = new PHPMailer();

$mail->IsHTML(true);

$mail->CharSet 'UTF-8';

$mail->IsSMTP();

$mail->Host "smtp.gmail.com";

$mail->From "[email protected]";

$mail->FromName "Car freight INC.";

$mail->Subject "Do-Not-Replay Car Freight";

$mail->MsgHTML($body);


$mail->AddAddress($email);

$mail->AddBCC("[email protected]"); // Copia oculta

$mail->SMTPAuth true;

$mail->Username "[email protected]";

$mail->Password "contraseña";

}


Asi deberia funcinarte seguro.
  #26 (permalink)  
Antiguo 28/02/2012, 20:46
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

no campeón me el siguiente error:

Fatal error: Call to a member function Send() on a non-object in /home/laura/public_html/prueba/Admin/recordatorio.php on line 51

ye he echo y desecho tanto que ya estoy mareado... no hay caso..
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #27 (permalink)  
Antiguo 29/02/2012, 08:23
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con checkbox, solo recoge un dato

Hola linuxzero

siento seguir molestando, ayer estuvimos con otro compañero de aqui tratando de solucionarlo pero no pudimos, se que es mucho para un tema tan simple, pero no lo puedo solucionar y ya van 3 dias.
Por que la logica no funciona en esta script?
como algo tan simple como hacer un bucle y enviar un email da siempre el mismo error?

si tenes alguna ayuda, no se, estoy a tu disposicion por el resto de los dias ...jaja

saludos
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #28 (permalink)  
Antiguo 29/02/2012, 08:34
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con checkbox, solo recoge un dato

Empeza haciendo algo sencillo, create un formulario con una lista de checkbox con mails, cada uno con el atribuo name="algo[]" por ejemplo.

y en el backend, recorre el $_POST['algo'] e imprimi los mails por pantalla, si eso te lo hace bien ya te sacas la duda que no es tema del checkbox, sino que tu funcion que envia los mails es defectuosa, para mi el problema esta en el envio de mails, pero para sacarse la duda hace esa prueba chiquita.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: checkbox, checkboxes
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 22:58.