Husky 0 Denunciar post Postado Dezembro 15, 2009 Olá pessoal, estou tentando deletar vários registros de uma vez via checkbox, mas algo esta errado, segue o código: bdRemoveNoticia1.php <form name="Remove" method="post" action="bdRemoveNoticia2.php"> <?php $_con = mysqli_connect( "localhost" , "root" , "root" , "bdnoticias" ); if ( $_con === false ){ echo "Não foi possível canoectar com MySQL"; mysqli_error(); exit(); } $_sql = "SELECT titulo, sessao, data FROM noticia WHERE titulo='" . $_POST[ 'pesquisa' ] . "'"; $_res = mysqli_query( $_con , $_sql ); if ( $_res === false ){ echo "Registro não encontrado<br />"; } else{ while ( $_row = mysqli_fetch_array( $_res ) ){ ?> <input type="checkbox" id="opcao[]" name="opcao[]" value="<?php $_rows[ 'id' ]; ?>"> <?php echo $_row[ 'titulo' ] . " " . $_row[ 'sessao' ] . " " . $_row[ 'data' ] . "<br><br>"; } } ?> <input type="submit" name="remove" value="Remover"> bdRemoveNoticia2.php <?php $_con = mysqli_connect( "localhost" , "root" , "root" , "bdnoticias" ); if ( $_con === false ){ echo "Não foi possível canoectar com MySQL"; mysqli_error(); exit(); } $_res = mysqli_query( $_con , $_sql ); while ( $_row = mysqli_fetch_array( $_res ) ){ $_sql = "DELETE id, titulo, noticia, sessao,data FROM noticia WHERE titulo='" . $_POST[ 'opcao' ] . "'"; } if ( $_res === false ){ echo "Erro ao deletar registro<br />"; } else{ echo "registro deletado com sucesso"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 15, 2009 Olá pessoal, estou tentando deletar vários registros de uma vez via checkbox, mas algo esta errado, segue o código: Amigão, lamento dizer isso mas existem vários erros no seu código, O que está causando o comportamento problemático está aqui: <input type="checkbox" id="opcao[]" name="opcao[]" value="<?php $_rows[ 'id' ]; ?>"> Deveria estar assim: <input type="checkbox" id="opcao[]" name="opcao[]" value="<?php echo $_rows[ 'id' ]; ?>"> Perceba o echo antes do $_rows[ 'id' ]. Apenas colocar o valor entre as tags PHP não fará com que esse apareça no atributo value, é a mesma coisa que fazer o seguinte: $nome; Supondo que a variável $nome contenha o valor João Neto, o fragmento acima não deverá exibir absolutamente nada na tela, uma vez que você não mandou que fosse exibido (usando echo ou print por exemplo). ;) Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 15, 2009 Valeu, mas ainda ta dando erro na hora de deletar o registro... Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 15, 2009 Pq nas condições dos seus If's existem 3 === s ? Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 15, 2009 Pq nas condições dos seus If's existem 3 === s ? Cara, não sei te explicar não, copiei um exemplo do livro. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 15, 2009 Qual erro que aparece? Como ficou o seu código? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 15, 2009 mudei apenas essa linha: <input type="checkbox" id="opcao[]" name="opcao[]" value="<?php echo $_rows[ 'id' ]; ?>"> Ele cai na msg: Erro ao deletar registro. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 15, 2009 Tem mais coisa errada. Você tá executando a query antes de ter a query. Coloque a execução dentro do laço. Veja se fazendo assim insere os dados corretamente no banco. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 15, 2009 Pq nas condições dos seus If's existem 3 === s ? 3 === é o operador de idêntico.http://www.php.net/manual/en/language.operators.comparison.php Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 15, 2009 Coloquei o query dentro do while, agora ele da msg de registro deletado com sucesso, mas o registro permanece no banco.. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 16, 2009 Poste o código como ficou. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 16, 2009 <?php $_con=mysqli_connect("localhost","root","root", "bdnoticias"); if($_con===false){ echo "Não foi possível canoectar com MySQL"; mysqli_error(); exit(); } while($_row=mysqli_fetch_array($_res)){ $_sql="DELETE id, titulo, noticia, sessao,data FROM noticia WHERE titulo='".$_POST['opcao']."'"; $_res=mysqli_query($_con,$_sql); } if($_res===false){ echo "Erro ao deletar registro<br />"; }else{ echo "registro deletado com sucesso"; } ?> coloquei a query antes e depois do delete, deu a mesma coisa... Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 16, 2009 Cara... você tá guardando o id da noticia nos checkbox ne? faça o seguinte: while($_row=mysqli_fetch_array($_res)){ $_sql="DELETE id, titulo, noticia, sessao,data FROM noticia WHERE titulo='".$_POST['opcao']."'"; $_res=mysqli_query($_con,$_sql); } troca por: $_sql="DELETE FROM noticia WHERE id IN ('". implode( ',', POST['opcao']". ')"; $_res=mysqli_query($_con,$_sql); E isso: $_sql = "SELECT titulo, sessao, data FROM noticia WHERE titulo='" . $_POST[ 'pesquisa' ] . "'"; troca por: $_sql = "SELECT id, titulo, sessao, data FROM noticia WHERE titulo='" . $_POST[ 'pesquisa' ] . "'"; Agora, os checkbox servem para deletar várias noticias? e você busca elas pelo titulo ? Após isso, reposte os teus códigos completos.. e diga se retornou algum erro. Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 16, 2009 Deu um erro de sintaxe nessa linha: $_sql="DELETE FROM noticia WHERE id IN ('". implode( ',', POST['opcao']". ')"; Sim, o checkbox é pra deletar vários registros ao mesmo tempo. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 16, 2009 Coloque assim $_sql = "DELETE FROM noticia WHERE id IN ('". implode( ',', POST['opcao'])."')"; Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 16, 2009 Não funcionou, acho que o problema não é o comando DELETE, o problema é que o campo $_POST['opcao'] ta vindo vazio. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 16, 2009 Se você sabe qual o problema, então qual a dificuldade? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Husky 0 Denunciar post Postado Dezembro 16, 2009 Eu não sei pq está vindo vazio. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 16, 2009 2 opções - Nome do campo errado - Não foi marcada nenhuma opção no formulário Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 16, 2009 Tome como base o tutorial: http://forum.imasters.com.br/index.php?/topic/289419-selecionando-multiplos-registros-para-exclusao/ Compartilhar este post Link para o post Compartilhar em outros sites