Ir para conteúdo
Fórum Script Brasil
  • 0

Apagar vários registos com checkbox


Guilherme Toneloto

Pergunta

Pessoal, Boa noite.

Estou com um pequeno problema, tenho uma página de recados onde o usuário tem a opção de excluir seus recados.

Eu fazia a exclusão um por um, mais agora tenho a nescessidade de apagar varios registros de uma vez. Começei a usar checkbox, mais sou novo em php e não condigo fazer ele apagar vários registros. ele so apaga um registro.

Peguei varias informaçoes na internet sobre o comando implode e etc mais nada funciona, alguém pode me ajudar

OBS.

Página em php

Banco de dados: Mysql.

Tabela: recados

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Você precisa abrir e fechar as chaves depois do nome das checkboxes, e todas devem ter o mesmo nome, só mudando o value.

Isso transformará os dados enviados em um array que você tratará com um foreach.

Algo como este exemplo:

<input type="checkbox" name="Recado[]" value="1" />
<input type="checkbox" name="Recado[]" value="2" />
<input type="checkbox" name="Recado[]" value="3" />
<input type="checkbox" name="Recado[]" value="4" />
<input type="checkbox" name="Recado[]" value="5" />
Na página que receberá esses dados, você utiliza o foreach assim:
$Recados = $_POST["Recado"];
foreach($Recados as $Recado){
     // Aqui você trata a variável recado, pode mandar apagar no mysql o registro que contiver esse valor
     }

Mais informações sobre o foreach: http://br.php.net/manual/pt_BR/control-str...res.foreach.php

Link para o comentário
Compartilhar em outros sites

  • 0

Eu coloquei na página de funçao

if($acao == "excluir_recado") {

include("conecta.php");

foreach($excluir as $excluir){

$excluir = implode( ',', $_POST['excluir']);

$sql = "delete from recados WHERE idx IN ($excluir) ";

$rs = mysql_query($sql, $conecxao);

header("Location: index.php?acao=recados&idx=$id_login");

}

//fim

}

e na página do formulário o chckbox

<input type="checkbox" name="excluir[]" value="<? print "temp_id_recado"; ?>" />

mais não acontece nada, ele executa normalmente mais não apaga nada, como resolver isso

Link para o comentário
Compartilhar em outros sites

  • 0

Poderia ficar assim:

$Recados = $_POST["Recado"];
foreach($excluir as $registro){
     $sql = "delete from recados WHERE idx IN ($registro) ";
     $rs = mysql_query($sql, $conecxao);
     }
header("Location: index.php?acao=recados&idx=$id_login");

Perceba que o header tem que vir depois do foreach, pois ele é um laço e se o header estiver dentro dele, será executado já na primeira ação do foreach.

Link para o comentário
Compartilhar em outros sites

  • 0

Haaaa m%¨$¨¨&$%

eu coloquei td certinho.

Mudei o nome do checkbox e alterei no script que apaga também, ele redireciona, passa pelo foreach como td tivesse ido so que nada apaga.

if($acao == "excluir_recado") {

include("conecta.php");

$Recados = $_POST["excluira"];

foreach($excluir as $registro){

$sql = "delete from recados WHERE idx IN ($registro) ";

$rs = mysql_query($sql, $conecxao);

}

header("Location: index.php?acao=recados&idx=$id_login");

//fim

}

<input type="checkbox" name="excluira[]" value="<? print "temp_id_recado"; ?>" />

Link para o comentário
Compartilhar em outros sites

  • 0

Uma coisa que me esqueci é de dizer pra mudar essa linha:

$Recados = $_POST["excluira"];
Por essa:
$excluir = $_POST["excluira"];
Deve ser o sono... Vou é dormir. E muda a linha:
$rs = mysql_query($sql, $conecxao);
Pela linha:
$rs = mysql_query($sql, $conecxao) or die(mysql_error());

Para ver se gera algum erro no MySQL também.

Link para o comentário
Compartilhar em outros sites

  • 0

To quase tacando meu pc na parede.

