Nick-pc 0 Denunciar post Postado Janeiro 21, 2010 Tenho o seguite código na página "registros_delete.php": <?php foreach($_POST['checkbox'] as $checks) { $sql = "delete from tabela where id = $checks"; $exe = mysql_query($sql); } ?> E na outra página tenho uma tabela com uma área repetitiva com o seguinte tag ao ldao do id e nome dos campos criados pelo formulário: <input type="checkbox" name="checkbox" id="checkbox" /> e o botão apagar: <form id="form1" name="form1" method="post" action="registros_delete.php"> <input type="submit" name="Submit" id="Submit" value="Apagar" /> </form> Quando vou tentar apagar aparece na nova página a menssagem de erro: Warning: Invalid argument supplied for foreach() in /home/a6977514/public_html/admin/registros_delete.php on line 3 Como resolvo isso e outra dúvida é como posso deixar uma menssagem de validação para os checkboxs que impedi de deixar sem selecionar nenhum campo de seleção? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 22, 2010 O erro do foreach é claro. O argumento passado para o foreach é inválido, ou seja, não é um array. Para evitar isto, antes de fazer o foreach, verifique se a variável é um array, utilizando a função is_array. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Você pode me dar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 <?php if(is_array($_POST['checkbox']) { foreach($_POST['checkbox'] as $checks) { $sql = "delete from tabela where id = $checks"; $exe = mysql_query($sql); } } else { $sql = "delete from tabela where id = ".$_POST['checkbox']; $exe = mysql_query($sql); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 22, 2010 Você pode me dar um exemplo? O name do checkbox tem que ser o mesmo para todos, o que vai mudar é o valor dele <input type="checkbox" name="checkbox" value="mamao">, <input type="checkbox" name="checkbox" value="banana">... ... para que ele se torne um array é necessário que possua mais de um valor após isso você pega o valor referente aos checkbox selecionados da seguinte forma: $checks = $_POST['checkbox']; Lembrando que ele só será um array se houver mais de um checkbox marcado... para deletar das duas formas você deve verificar se é um array ou não com um condicional e utilizar o is_array($checks)... Acho que é isso... Grande abraço, até... O exemplo acima está dizendo tudo... Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 O erro que está dando após tentar apagar: Parse error: syntax error, unexpected '{' in /home/.../.../.../registros_delete.php on line 3 Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Posta a linha 3 aí, como vamos saber ? Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 É a linha depois de if(is_array($_POST['checkbox']). Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Eh que faltou um parenteses. Desculpa o erro foi meu: if(is_array($_POST['checkbox'])) // aqui faltou. { Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Agora está dando os seguintes erros: Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/.../.../.../registros_delete.php on line 21 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/.../.../.../registros_delete.php on line 21 Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Agora ja eh outra coisa. Erro de login no seu banco de dados, confira o Login e a Senha. Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Certo consegui arrumar colocando o require_once e chamar a página com os dados da conexão. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Quer que eu traduza os erros para você ? ¬¬ Erro1: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/a6977514/public_html/admin/registros_delete.php on line 21 Acesso Negado para o Usuário Nobody Erro2: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/a6977514/public_html/admin/registros_delete.php on line 21 Um link para conexão não pode ser estabelecido Verique seu usuário e senha para conectar no banco no seu PHP: mysql_connect() Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Agora não tem nenhum erro, mas o registro não está sendo exluido. Eu mando apagar e é direcionado para a página de exclusão em branco. Compartilhar este post Link para o post Compartilhar em outros sites
tarilonte 0 Denunciar post Postado Janeiro 22, 2010 Se quer apagar diversos registros de uma vez, não vejo vantagem em mandar os IDs em um array pra depois fazer uma requisição em cada loop. Que tal você gravar os IDs em uma string separando cada ID por vírgula e em registros_delete.php colocar: $sql = "delete from tabela where id IN ($checks"); $exe = mysql_query($sql); Assim não precisa de Array nem loop, e apaga todos os registros de uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 posta o que você fez aí Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Se quer apagar diversos registros de uma vez, não vejo vantagem em mandar os IDs em um array pra depois fazer uma requisição em cada loop. Que tal você gravar os IDs em uma string separando cada ID por vírgula e em registros_delete.php colocar: $sql = "delete from tabela where id IN ($checks"); $exe = mysql_query($sql); Assim não precisa de Array nem loop, e apaga todos os registros de uma vez. Você sabe como faço para receber uma menssagem caso nenhum checkbox estiver marcado e dar um exemplo do caso que você citou de não usar array. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Viu Nick, continua de onde você estava, esta forma que o Tarilonte falou já está resolvida aqui: <?php if(is_array($_POST['checkbox'])) { foreach($_POST['checkbox'] as $checks) { $sql = "delete from tabela where id = $checks"; $exe = mysql_query($sql); } } else { $sql = "delete from tabela where id = ".$_POST['checkbox']; $exe = mysql_query($sql); } ?> Se você quer verificar se algum checkbox foi checado ou não. Ou você faz em javascript ou faz assim antes desse if: if($_POST['checkbox'] == "") { echo "Você não selecionou nenhum checkbox"; } else { if(is_array($_POST['checkbox'])) { foreach($_POST['checkbox'] as $checks) { $sql = "delete from tabela where id = $checks"; $exe = mysql_query($sql); } } else { $sql = "delete from tabela where id = ".$_POST['checkbox']; $exe = mysql_query($sql); } } Compartilhar este post Link para o post Compartilhar em outros sites
Nick-pc 0 Denunciar post Postado Janeiro 22, 2010 Não está apagando e nem funcionado a menssagem caso nenhum checkbox esteja desmarcado, só aparece uma pagina com "Você não selecionou nenhum checkbox". Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 22, 2010 Poste como você gera o HTML do formulário, onde você cria os checkbox. Compartilhar este post Link para o post Compartilhar em outros sites