Ir para conteúdo

POWERED BY:

Arquivado

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

Mulambo

[Resolvido] Update multiplo- fazer update em vários registros&#33

Recommended Posts

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

É 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

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

Podem trancar o tópico, problema resolvido!!!

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.