MBarros 0 Denunciar post Postado Dezembro 26, 2009 Pessoal, Possuo o seguinte formulário que deveria executar a seguinte ação: ao selecionar o checkbox, faço as alterações nos campos referentes ao checkbox selecionado e clicando no botão submit, ele atualiza os dados no BD e envia as imagens para uma pasta. Mas isso não está acontecendo. Seguem abaixo os códigos: <?php mysql_connect("localhost", "root", "") or die("Não foi possivel conectar ao servidor."); mysql_select_db("lab") or die("Não foi possível selecionar o Banco de Dados."); $sql = "SELECT * FROM trabalhos ORDER BY id ASC"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta."); echo "<form action='alterar-checkbox.php' method='post' enctype='multipart/formdata'>\n"; echo "<fieldset>\n"; while ($linha = mysql_fetch_array($resultado)) { echo "<input type='checkbox' name='op[]' value='{$linha['id']}' /> Editar ID {$linha['id']}\n"; echo "<label for='id'>ID: </label>\n"; echo "<input type='text' name='id' value='{$linha['id']}' />\n"; echo "<label for='imagens'>Imagens: </label>\n"; echo "<input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n"; echo "<label for='titulo'>Título: </label>\n"; echo "<input type='text' name='titulo' value='{$linha['titulo']}'/>\n"; echo "<label for='resumo'>Resumo: </label>"; echo "<input type='text' name='resumo' value='{$linha['resumo']}' />\n"; echo "<label for='producao'>Produção: </label>"; echo "<textarea name='producao' cols='50' rows='10'>{$linha['producao']}</textarea>\n"; echo "<label for='detalhes'>Detalhes: </label>\n"; echo "<textarea name='detalhes' cols='50' rows='10'>{$linha['detalhes']}</textarea>\n"; } echo "<input type='submit' name='atualizar' value='Atualizar' />"; echo "</fieldset>\n"; echo"</form>\n"; ?> <?php $numeroCampos = 4; $caminho = "uploads/"; $substituir = false; $id = $_REQUEST['id']; $nomeArquivo = $_FILES["imagens"]["name"]; $imagens = implode(' ', $nomeArquivo); $titulo = $_REQUEST['titulo']; $resumo = $_REQUEST['resumo']; $producao = $_REQUEST['producao']; $detalhes = $_REQUEST['detalhes']; mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor."); mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados"); @$select = $_POST['op']; if (!empty($_POST['op'])) { if ($select == 'op[]') { if (count(@$_POST['op']) > 0) { foreach ($_POST['op'] AS $id) { for ($i = 0; $i < $numeroCampos; $i++) { $nomeArquivo = $_FILES["imagens"]["name"][$i]; $nomeTemporario = $_FILES["imagens"]["tmp_name"][$i]; if (!empty($nomeArquivo)) { $erro = false; if (file_exists($caminho . $nomeArquivo) AND !$substituir) { $erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe"; } if (!$erro) { move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo)); } } else { echo "Problema"; } } $sql = "UPDATE `trabalhos` SET id='".$id."', imagens='".$imagens."', titulo='".$titulo."', resumo='".$resumo."', producao='".$producao."', detalhes='".$detalhes."' WHERE id=".$op; $resultado = mysql_query($sql) or die ("Erro ao alterar os dados."); header("Location: areausuario.php"); exit(); } } } } else { echo "<h2>Erro!</h2>"; echo "<p>Selecione uma das entradas antes de clicar na opção desejada.</p>"; echo "Clique <a href='areausuario.php'>aqui</a> para voltar."; } ?> Quero atualizar os dados referentes ao checkbox selecionado, mas não estou obtendo êxito. Podem me ajudar? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 26, 2009 ao selecionar o checkbox, faço as alterações nos campos referentes ao checkbox selecionado e clicando no botão submit, ele atualiza os dados no BD e envia as imagens para uma pasta. Mas isso não está acontecendo. Isto o que? As alterações nos campos ou a atualização dos dados no BD? Aparece algum erro? Que erro? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Dezembro 26, 2009 Nenhum dos dois, se não seleciono nenhum checkbox aparece um erro informando que não selecionei, até ai correto. Mas, se efetuo as alterações nos campos e clico no submit, ele aparentemente executa todo o processo e ao ir para a pagina que quero, é possível notar que nada foi alterado. Nem as imagens no BD muito menos as alterações. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 26, 2009 Faça um debug básico: if (!empty($_POST['op'])) echo 'entrei no primeiro if <br/>'; { if ($select == 'op[]') echo 'entrei no segundo if <br/> '; { Veja se aparece alguma das mensagens. Provavelmente não está entrando no segundo IF. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Dezembro 26, 2009 Carlos, Fiz o debug e, como você disse, não está mesmo entrando no segundo if. A mensagem de erro: entrei no primeiro ifProblemaProblemaProblemaProblema Notice: Undefined variable: op in M:\Sites\mbarros\admin\alterar-checkbox.php on line 53 Erro ao alterar os dados. A linha 53: $sql = "UPDATE `trabalhos` SET id='".$id."', imagens='".$imagens."', titulo='".$titulo."', resumo='".$resumo."', producao='".$producao."', detalhes='".$detalhes."' WHERE id=".$op; <?php $numeroCampos = 4; $caminho = "uploads/"; $substituir = false; $id = $_REQUEST['id']; $nomeArquivo = $_FILES["imagens"]["name"]; $imagens = implode(' ', $nomeArquivo); $titulo = $_REQUEST['titulo']; $resumo = $_REQUEST['resumo']; $producao = $_REQUEST['producao']; $detalhes = $_REQUEST['detalhes']; mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor."); mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados"); @$select = $_POST['op']; if (!empty($_POST['op'])) echo "entrei no primeiro if"; { if ($select == 'op[]') echo "entrei no primeiro if"; { if (count(@$_POST['op']) > 0) { foreach ($_POST['op'] AS $id) { for ($i = 0; $i < $numeroCampos; $i++) { $nomeArquivo = $_FILES["imagens"]["name"][$i]; $nomeTemporario = $_FILES["imagens"]["tmp_name"][$i]; if (!empty($nomeArquivo)) { $erro = false; if (file_exists($caminho . $nomeArquivo) AND !$substituir) { $erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe"; } if (!$erro) { move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo)); } } else { echo "Problema"; } } $sql = "UPDATE `trabalhos` SET id='".$id."', imagens='".$imagens."', titulo='".$titulo."', resumo='".$resumo."', producao='".$producao."', detalhes='".$detalhes."' WHERE id=".$op; $resultado = mysql_query($sql) or die ("Erro ao alterar os dados."); header("Location: areausuario.php"); exit(); } } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Dezembro 26, 2009 Pessoal, eu troquei absolutamente tudo, visto que a outra forma eu não obtinha resultado. Nesta também não MAS, meu unico problema está sendo na linha 65: Notice: Undefined index: id in M:\Sites\mbarros\admin\alterar-checkbox.php on line 65 Erro ao alterar os dados. A linha 65: $sql = "UPDATE `trabalhos` SET id='".$id."', imagens='".$imagens."', titulo='".$titulo."', resumo='".$resumo."', producao='".$producao."', detalhes='".$detalhes."' WHERE id=".$_GET['id']; O que eu pude notar é que as ações dos dois submits estão corretas. O que não estou conseguindo fazer é pegar o valor do checkbox para realizar as alterações. Segue o novo formulário, agora com dois submits, um para enviar o formulario e continuar editando e o outro para enviar o formulário e voltar para a página principal <form action="alterar-checkbox.php" method="post" enctype="multipart/formdata"> <fieldset> <?php mysql_connect("localhost", "root", "") or die("Não foi possivel conectar ao servidor."); mysql_select_db("lab") or die("Não foi possível selecionar o Banco de Dados."); $sql = "SELECT * FROM trabalhos ORDER BY id ASC"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta."); while ($linha = mysql_fetch_array($resultado)) { echo "<input type='checkbox' name='op[]' /> Editar ID {$linha['id']}\n"; echo "<label for='id'>ID: </label>\n"; echo "<input type='text' name='id' value='{$linha['id']}' />\n"; echo "<label for='imagens'>Imagens: </label>\n"; echo "<input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n <input type='file' name='imagens[]' />\n"; echo "<label for='titulo'>Título: </label>\n"; echo "<input type='text' name='titulo' value='{$linha['titulo']}'/>\n"; echo "<label for='resumo'>Resumo: </label>"; echo "<input type='text' name='resumo' value='{$linha['resumo']}' />\n"; echo "<label for='producao'>Produção: </label>"; echo "<textarea name='producao' cols='50' rows='10'>{$linha['producao']}</textarea>\n"; echo "<label for='detalhes'>Detalhes: </label>\n"; echo "<textarea name='detalhes' cols='50' rows='10'>{$linha['detalhes']}</textarea>\n"; } echo "<input type='submit' name='continuar' value='Salvar e Continuar Editando'>"; echo "<input type='submit' name='salvar' value='Salvar' />"; echo "</fieldset>\n"; ?> </fieldset> </form> E o arquivo alterar-checkbox.php: <?php switch (get_post_action('continuar', 'salvar')) { case 'salvar': // save the work and redirect if (!empty($_POST['op'])) { foreach ($_POST['op'] AS $id) { $ida = $_POST['op']; $numeroCampos = 4; $caminho = "uploads/"; $substituir = false; $id = $_REQUEST['id']; $nomeArquivo = $_FILES["imagens"]["name"]; $imagens = implode(' ', $nomeArquivo); $titulo = $_REQUEST['titulo']; $resumo = $_REQUEST['resumo']; $producao = $_REQUEST['producao']; $detalhes = $_REQUEST['detalhes']; mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor."); mysql_select_db("portfolio") or die ("Não foi possível selecionar a base de dados"); for ($i = 0; $i < $numeroCampos; $i++) { $nomeArquivo = $_FILES["imagens"]["name"][$i]; $nomeTemporario = $_FILES["imagens"]["tmp_name"][$i]; if (!empty($nomeArquivo)) { $erro = false; if (file_exists($caminho . $nomeArquivo) AND !$substituir) { $erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe"; } if (!$erro) { move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo)); } } else { echo "Problema"; } } $sql = "UPDATE `trabalhos` SET id='".$id."', imagens='".$imagens."', titulo='".$titulo."', resumo='".$resumo."', producao='".$producao."', detalhes='".$detalhes."' WHERE id=".$_GET['id']; $resultado = mysql_query($sql) or die ("Erro ao alterar os dados."); header("Location: alterar-trab.php"); } } else { //não pode enviar o form echo "<h2>Erro!</h2>"; echo "<p>Selecione uma das entradas antes de clicar na opção desejada.</p>"; echo "Clique <a href='areausuario.php'>aqui</a> para voltar."; } break; case 'continuar': // save the work and keep editing break; default: // no action sent echo "Erro!"; } ?> <?php function get_post_action($name) { $params = func_get_args(); foreach ($params AS $name) { if (isset($_POST[$name])) { return $name; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
RobertoPC 0 Denunciar post Postado Dezembro 26, 2009 O method do formulário está definido como POST, e na linha 65 você está trazendo como $_GET['id'] e no outro arquivo você está puxando $id com REQUEST. Como está dizendo o erro undefined index, no caso esse índice indefinido é no GET. Verifica essa passagem de dados. Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Dezembro 28, 2009 Nada feito até agora, o que estou querendo fazer e não estou conseguindo é pegar o valor do checkbox selecionado, no caso, um id por exemplo, e ao efetuar as alterações e clicar no submit, o script realizar as alterações apenas do checkbox selecionado. Não estou obtendo êxito, ou seja, não consigo com que o script pegue o valor do checkbox como ID para que as alterações sejam feitas. :( <?php mysql_connect("localhost", "root", "") or die ("Não foi possível conectar-se ao Servidor."); mysql_select_db("lab") or die ("Não foi possível conectar-se o Banco de Dados."); $dados = mysql_query("SELECT * FROM empregados") or die ("Não foi possível realizar a consulta."); echo "<form method='POST' action='alterar-bd.php' enctype='multipart/formdata'>"; while($info = mysql_fetch_array($dados)) { echo "<input type='checkbox' name='op[]' id='op' value='$info[id]'>Editar ID: $info[id]\n<br />"; echo "Nome: <input type='text' name='nome' value='$info[nome]' /><br />"; echo "Email: <input type='text' name='email' value='$info[email]' /><br />"; echo "Telefone: <input type='text' name='telefone' value='$info[telefone]' /><br />"; echo "Foto: <input type='file' name='foto' /><br /><br />"; } echo "<input type='submit' name='alterar' value='Alterar'>"; echo "</form>"; ?> <?php if (isset($_POST['op'])) { foreach ($_POST['op'] AS $op) { $alvo = "imagens/"; $alvo = $alvo . basename($_FILES['foto']['name']); @$id = $_REQUEST['id']; $nome = $_REQUEST['nome']; $telefone = $_REQUEST['telefone']; $email = $_REQUEST['email']; $foto = $_FILES['foto']['name']; mysql_connect("localhost", "root", "") or die ("Não foi possível conectar-se ao Servidor."); mysql_select_db("lab") or die ("Não foi possível conectar-se o Banco de Dados."); mysql_query("UPDATE `empregados` SET '$id', '$nome', '$email', '$telefone', '$foto' WHERE id =".$_GET['id']); if (move_uploaded_file($_FILES['foto']['tmp_name'], $alvo)) { echo "O arquivo foi enviado para o Servidor e suas informações foram inseridas no Banco de Dados."; } else { echo "Desculpe, houve um problema ao enviar o arquivo para o Servidor."; } } } else { echo "Você não selecionou nenhum checkbox."; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 28, 2009 foreach ($_POST['op'] AS $op)Aqui é AS com letras minusculas 'as'. E outra: mysql_query("UPDATE `empregados` SET '$id', '$nome', '$email', '$telefone', '$foto' WHERE id =".$_GET['id']); Esse $_GET['id'], ta valendo o que ? Não era pra ser $op ali ? Porque ele que é o código do usuário.E nao use $_REQUEST. Use $_POST Mas tipo cara, você ta querendo alterar tudo de uma vez ? Nao eh mais facil você colocar um link do lado de cada linha, registro, mandando pra uma página que edite somente o que foi clicado mandando o ID do usuário ? Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Dezembro 29, 2009 Muito obrigado à todos que me auxiliaram, Segui a dica do @Dee e ao invés de utilizar um checkbox para cada entrada numa mesma página, criei links para alteração! Simples, e o melhor, funciona! HUAHUAHUAHUAHUA http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif As festividades de fim de ano e o ato necessário de ainda ter mais alguns dias de 'trabalho' não me deixaram pensar! Obrigado a todos e ótimo fim de ano! Evoco os poderes do Tópico Resolvido pelos poderes dos Moderadores! Compartilhar este post Link para o post Compartilhar em outros sites