Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CappiLevi

Apagar / Salvar Mensagens selecionadas (Checkbox)

Recommended Posts

Olá a todos! Tenho um sistema de mensagens que funciona perfeitamente, estilo hotmail, com caixa de entrada, lixeira, etc. Mas ele tem um aspecto que poderia ser melhorado. Vejam a figura abaixo:

 

Imagem Postada

 

Vou explicar os itens à direita:

 

X -> Envia a mensagem para a lixeira;

R - > Serve para responder ao remetente da mensagem;

Pasta - > Serve para guardar a mensagem no baú.

 

Assim, o sistema funciona perfeitamente, como eu já disse. Agora imaginem que, em vez de 2 mensagens, como mostra na figura, o usuário tinha 200 mensagens! Seria muito difícil ele excluir uma por uma, ou guardá-las uma por uma. Então, a solução é implementar um sistema em que o utilizar selecionava as mensagens que queria excluir ou salvar através de checkbox, como no sistema do orkut.

Assim gostaria da opinião de vocês para melhor proceder à resolução do problema.

 

Ass. Pedro

 

Obrigado pela colaboração de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

JAVASCRIPT
function setCheckboxes(the_form, do_check) {

    var elts = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined')

    ? document.forms[the_form].elements['selected_db[]']

        : (typeof(document.forms[the_form].elements['selected_tbl[]']) != 'undefined')

        ? document.forms[the_form].elements['selected_tbl[]']

        : document.forms[the_form].elements['categoria[]'];

    var elts_cnt  = (typeof(elts.length) != 'undefined')

        ? elts.length

        : 0;

    if (elts_cnt) {

        for (var i = 0; i < elts_cnt; i++) {

            elts[i].checked = do_check;

        } // end for

    }

        else {

        elts.checked = do_check;

    } // end if... else

    return true;

} // end of the 'setCheckboxes()' function

 

<input type="button"value="Marcar todos" onclick="setCheckboxes('form', true); return false;"> <input type="button"value="Desmarcar todos" onclick="setCheckboxes('form', false); return false;">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelo sistema desmarcar/marcar as checkboxs. Eu aqui já incorporei um sistema mais simples para fazer isso. Mas o meu problema não é esse. Eu esqueci de dizer que quando seleciono "Apagar mensagens selecionadas" não acontece nada. Porque é este o sistema que quero criar. A minha dúvida é como interagir o javascript com o php.

 

Assim: Se checkbox = "Apagar mensagens" então apaga mensagem selecionada... Mas isso é claro em php...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta fazer o seguinte, vou te passar uma coisa simples:

PHP
<form name="apagar" action="" method="get">

Apagar<input type="checkbox" name="apagar">

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

</form>

 

<?php

$apagar=$_GET["apagar"];

switch($apagar){

case "apagar":

$ap=mysql_query("DELET FROM tabela WHERE campo='calor'");

break;

}

?>

agora da uma estudada nisso, e saberá como adaptar ao javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP
if ($_GET["action"] == "apagar") {

                if(isset($_POST['mensagem']) && is_array($_POST['mensagem'])) {

                        $mensagem = '';

                        foreach($_POST['mensagem'] as $msg) {

                                echo "será apagada mensagem com a id: " . $msg . "<br>";

                                //$sql = "DELETE FROM tabela SET idMensagem = '" . $msg . "'";

                                //mysql_query($sql) or die ("Não foi possível apagar a Mensagem");                               

                        }

                }

        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz o que você disse mas não aconteceu nada... Veja como estou tentando:

 

PHP
<?PHP

                                                                                                               

while ($linha = mysql_fetch_array($mensagens))

        {

                $data = substr($linha['data'],8,2)."/".substr($linha['data'],5,2)."/".substr($linha['data'],0,4);?>

        <tr>

          <td width="355" bgcolor="#E6EDF2"> <font>Assunto: <b><?php echo($linha['assunto']) ?></b><br>

            De: <a  target="_blank" style="color: #000080" href="http://tudoaki.net/perfil/index.php?membro=<? echo $linha['de']; ?>"><b><?php echo($linha['de']); ?></b></a><br>

            Enviado em <font color="#000080"><?php echo "$data" ?></font></font> <font>às <font style="color:#000080;"><?php echo($linha['hora']) ?></font>.</font><br>

            <br>

            <font color="#000080"><b>Mensagem:</b></font> <font><?php echo($linha['mensagem']) ?></font></td>

               <td width="22" bgcolor="#E6EDF2">

                  <p align="center"><b>

                       <input type="checkbox" name="check"><br><br>

                          <?PHP

                                                        if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem.php?membro='.$linha["de"].'"><b><font style="font-size:14px;color:#008000">R</font></b></a></b>';

                                                                        }

                                               

                                                                       

                                                        ?>

                      <br><br>

                        <a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar=<? echo $mostrar ?>&id=<?PHP echo $linha['ID']?>&ir=guardar"><img src="http://tudoaki.net/imagens/icones_areas/pasta.png" width="16" height="14" border="0"></a><br>

                        <br><b>

                          <?PHP

                                                                        if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas" || $mostrar == "enviadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=lixeira"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                        }

                                                                        else if ($mostrar == "deletadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=deletar"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                        }

                                                                       

                                                                        ?>

                                                                          <?PHP

                                                                          $acao = $_GET["acao"];

                                                                          if ($_SERVER["REQUEST_METHOD"]== "POST" and $acao == "sim")

                                                                          {

                                                                                 $acao_tomada = $_POST["acao_tomada"];

                                                                                 $id_mensagem = $linha['ID'];

                                                                                 if ($acao_tomada == "apagar_mensagem" and isset($_POST["check"]))

                                                                                     {

                                                                                                conecta_membros();

                                                                                                mysql_query("DELETE FROM mensagens WHERE ID='$id_mensagem'");

                                                                                        }

                                                                          }

                                                                           ?>

                              </b></td>

                                </tr>

                              <tr>

                           <td width="385" colspan="2">

                         <hr>   </td>

                 </tr>

          <?PHP } ?>

 