if($acao == "excluir_recado") {

include("conecta.php");

$excluir = $_POST["excluira"];

foreach($excluir as $registro){

$sql = "delete from recados WHERE idx IN ($registro) ";

$rs = mysql_query($sql, $conecxao) or die(mysql_error());

}

print "$registro";

//fim

}

coloquei um print para ver o que ta chegando, e so ta chegando um id, mesmo que selecione vários. e acaba apagando apenas um.

Por favor

OBS

O form que fica a seleção dos recados

<form action="?acao=excluir_recado" method="POST" name="apaga">

Editado por Guilherme Toneloto
Link para o comentário
Compartilhar em outros sites

  • 0

Você está utilizando register_globals em on?

Aí ele só dá print em um registro porque está fora do foreach.

Aí ele só imprime o último valor da variável.

Pra você ver se está imprimindo todos, deve colocar o print lá dentro, assim:

if($acao == "excluir_recado") {
include("conecta.php");
$excluir = $_POST["excluira"];
foreach($excluir as $registro){
$sql = "delete from recados WHERE idx IN ($registro) ";
$rs = mysql_query($sql, $conecxao) or die(mysql_error());
print "$registro &nbsp;"; // Com um espaço aqui pra separar os números
}

//fim
}

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, eis um código que sempre uso na empresa tenta entender e usar:

Basicamente o que ele faz é o seguinte:

Primeiro eu faço uma solicitação no banco para saber quais dados vão preceder um checkbox então eu faço um laço e coloco os checkbox contando quantos tem e depois eu uso javascript passando todos os checkbox checked e a quantidade, depois no outro script eu faço apenas o inverso:

