Foros del Web » Programando para Internet » PHP »

Borrar mensajes tildados en checkbox

Estas en el tema de Borrar mensajes tildados en checkbox en el foro de PHP en Foros del Web. Hola gente, disculpen que los moleste para consultarlo pero estoy teniendo un problema de dos semanas que no puedo resolver, cada tanto vuelvo a intentar ...
  #1 (permalink)  
Antiguo 15/03/2010, 09:39
 
Fecha de Ingreso: julio-2007
Mensajes: 178
Antigüedad: 16 años, 9 meses
Puntos: 1
Borrar mensajes tildados en checkbox

Hola gente, disculpen que los moleste para consultarlo pero estoy teniendo un problema de dos semanas que no puedo resolver, cada tanto vuelvo a intentar pero no logro que me funcione, ya he googleado, ya he buscado otros temas del foro pero nada... se que si se puede hacer pero no comprendo como...

Les comento...

Estoy listando una bandeja de entrada imap, y lo que quiero es que al seleccionar varios mensajes (solo me salio con uno) se borren, para eso uso este codigo...

Código PHP:
$borrar $_POST["borrar"];
if(!
$borrar){
echo 
'

<div id="ficha">
<div id="formlistado">
</div><br /><br />
<div class="herramientas"><form href="correo.php" method="POST">&nbsp;<input type="submit" value="Eliminar" /><div class="paginarcorreo">'
//// Aca esta el submit para eliminar

for ($p=0$p<=$paginas$p++) {
$dexde $p $mostrar//para marcar el inicio de la siguiente pagina
echo '<a href="correo.php?correo='.$_GET["correo"].'&pagina='.$dexde.'">'.$p.'</a> - '//mostramos la lista de paginas. Que cada uno las muestre como quiera
}

echo
'</div></div>
<div class="listamensajes">'
;


for (
$i=$desde$i<$hasta$i++) {
$header get_object_vars(imap_header($link,$resultados[$i]->msgno));
$asunto=utf8_decode(imap_utf8($resultados[$i]->subject)); 


echo 
"<div class='msj'><input name='borrar' type='checkbox' value='".$resultados[$i]->msgno."'> ".$resultados[$i]->msgno." )&nbsp;";
echo 
"<a href='ver.php?numero=".$resultados[$i]->msgno."'>$asunto  [ ".$header[fromaddress]."]</a>";

$servidorenvia strstr($resultados[$i]->message_id'@');
echo 
'<br /></div>';
}
echo 
'</form></div>
</div></div>

</div>

</div>

</div> <!-- fin modulo -->

</div><div>


</div>

</body>

</html>'
;
}else
{
imap_delete($link,$borrar);
imap_expunge($link);

No se si se entiende, entiendo que tengo que hacer un array y luego un foreach para ejecutar el comando imap_delete, pero no logro que me salga...

A alguien se le ocurre algo? Si tienen cualquier duda del codigo avisen! y obviamente GRACIAS!
  #2 (permalink)  
Antiguo 15/03/2010, 10:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Borrar mensajes tildados en checkbox

Para borrar multiples mensajes debes hacerlo con matriz (array), agregando corchetes al nombre del checkbox, de lo contrario, cada nuevo checkbox con el mismo nombre sobreescribira al anterior.

Cita:
echo "<div class='msj'><input name='borrar[]' type='checkbox' value='".$resultados[$i]->msgno."'> ".$resultados[$i]->msgno." )&nbsp;";
Código PHP:
Ver original
  1. // Debes forzar $borrar para inicializarlo correctamente:
  2. $borrar = (isset($_POST['borrar'])) ? $_POST['borrar'] : array();
  3.  
  4. if(!is_array($borrar) || count($borrar) == 0) {
  5.     // Aqui presentas el formulario
  6. } else {
  7.     foreach($borrar as $id_mensaje) {
  8.         // Aqui eliminas cada mensaje marcado
  9.     }
  10.     // Aqui realizas procesos adicionales si es que los necesitas
  11. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 15/03/2010, 15:33
 
Fecha de Ingreso: julio-2007
Mensajes: 178
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Borrar mensajes tildados en checkbox

Cita:
Iniciado por Triby Ver Mensaje
Para borrar multiples mensajes debes hacerlo con matriz (array), agregando corchetes al nombre del checkbox, de lo contrario, cada nuevo checkbox con el mismo nombre sobreescribira al anterior.



Código PHP:
Ver original
  1. // Debes forzar $borrar para inicializarlo correctamente:
  2. $borrar = (isset($_POST['borrar'])) ? $_POST['borrar'] : array();
  3.  
  4. if(!is_array($borrar) || count($borrar) == 0) {
  5.     // Aqui presentas el formulario
  6. } else {
  7.     foreach($borrar as $id_mensaje) {
  8.         // Aqui eliminas cada mensaje marcado
  9.     }
  10.     // Aqui realizas procesos adicionales si es que los necesitas
  11. }
Me sirvio muchisimo!!!! Gracias!!! lo tengo funcionando!

Etiquetas: borrar, checkbox, mensajes
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:17.