Só que está deletando todas as mensagens... Não está verificando qual está com o check marcado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim, mas o problema é que tá excluindo todas as mensagens... estando ou não o check marcado...

 

PHP
<?PHP

                                                                                                                                                                                                                               

while ($linha = mysql_fetch_array($mensagens))

                {

                                $data = substr($linha['data'],8,2)."/".substr($linha['data'],5,2)."/".substr($linha['data'],0,4);?>

                <tr>

                  <td width="355" bgcolor="#E6EDF2"> <font>Assunto: <b><?php echo($linha['assunto']) ?></b><br>

                        De: <a  target="_blank" style="color: #000080" href="http://tudoaki.net/perfil/index.php?membro=<? echo $linha['de']; ?>"><b><?php echo($linha['de']); ?></b></a><br>

                        Enviado em <font color="#000080"><?php echo "$data" ?></font></font> <font>às <font style="color:#000080;"><?php echo($linha['hora']) ?></font>.</font><br>

                        <br>

                        <font color="#000080"><b>Mensagem:</b></font> <font><?php echo($linha['mensagem']) ?></font></td>

                           <td width="22" bgcolor="#E6EDF2">

                                  <p align="center"><b>

                                           <input type="checkbox" name="check"><br><br>

                                                  <?PHP

                                                                                                                if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas")

                                                                                                                                                {

                                                                                                                                                echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem.php?membro='.$linha["de"].'"><b><font style="font-size:14px;color:#008000">R</font></b></a></b>';

                                                                                                                                                }

                                                                                               

                                                                                                                                               

                                                                                                                ?>

                                          <br><br>

                                                <a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar=<? echo $mostrar ?>&id=<?PHP echo $linha['ID']?>&ir=guardar"><img src="http://tudoaki.net/imagens/icones_areas/pasta.png" width="16" height="14" border="0"></a><br>

                                                <br><b>

                                                  <?PHP

                                                                                                                                                if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas" || $mostrar == "enviadas")

                                                                                                                                                {

                                                                                                                                                echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=lixeira"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                                                                                                }

                                                                                                                                                else if ($mostrar == "deletadas")

                                                                                                                                                {

                                                                                                                                                echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=deletar"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                                                                                                }

                                                                                                                                               

                                                                                                                                                ?>

                                                                                                                                                  <?PHP

                                                                                                                                                  $acao = $_GET["acao"];

                                                                                                                                                  if ($_SERVER["REQUEST_METHOD"]== "POST" and $acao == "sim")

                                                                                                                                                  {

                                                                                                                                                                 $acao_tomada = $_POST["acao_tomada"];

                                                                                                                                                                 $id_mensagem = $linha['ID'];

                                                                                                                                                                 if ($acao_tomada == "apagar_mensagem" and isset($_POST["check"]))

                                                                                                                                                                                {

                                                                                                                                                                                                conecta_membros();

                                                                                                                                                                                                mysql_query("DELETE FROM mensagens WHERE ID='$id_mensagem'");

                                                                                                                                                                                }

                                                                                                                                                  }

                                                                                                                                                   ?>

                                                          </b></td>

                                                                </tr>

                                                          <tr>

                                                   <td width="385" colspan="2">

                                                 <hr>   </td>

                                 </tr>

                  <?PHP } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não fez como mostrei. Altera esse trecho e me diz q q deu.

PHP
if ($_SERVER["REQUEST_METHOD"] == "POST" && $acao == "sim") {

                $acao_tomada = $_POST["acao_tomada"];

                //$id_mensagem = $linha['ID'];

                if ($acao_tomada == "apagar_mensagem" && isset($_POST["check"]) && is_array($_POST['check'])) {

                        conecta_membros();

                        foreach($_POST['check'] as $id_mensagem) {

                                mysql_query("DELETE FROM mensagens WHERE ID = '" . $id_mensagem . "'");

                        }

                }

        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não fez como mostrei. Altera esse trecho e me diz q q deu.

PHP
if ($_SERVER["REQUEST_METHOD"] == "POST" && $acao == "sim") {

                $acao_tomada = $_POST["acao_tomada"];

                //$id_mensagem = $linha['ID'];

                if ($acao_tomada == "apagar_mensagem" && isset($_POST["check"]) && is_array($_POST['check'])) {

                        conecta_membros();

                        foreach($_POST['check'] as $id_mensagem) {

                                mysql_query("DELETE FROM mensagens WHERE ID = '" . $id_mensagem . "'");

                        }

                }

        }

Já disse na mensagem anterior que alterei de acordo com o que você disse, só não tinha postado o codigo com o codigo que você disse. Mas agora testei de novo e não deu na mesma. Quando seleciono as checkboxs e seleciono la "apagar mensagens selecionadas" não acontece nada... Não apaga as mensagens selecionadas, não apaga nenhuma mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não fez como mostrei. Altera esse trecho e me diz q q deu.

PHP
if ($_SERVER["REQUEST_METHOD"] == "POST" && $acao == "sim") {

                $acao_tomada = $_POST["acao_tomada"];

                //$id_mensagem = $linha['ID'];

                if ($acao_tomada == "apagar_mensagem" && isset($_POST["check"]) && is_array($_POST['check'])) {

                        conecta_membros();

                        foreach($_POST['check'] as $id_mensagem) {

                                mysql_query("DELETE FROM mensagens WHERE ID = '" . $id_mensagem . "'");

                        }

                }

        }

Já disse na mensagem anterior que alterei de acordo com o que você disse, só não tinha postado o codigo com o codigo que você disse. Mas agora testei de novo e não deu na mesma. Quando seleciono as checkboxs e seleciono la "apagar mensagens selecionadas" não acontece nada... Não apaga as mensagens selecionadas, não apaga nenhuma mensagem.

 

Ultimate, não adianta você alterar e não postar, o que nós vemos é o que está aqui. <_<

 

Agora, altera no formulário o nome do campo check para check[], tenta novamente e posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, vou postar o código. Desta vez vou postar o formulário também para ficar mais fácil e ver como funciona:

 

PHP
<form method="POST" name="form1" action="http://tudoaki.net/user/mensagens/correio/index.php?acao=sim&mostrar=<?PHP echo "$mostrar";?>&ordenar=<?PHP echo "$ordenar";?>">

                                                                                <p>

                                            <font color ="#000000">Executar ação: </font>

                                                                                <select size="1" name="acao_tomada">

                                                                                <option selected value="--">--</option>

                                                                                <option value="apagar_mensagem">Apagar

                                                                                Mensagens Selecionadas

                                                                                </option>

                                                                                <option value="salvar_mensagem">Salvar

                                                                                Mensagens Selecionadas

                                                                                </option>

                                                                                </select></p>

                                                                                <p>

                                            <input type="radio" value="assunto" name="ordenar" <?PHP if ($ordenar == "assunto") {echo "checked";} ?>>

                                            <font style="color:#000080">Assunto</font>

                                            <input name="ordenar" type="radio" value="data/hora" <?PHP if ($ordenar == "data/hora" and $ordenar != "assunto") {echo "checked";} ?>>

                                            <font style="color:#000080">Data / Hora</font>  

                                            <input type="submit" value="Ordenar" name="Ver" style="color: #000000; border: 1px outset #8A95A6; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #E8EFF4"></p>

                                   

                                      <!-- Form "Comentários do Usuário" ------------------------------->

                                      <table width="401" border="0" cellpadding="0" cellspacing="8" id="table294">

 <?PHP

                                                                                                               

while ($linha = mysql_fetch_array($mensagens))

        {

                $data = substr($linha['data'],8,2)."/".substr($linha['data'],5,2)."/".substr($linha['data'],0,4);?>

        <tr>

          <td width="355" bgcolor="#E6EDF2"> <font>Assunto: <b><?php echo($linha['assunto']) ?></b><br>

            De: <a  target="_blank" style="color: #000080" href="http://tudoaki.net/perfil/index.php?membro=<? echo $linha['de']; ?>"><b><?php echo($linha['de']); ?></b></a><br>

            Enviado em <font color="#000080"><?php echo "$data" ?></font></font> <font>às <font style="color:#000080;"><?php echo($linha['hora']) ?></font>.</font><br>

            <br>

            <font color="#000080"><b>Mensagem:</b></font> <font><?php echo($linha['mensagem']) ?></font></td>

               <td width="22" bgcolor="#E6EDF2">

                  <p align="center"><b>

                       <input type="checkbox" name="check[]"><br><br>

                          <?PHP

                                                        if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem.php?membro='.$linha["de"].'"><b><font style="font-size:14px;color:#008000">R</font></b></a></b>';

                                                                        }

                                               

                                                                       

                                                        ?>

                      <br><br>

                        <a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar=<? echo $mostrar ?>&id=<?PHP echo $linha['ID']?>&ir=guardar"><img src="http://tudoaki.net/imagens/icones_areas/pasta.png" width="16" height="14" border="0"></a><br>

                        <br><b>

                          <?PHP

                                                                        if ($mostrar == "" || $mostrar == "novas" || $mostrar == "guardadas" || $mostrar == "enviadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=lixeira"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                        }

                                                                        else if ($mostrar == "deletadas")

                                                                        {

                                                                        echo '<a href="http://tudoaki.net/user/mensagens/correio/mensagem_verificar.php?mostrar='.$mostrar.'&id='.$linha['ID'].'&ir=deletar"><font style="font-size:14px"color="#FF0000">X</font></a></b>';

                                                                        }

                                                                       

                                                                        ?>

                                                                          <?PHP

                                                                         

                                                                          if ($_SERVER["REQUEST_METHOD"] == "POST" and $acao == "sim") {

                                                         $acao_tomada = $_POST["acao_tomada"];

                                                         $id_mensagem = $linha['ID'];

                                                         if ($acao_tomada == "apagar_mensagem" and isset($_POST["check"]) and is_array($_POST['check'])) {

                                                conecta_membros();

                                                         foreach($_POST['check'] as $id_mensagem) {

                                           mysql_query("DELETE FROM mensagens WHERE ID = '$id_mensagem'");

                                                   }           

                                                                        }

                                                  }

                                                                          /*$acao = $_GET["acao"];

                                                                          if ($_SERVER["REQUEST_METHOD"]== "POST" and $acao == "sim")

                                                                          {

                                                                                 $acao_tomada = $_POST["acao_tomada"];

                                                                                 $id_mensagem = $linha['ID'];

                                                                                 if ($acao_tomada == "apagar_mensagem" and isset($_POST["check"]))

                                                                                        {

                                                                                                conecta_membros();

                                                                                                mysql_query("DELETE FROM mensagens WHERE ID='$id_mensagem'");

                                                                                        }

                                                                          }

                                                                           */?>

                              </b></td>

                                </tr>

                              <tr>

                           <td width="385" colspan="2">

                         <hr>   </td>

                 </tr>

          <?PHP } ?>

                                        <tr>

                                          <td width="100%" colspan="2"><?

                                                                                        if ($total_msg == 0)

                                                                                        {

                                                                                        echo "<font>Você não tem mensagens nesta área!</font>";

                                                                                        } ?>

                                          </td>

                                        </tr>

                                      </table>

                                                                                <p align="center">

                       <input type="submit" value="Confirmar ação" name="submit" style="color: #000000; border: 1px outset #8A95A6; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #E8EFF4"></p>

                </form>

 

Alterei o check para check[] e mesmo assim não deu. E outra coisa, se você colocar este código num editor de html é mais fácil para você como funciona. Você verá que para que o formulário seja enviado via post eu coloquei um botão no final [confirmar ação], mas se fosse ativado com onclick era mais fácil. Ou seja, logo queu o user escolher uma opção lá, or exemplo [apagar mensagens selecionadas] já ative o formulario (submit). Mas podemos ir por partes, depois que estiver funcionando tenho de ver como isso se faz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera o campo check para:

<input type="checkbox" name="check[]" value="<?php echo $linha['ID']; // ID da mesangem listada ?>">

Eba!!!!! Funcionou perfeitamente. Ficou melhor que o sistema de mensagens do orkut!! Era relativamente simples, só que não tenho muito jeito com checkbox... Mas agora já deu para entender melhor sobre as checks. Valeu mesmo pela ajuda! Dá para ver que você entende mesmo do assunto. Continue assim que você vai longe como programador. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Se quiser ver o sistema funcionando a 100%, você já sabe em que site ir... http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif Flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.