Unwanted loop behavior mysql_fetch_assoc

0

I'm having problems in a while loop where it has a mysql_fetch_assoc function that retrieves a value from a column in a table called requests in the delivered column.

I made a if to see if it has a yes' s' in the column that was delivered, that made some changes with JavaScript that changes some colors and I put a button written 'request already delivered' that when clicked puts a value 's 'in the column delivered in the Orders table.

The big problem with the code is that if you click the 'already delivered request' button of the last retrieved line, even if the other lines do not have the 's' they get the JavaScript markup I made as if it was already delivered.

<?php

include 'conn.php';

$query_select = "SELECT cliente.id_cliente, cliente.nome, cliente.telefone, cliente.endereco, cliente.bairro, cliente.email, pedidos.id_pedido, pedidos.produto, pedidos.qtde, pedidos.preco,
                    pedidos.registro, pedidos.observ, pedidos.datahr, pedidos.entregue FROM cliente, pedidos WHERE cliente.id_cliente = pedidos.id_cliente";

$result = mysql_query($query_select, $connect);

if(mysql_num_rows($result) == 0){

    echo '<div class="sem-pedidos">Sem pedidos para Acompanhamento.</div>';
    exit;
}


while ($row=mysql_fetch_assoc($result)) {


?>

        <div class="pedido">
            <div class="nome-cliente" style="width:250px; float:left"><strong><?php echo mb_strtoupper($row['nome']); ?></strong></div>
            <div class="registered" style="width:300px;float:left"><i>Registrado por <?php echo $row['registro'];?> em <?php echo $row['datahr'];?></i></div>
            <div class="telefone" style="width:200px;"><strong><?php echo $row['telefone']; ?></strong></div>
            <div class="email" style="width:200px;"><?php echo $row['email']; ?></div>
            <div class="produto"><?php echo $row['produto']; ?></div>
            <div class="endereco"><?php echo $row['endereco']; ?></div>
            <div class="bairro"><?php echo $row['bairro']; ?></div>
            <div class="qtde" style="float:left"><strong>Qtde. </strong><?php echo $row['qtde']; ?></div>
            <div class="preco"><?php echo $row['preco']; ?></div>
            <div class="observ"><strong><i>OBS. <?php echo $row['observ']; ?></i></strong></div>
            <div class="status" id="status"><strong>Status:</strong><span class="carrega-status"> Entrega em aberto</span></div>
            <div class="field">

                    <a href="entregue.php?id_pedido=<?php echo $row['id_pedido']; ?>" title="clique se pedido ja foi entregue ao cliente">
                        <img src="bt.jpg" />
                    </a>    


            </div><!-- fim div class field -->

                <?php
                    if($row['entregue'] == "s"){

                        echo '<script>

                                $(".field").remove();
                                $(".carrega-status").addClass("entregue");
                                $(".carrega-status").html(" Pedido ja Entregue");
                                $(".pedido").addClass("entregue-ok");   


                                </script>';

                    }


                ?>


        </div><!-- fim div class pedido -->

<?php 

// finaliza o loop
}
    
asked by anonymous 28.04.2016 / 21:02

1 answer

0

What happens is this: you are setting the javascript for a class (.order, .field). All rows have this same class. To solve you would have to define the javascript by id (# request01, # field01, etc).

This way javascript will only affect that line, not all lines.

  

Edited: Non-javascript version:

<?php

include 'conn.php';

$query_select = "SELECT cliente.id_cliente, cliente.nome, cliente.telefone, cliente.endereco, cliente.bairro, cliente.email, pedidos.id_pedido, pedidos.produto, pedidos.qtde, pedidos.preco,
pedidos.registro, pedidos.observ, pedidos.datahr, pedidos.entregue FROM cliente, pedidos WHERE cliente.id_cliente = pedidos.id_cliente";

$result = mysql_query($query_select, $connect);

if(mysql_num_rows($result) == 0){

    echo '<div class="sem-pedidos">Sem pedidos para Acompanhamento.</div>';
    exit;
}


while ($row=mysql_fetch_assoc($result)) {


    ?>

    <div class="pedido <?php if($row['entregue'] == 's') { echo 'entregue-ok'; } // adiciona a classe entregue ?>">
        <div class="nome-cliente" style="width:250px; float:left"><strong><?php echo mb_strtoupper($row['nome']); ?></strong></div>
        <div class="registered" style="width:300px;float:left"><i>Registrado por <?php echo $row['registro'];?> em <?php echo $row['datahr'];?></i></div>
        <div class="telefone" style="width:200px;"><strong><?php echo $row['telefone']; ?></strong></div>
        <div class="email" style="width:200px;"><?php echo $row['email']; ?></div>
        <div class="produto"><?php echo $row['produto']; ?></div>
        <div class="endereco"><?php echo $row['endereco']; ?></div>
        <div class="bairro"><?php echo $row['bairro']; ?></div>
        <div class="qtde" style="float:left"><strong>Qtde. </strong><?php echo $row['qtde']; ?></div>
        <div class="preco"><?php echo $row['preco']; ?></div>
        <div class="observ"><strong><i>OBS. <?php echo $row['observ']; ?></i></strong></div>

        <?php if($row['entregue'] == "s") { // se estiver entregue, exibe um, senão, exibe outro ?>
        <div class="status" id="status"><strong>Status:</strong><span class="carrega-status entregue"> Pedido ja Entregue</span></div>
        <?php } else { ?>
        <div class="status" id="status"><strong>Status:</strong><span class="carrega-status"> Entrega em aberto</span></div>
        <?php } ?>

        <?php if($row['entregue'] != "s") { // só vai exibir se não estiver entregue ?>
        <div class="field">
            <a href="entregue.php?id_pedido=<?php echo $row['id_pedido']; ?>" title="clique se pedido ja foi entregue ao cliente">
                <img src="bt.jpg" />
            </a>    
        </div><!-- fim div class field -->
        <?php } ?> 

    </div><!-- fim div class pedido -->

    <?php 

                // finaliza o loop
}
    
28.04.2016 / 22:08