if(substr($_USUARIO['StringAutorizacoes'],326,1) == 1){ 

    array_push($variaveis,"Carta de Cancelamento","java script:
    
    var selecao='';
        
    for(var j = 0; j < $contadorCarta; j++){
        
        box = eval(document.getElementById('cartaCancelamento' + j));
        
        if(box.checked)
            selecao=selecao+'&cartaCancelamento' + j + '=' + box.value;
        
    }
                
    location=('/treinamento/alunos.php?operacao=cartaCancelamento&codigoAlunoCarta=$codigoAlunoCarta&quantidade=$contadorCarta'+selecao);");
}
veja se consegue entender e qualquer coisa da um toque, apenas note que o id do checkbox é dinâmico ou seja o id é "cartaCancelamento$contadorCarta" o código que trada isso é bem simples:
for ($i=0;$i<$quantidade;$i++){
    
    $codigoTurma='cartaCancelamento'.$i;
    $codigoTurma=$$codigoTurma;
}

pronto você já consegue tratar todos os checks...

poste aí que qualquer coisa eu faço uma aplicação que exclua, usei exemplos só para você entender...

Editado por gilakgil
Link para o comentário
Compartilhar em outros sites

  • 0

Meu script ta assim, tem como alguém montar certinho e me mandar,l já to nisso a mais de 1 mes e não consigo nada, não aguento mais.

Pliss

<? if($acao == "recado") { ?>

<form action="?acao=apaga_recado" method="POST" name="apaga">

<input name="exlcuir" type="submit" class="botao_site" value="Apagar recados selecionados">

<?

$query = mysql_query("SELECT * FROM recados WHERE id ='$idx_u' ");

print mysql_error();

while($result = mysql_fetch_array($query)) {

$recado = $result['recado'];

$data = $result['data'];

$email = $result['email'];

$remetente = $result['remetente'];

$id = $result['id'];

$idx = $result['idx'];

?>

<table width=100%" border="0" bgcolor="#00FFFF" class="fundo_redondo">

<tr>

<td height="68"> <table width="100%" border="0" class="texto_recados">

<tr>

<td width="4%" height="22"> <div align="left"><font color="#666666">N<font size="3">o</font>me</font><font color="#666666" size="3">:</font></div></td>

<td width="77%"><? print($remetente); ?></td>

<td width="19%"> <div align="center"><? print($data); ?>

</div></td>

</tr>

<tr>

<td height="21"> <div align="left"><font color="#666666" size="3">Email:</font></div></td>

<td><? print($email); ?></td>

<td><div align="right">

<input type="checkbox" name="excluira[]" value="<? print "$idx"; ?>" />

</div></td>

</tr>

</table>

<span><font color="#666666"><? print($recado); ?></font></span></td>

</tr>

</table>

</form>

<? } if($acao == "apaga_recado") {

include("conecxao/conecta.php");

$excluir = $_POST["excluira];

foreach($excluir as $registro){

$sql = "delete from recados WHERE idx = $registro";

$rs = mysql_query($sql, $conecxao) or die(mysql_error());

}

header("Location: ?acao=recados&id=$idx_u");

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Eu uso assim

// Número de checkbox selecionadas

// É preciso criar um javascript que conte o número de checkbox criadas marcadas

$alunos = $_POST["QuantAlunos"];

// Recebe as checkbox

$var1 = pago_; // Nome das checkbox

$num=1;

for($min=1;$min<=$alunos; $min++) {

$valor1=$_POST[$var1.$num];

$ValorFinal = $valor1;

// Trata a informação

$sql = "insert into ead_matriculas (id, id_user, id_curso, id_turma ) values ( '', '".$ValorFinal."', '$curso', '$turma' )";

$grava = mysql_query($sql);

$num++;

}

Para funcionar você precisa criar checkbos com nomes diferentes no meu caso criei um auto incremento, então os nomes ficam assim: pago_1, pago_2, pago_3 e etc...

Link para o comentário
Compartilhar em outros sites

  • 0

acredito que esteja errado o nome do input

<input name="exlcuir" type="submit" class="botao_site" value="Apagar recados selecionados">
"exlcuir" arruma isso e se der outro erro posta denovo eu fiz 1 código com checkbox e funcionou perfeitamente, qualquer coisa eu posto pra você dar uma olhada. edit outra coisa, n sei se é só nessa parte do código mas falta fechar um } no final aqui
}}
header("Location: ?acao=recados&id=$idx_u");

Editado por Hoshoyo
Link para o comentário
Compartilhar em outros sites

  • 0

Dei uma arrumada, pois eu tinha editato muito rápido, tinha que sair com minha mina

huahauhau

Alterei o nome arrumei tudinho e ainda apaga apenas um registro.

Marcos Beraldo que script eu deveria criar.

aqui ta o link que estou fazendo o teste

http://tonelotos.xp3.biz/teste.php?acao=recado&idx_u=2

<? include("conecxao/conecta.php"); 
 if($acao == "recado") { ?>
<form action="?acao=apaga_recado" method="POST" name="apaga">
<input name="exlcuir" type="submit" class="botao_site" value="Apagar recados selecionados">
<?
$query = mysql_query("SELECT * FROM recados WHERE id ='$idx_u' ");
print mysql_error();
while($result = mysql_fetch_array($query)) {
$recado = $result['recado'];
$data = $result['data'];
$email = $result['email'];
$remetente = $result['remetente'];
$id = $result['id'];
$idx = $result['idx'];

?>
<table width="100%" border="0" bgcolor="#00FFFF" class="fundo_redondo">
<tr>
<td height="68"> <table width="100%" border="0" class="texto_recados">
<tr>
<td width="4%" height="22"> <div align="left"><font color="#666666">N<font size="3">o</font>me</font><font color="#666666" size="3">:</font></div></td>
<td width="77%"><? print($remetente); ?></td>
<td width="19%"> <div align="center"><? print($data); ?>
</div></td>
</tr>
<tr>
<td height="21"> <div align="left"><font color="#666666" size="3">Email:</font></div></td>
<td><? print($email); ?></td>
<td><div align="right">
<input type="checkbox" name="excluira[]" value="<? print "$idx"; ?>" />
</div></td>
</tr>
</table>
<span><font color="#666666"><? print($recado); ?></font></span></td>
</tr>
</table>
</form>
<? }} if($acao == "apaga_recado") {
include("conecxao/conecta.php");
$excluir = $_POST["excluira"];
foreach($excluir as $registro){
$sql = "delete from recados WHERE idx = $registro";
$rs = mysql_query($sql, $conecxao) or die(mysql_error());
}
header("Location: ?acao=recado&id=$idx_u");
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Da uma olhada nesse script que eu fiz aqui na minha tabela recados tem

id

id_user

recado

data

Todas as informações de formulario estao pra serem enviadas pra mesma pagina

check3.php

<html>
<head><title>Checkbox Delete</title>
<style>td{border:1px solid black;padding:5px;}</style>
</head>
<body>
<?php
//include("conexao.php");
// Nesse caso vou incluir aqui mesmo
$conexao = mysql_connect("localhost","root","vertrigo");
$selecionar_db = mysql_select_db("siteindex"); // Mude para sua database
//--
$usuario = "Hoshoyo"; //Mude de acordo com o Usuario conectado
//--
// Resgatar ID do usuario no db
$dados_usuario = mysql_query("select * from usuarios where usuario='$usuario'");
$dados = mysql_fetch_assoc($dados_usuario);
$id = $dados["id"]; // ID do meu usuario
//--

//Deletar
$deletar_submit = $_POST["deletar_submit"];
$excluir = $_POST["excluir"];
if($deletar_submit)
{
    // Deletar selecionados
    foreach($excluir as $x)
    {
        $del = mysql_query("delete from recados where id='$x'"); // id = id do recado na tabela recados $x = id do checkbox
    }
    echo "Recado(s) deletado(s)!";
}

// Resgatar recados do usuario
$recados_query = mysql_query("select * from recados where id_user='$id'"); // seleciona onde o id é do usuario


// Mostrar recados com checkbox
echo "<table>
<form action=\"\" method=\"post\">
";
while($linha = $recados_db = mysql_fetch_assoc($recados_query))
{
$id_recado = $recados_db["id"]; // ID Do recado
$recado = $recados_db["recado"]; // recado em si
// $data = $recados_db["data"]; // data se quiser
?>
<tr>
    <td><input type="checkbox" name="excluir[]" value="<?php echo $id_recado; ?>"></td>
    <td><?php echo $usuario; ?></td>
    <td><?php echo $recado; ?></td>
</tr>
<?php } echo "<input type=\"submit\" name=\"deletar_submit\" value=\"Deletar recados\"></form></table>";
?>

</body>
</html>

Editado por Hoshoyo
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não entendi muito bem seu código, algumas variáveis ou a função de algumas coisas, enfim, montei pra você um script funcionando, se algo não está de acordo porque eu não entendi direito você deve adapta-lo, mas está funcionando perfeitamente.

É feita uma listagem de toda a tabela e as que você marcar o checkbox serão excluídas todas de umas vez.

O código ficou meio confuso porque estava com pressa. Mas deve te ajudar. Portanto ficou assim:

<?

include("conecxao/conecta.php");

// Recebe os valores das checkbox´s

$Qtd = $_POST["Quantidade"];

$var1 = del_;

$num=1;

for($min=1;$min<=$Qtd; $min++) {

$valor1=$_POST[$var1.$num];

$ValorFinal = $valor1;

mysql_query("delete from recados WHERE id = ".$ValorFinal."");

$num++;

}

$query = mysql_query("SELECT * FROM recados");

$Quant = mysql_num_rows($query);

echo "<form action=\"\" method=\"POST\" name=\"apaga\">

<table width=\"100%\" border=\"0\" bgcolor=\"#00FFFF\" class=\"fundo_redondo\" cellspacing=\"2\" cellpadding=\"2\">";

$i = 1;

while($result = mysql_fetch_array($query)) {

$recado = $result['recado'];

$data = $result['data'];

$email = $result['email'];

$remetente = $result['remetente'];

$id = $result['id'];

$idx = $result['idx'];

echo "

<tr>

<td height=\"68\"> <table width=\"100%\" border=\"0\" class=\"texto_recados\">

<tr>

<td width=\"4%\" height=\"22\"> <div align=\"left\"><font color=\"#666666\">Nome: </font></div></td>

<td width=\"77%\">$remetente</td>

<td width=\"19%\"> <div align=\"center\">$data</div></td>

</tr>

<tr>

<td height=\"21\"> <div align=\"left\"><font color=\"#666666\" size=\"3\">Email:</font></div></td>

<td>$email</td>

<td><div align=\"right\">

<input type=\"checkbox\" name=\"del_".$i++."\" value=\"$id\" />

</div></td>

</tr>

</table>

<span><font color=\"#666666\">$recado</font></span></td>

</tr>";

}

echo "

<tr>

<td>

<input type=\"hidden\" name=\"Quantidade\" id=\"Quantidade\" value=\"$Quant\">

<input type=\"submit\" name=\"button\" id=\"button\" value=\"Apagar\">

<input type=\"reset\" name=\"button2\" id=\"button2\" value=\"Cancelar\">

</td>

</tr>

</table></form>";

?>

Espero ter ajudado.

Depois posta ai se funcionou

Abrax

Link para o comentário
Compartilhar em outros sites

  • 0

Ola galera obirgado Hoshoyo consegui adicionar seu script no meu site, fiz algumas modificaçoes. e obrigados a todos.

Se alguém quiser ver como ficou ta ae, por enquanto entra, pois ainda to adicionando a segurança ao site.

http://tonelotos.xp3.biz/index.php?acao=in...;perfil=recados

Link para o comentário
Compartilhar em outros sites

  • 0
Ola galera obirgado Hoshoyo consegui adicionar seu script no meu site, fiz algumas modificaçoes. e obrigados a todos.

Se alguém quiser ver como ficou ta ae, por enquanto entra, pois ainda to adicionando a segurança ao site.

http://tonelotos.xp3.biz/index.php?acao=in...;perfil=recados

Fico feliz em poder ajudar, o seu site ta ficando bacana, continua estudando e trabalhando nele!

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Poderia ficar assim:

CODE
$Recados = $_POST["Recado"];
foreach($excluir as $registro){
$sql = "delete from recados WHERE idx IN ($registro) ";
$rs = mysql_query($sql, $conecxao);
}
header("Location: index.php?acao=recados&idx=$id_login");

Perceba que o header tem que vir depois do foreach, pois ele é um laço e se o header estiver dentro dele, será executado já na primeira ação do foreach.

Valeu cara, aqui funcionou perfeitamente, utilizei o mesmo código para Apagar, Marcar como lido e Marcar como não Lido.. abaixo está o meu código...

<?
if(isset($_POST['message_action'])){


// função que exclui as mensagens selecionadas
if($_POST['message_action'] == "delete"){
$msg = $_POST["messages_ids"];
foreach($msg as $id){
    mysql_query("DELETE FROM `messages` WHERE `id`='$id' AND `to`='$user_auth->username'");
     }
header("Location: index.php?mode=messages");
}

// função que marca como lido as mensagens selecionadas
if($_POST['message_action'] == "mark-read"){
$msg = $_POST["messages_ids"];
foreach($msg as $id){
    mysql_query("UPDATE `messages` SET `read`='1' WHERE `id`='$id' AND `to`='$user_auth->username'");
     }
header("Location: index.php?mode=messages");
}

// função que marca como não-lida as mensagens selecionadas
if($_POST['message_action'] == "mark-unread"){
$msg = $_POST["messages_ids"];
foreach($msg as $id){
    mysql_query("UPDATE `messages` SET `read`='0' WHERE `id`='$id' AND `to`='$user_auth->username'");
     }
header("Location: index.php?mode=messages");
}

}
?>
<?
        <form action="index.php?a=messages&f=update" method="post">

<input name="messages_ids[]" type="checkbox" style="display: none;" value="1"/>
<input name="messages_ids[]" type="checkbox" style="display: none;" value="2"/>
<input name="messages_ids[]" type="checkbox" style="display: none;" value="3"/>

<table>
        <tr>
            <td>
                Selecione: 
                    <select name="message_action">
                        <option value="delete">Remover</option>
                        <option value="mark-read">Marcar como lido</option>
                        <option value="mark-unread">Marcar como não lido</option>
                    </select>
                                <input id="submit"  type="submit" value="OK"/>
            </td>
        </tr>
</table>
</form>
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...