Mulambo 1 Denunciar post Postado Setembro 7, 2010 Olá gente! tudo bom? Bom o que tenho hoje é uma dúvida bem chatinha relacionada a multiplo update. Vou explicar com funciona o meu sistema aqui: Eu listo todos os usuarios de um banco de dados, e nessa lista tenho um campo select para atualizar o status de cada usuario, o que acontece é o seguinte, vamos imaginar que eu tenho 4 usuarios na minha database (Fulano,Ciclano,fulano2 e ciclano2), com meu script eu consigo listar todos eles,exibindo dessa forma Listar: | Nome | Status Atual | Definir Status como: | | Fulano | Aberto | ==========SELECT============| | Ciclano | Fechado | ==========SELECT============| | Fulano2 | aguardadndo | ==========SELECT============| | Ciclano2 | Aberto | ==========SELECT============| Para alterar o status eu uso o input SELECT, onde fica salvo os 3 tipos de status.. Agora o problema é o seguinte, se eu não escolher nenhuma opção no input SELECT ele faz update em todos os campos e acaba com isso deixando campos em branco, ou mudando status que não deveriam mudar.. oque preciso fazer é um UPDATE somente nos campos que eu quiser alterar o status. Mais como fazer isso? Logo abaixo segue meu código atual: <?php if (!isset($_SESSION)) session_start(); $nivel_necessario = 2; if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) { session_destroy(); header("Location: ?pagina=compras"); exit; } ?> <h1>Gerenciar compras</h1> <?php include ('../config.php'); if(isset($_POST["alterar"]) == true) { { // find out how many records there are to update $size = count($_POST['status']); // start a loop in order to update each record $i = 0; while ($i < $size) { // define each variable $statusinfo= $_POST['status'][$i]; $id = $_POST['id'][$i]; $query = "UPDATE usuarios SET `status` = '$statusinfo',`pagamento`= 'vazio' WHERE `id` = '$id' LIMIT 1"; mysql_query($query) or die ("Error in query: $query"); print "$statusinfo<br /><br /><em>Updated!</em><br /><br />"; ++$i; } mysql_close(); }} $result = mysql_query("SELECT * FROM usuarios ORDER BY id"); $i = 0; ?> <form name='namestoupdate' method='post' action='paginas/update.php'> <table> <thead> <tr> <td><b>Usuário</b></td> <td><b>Quantidade</b></td> <td><b>Forma de pagamento:</b></td> <td><b>Status atual</b></td> <td><b>Definir Status como</b></td> </tr> </thead> <tbody> <?php while ($status = mysql_fetch_array($result)) { ?> <tr> <td><?php print "<input type='hidden' name='id[$i]' value='{$status['id']}' />"; ?><?php print $status['nome'];?></td> <td><?php print $status['valor'];?></td> <td><?php print $status['pagamento'];?></td> <td> <input type="text" value="<?php echo $status['status']; ?>" disabled /> </td> <td> <?php print "<select name='status[$i]' id='status'>";?> <option>Selecione um status</option> <option value='Aberto'>Pedido em aberto</option> <option value='Aguardando'>Aguardando pagamento</option> <option value='Fechado'>Pedido Finalizado</option> </select> </td> </tr> </tbody> <?php ++$i; } mysql_close(); ?> </table> <input type='submit' value='submit' name='alterar' /> </form> Agradeço as ajudas! Att,Mulambo Compartilhar este post Link para o post Compartilhar em outros sites
mad.onion 0 Denunciar post Postado Setembro 7, 2010 É só você verificar se o campo select não foi selecionado. Se não foi, não faça o update. Dê um value para a opção "Selecione um status" e verifique se é ela que veio no submit. Se vier, significa que o usuário não selecionou nada. Simples assim. Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Setembro 10, 2010 Nossa, nem pensei nisso, puro vacilo meu!! Obrigado! Só uma coisa que não sei... é porque só atualiza o primeiro registro exibido, posso exibir os registro tanto pelo name,id, ou qualquer outro campo da tabela.. o 1º registro é que é atualizado!! Procurei muito, e não achei!! alguem sabe? Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Setembro 12, 2010 Podem trancar o tópico, problema resolvido!!! Compartilhar este post Link para o post Compartilhar em outros sites