Ir para conteúdo

POWERED BY:

Arquivado

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

Alaerte Gabriel

Selecionando múltiplos registros para exclusão

Recommended Posts

Olá pessoal, irei tentar passar aqui a lógica de como podemos selecionar vários registros para exclusão, através de checkbox, tipo aqueles recadinhos do orkut que vocês selecionam e apagam todos os selecionados, vamos lá ?

 

Criando a tabela:

 

CREATE  TABLE `dados` ( `id_dados` SMALLINT  UNSIGNED NOT  NULL ,
`nome` VARCHAR( 40  )  NOT  NULL ,
`idade` VARCHAR( 3  )  NOT  NULL ,
PRIMARY  KEY (  `id_dados`  ) ) ENGINE  =  MYISAM     
INSERT INTO `dados` (`id_dados`, `nome`, `idade`) VALUES ('1', 'Alaerte Gabriel', '18'), ('2', 'Pedro', '20');
INSERT INTO `dados` (`id_dados`, `nome`, `idade`) VALUES ('3', 'Bruna', '18'), ('4', 'Evandro', '18');

 

Criamos a tabela e inserimos alguns dados para nosso projeto.

vamos agora para a parte que trará os dados, onde teremos os checkbox para marcar-mos os registros desejados para exclusão:

 

index.php

<?php
//Conectando com o banco de dados MysQL e selecionando a base de dados.
$con=mysql_connect('localhost','USUARIO_DB','SENHA_DB')or die('Erro na conexção, verifique os dados'.mysql_error($con));
mysql_select_db('BASE_DE_DADOS',$con)or die('Erro ao selecionar a tabela'.mysql_error($con));
//Varrendo a tabela dados, para pegar todos os dados.
$selecao=mysql_query("SELECT id_dados,nome,idade FROM dados")or die('Erro na consulta SQL'.mysql_error($con));

/*Veremos se a consulta retornou algum registro com a função, mysql_num_rows...
se sim, ou seja, se for diferente de 0 o número de registros, ele tras os dados encontrados, através de um loop WHILE.
*/
if(mysql_num_rows($selecao) != 0){
/* Buscamos os dados e jogamos na função mysql_fetch_row, em que. $ver[0] o 0 reprezenta o
primeiro campo da tabela dados e o $ver[1] o 1 reprezenta o segundo campo da tabela dados
pois o PHP começa as contagens do 0... */
   echo "<form name=\"exclusao\" method=\"POST\" action=\"excluir.php\">";

   while($ver=mysql_fetch_row($selecao)){
   echo "Excluir : $ver[1]<input type=\"checkbox\" name=\"excluir[]\" value=\"$ver[0]\" /><br />";
   }

   echo "<input type=\"submit\" name=\"ok\" value=\"Excluir\" /></form>";
//Libramos a memória ocupada pela consulta com o free_result.
mysql_free_result($selecao);
//Fechamos a conexão com a base de dados após as operações.
mysql_close($con);
}
?>

Feito esta parte, camos para excluir.php, que se encarregará de excluir todos os dados selecionados na página index.php:

 

excluir.php

<?php
//Conectando com o banco de dados MysQL e selecionando a base de dados.
$con=mysql_connect('localhost','USUARIO_DB','SENHA_DB')or die('Erro na conexção, verifique os dados'.mysql_error($con));
mysql_select_db('BASE_DE_DADOS',$con)or die('Erro ao selecionar a tabela'.mysql_error($con));

//Verificamos se o método enviado pelo formulário é realmente o POST.
if($_SERVER['REQUEST_METHOD']=='POST'){
//Se sim, pegamos os dados em forma de vetor (array) e passamos para a variável $apagar.
  $apagar=$_POST['excluir'];
  /*Dou um loop para pegar os arrays e comparar com o valor de $i
  Aqui que está o segredo da coisam se a variável $i que inicia em 0 for menor que os dados contidos
  no array $apagar, ele vai incrementar até chegar ao valor, repetindo dentro do laço a função para deletar
  a quantidade correta de dados selecionados...
  */
  for($i=0; $i<count($apagar); $i++){
   $sql=mysql_query("DELETE FROM dados WHERE id_dados='$apagar[$i]'")or die('Erro ao apagar os dados'.mysql_error($con));
  }
  /* verificamos com um IF simplificado se os dados foram excluídos. */
  ($sql) ? (print('Dados excluídos com êxito !')) : die('Erro ao excluir os dados.');
}
?>

Bem pessoal, espero que vocês tenham gostado, se tiverem dúvidas podem postar aqui mesmo http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Até a próxima.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara so não entendi essa parte

/* verificamos com um IF simplificado se os dados foram excluídos. */

($sql) ? (print('Dados excluídos com êxito !')) : die('Erro ao excluir os dados.');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá rodrigopluz, seja bem vindo ao iMasters.

 

Vamos lá ?

 

É a mesma coisa de um IF comum, só que simplificado.

 

Se a variável

$sql
for true (verdadeira) ele executa o print, caso seja false, ele para o script exibindo a mensagem de erro. nade de mais.

 

($sql) ? (print('Dados excluídos com êxito !')) : die('Erro ao excluir os dados.');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tal usar um IN() ?

 

   $sql = "DELETE FROM dados WHERE id_dados IN ('".implode( ',',$_POST['excluir'] )."')";
   $query = mysql_query( $sql )or die( 'Erro ao apagar os dados '.mysql_error($con) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode usar PDO também, pode excluir vários resultados de uma vez, só setando um array de valores

Claro... aproveita e faça, poste aqui a versão em OOP

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.