Jump to content
Fórum Script Brasil
  • 0

Exclusão item array por id linha tabela html


viniciuscrn

Question

Pessoal,

é o seguinte, estou construindo um sistema de compras se um supermercado. Os produtos da compra são capturados do banco, e são armazenados apenas em um array.

O problema é que posso adicionar um mesmo produto na comppra várias vezes, e como faço para excluir apenas um deles?

tem como capturar o id da linha da tabela html gerada a cada loop?

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Veja o problema é justamente este, como o carrinho de compras possui vários produtos do mesmo, e estes vão sendo passados no leitor de código de barras, um produto pode ser passado no inicio, e outro do mesmo no final da compra. mas se voce quiser escluir apenas um, passando o id ele vai excluir todos aqueles produtos.

Então Como os produtos são descriminados em uma tabela, quero saber se com PHP tem como capturar o id apenas da linha da tabela.

Link to comment
Share on other sites

  • 0

Esta é a tabela:

<table width="880" align="center" class="bordasimples">

                    <tr>
                        <th width="300" align="center">Descri&ccedil;&atilde;o do Produto</th>
                        <th width="178" align="center">Pre&ccedil;o (R$)</th>
                        <th width="147" align="center">Quantidade</th>
                        <th width="130" align="center">Sub Total (R$)</th>
                        <th width="121" align="center">A&ccedil;&atilde;o</th>
                    </tr>
                    <?php
                    if (isset($_POST['produtos'])) {

                        $i = (!isset($_SESSION['produtos']) ) ? 1 : ( count($_SESSION['produtos']) + 1 );
                        $_SESSION['produtos'][$i] = $_POST['produtos'];
                       
                       

                        for ($k = sizeof($_SESSION['produtos']); $k > 0; $k--) {
                            ?>
                            <form name="form" method="post">
                                <input type="hidden" name="idproduto" value="<?php print_r($_SESSION['produtos'][$k]['idproduto']); ?>"/>
                                <tr bgcolor="#FFFFFF">
                                    <td><?php print_r($_SESSION['produtos'][$k]['descricao']); ?></td>
                                    <td align="center"><?php print_r($_SESSION['produtos'][$k]['preço']); ?></td>
                                    <td align="center"><?php print_r($_SESSION['produtos'][$k]['quant']); ?></td>
            <?php
            $_SESSION['produtos'][$k]['subtotal'] = $_SESSION['produtos'][$k]['preço'] * $_SESSION['produtos'][$k]['quant'];
            ?>
                                    <td align="center"><?php echo number_format(($_SESSION['produtos'][$k]['subtotal']), 2, '.', '.'); ?></td>
                                    <td align="center"><input type="submit" value="Retirar" onClick="Enviar(0);"/></td>
            <?php $total = $_SESSION['produtos'][$k]['subtotal'] + $total; ?>

                                </tr>
    

            <?php
        }
        ?>
                            <center>
                                TOTAL: <input name="total" type="text" value="<?php echo number_format($total, 2, '.', '.'); ?>" size="5" class="meuinput"/>  |  
                                <input type="submit" value="Finalizar Compra" onClick="Enviar(1);"/>  |  
                                <input type="submit" value="Cancelar Compra" onClick="Enviar(2);"/>
                            </center>
                            <hr>

                        </form>
        <?php
    }
} //FIM ELSE
?>
            </table>
O arquivo para retirar um produto é este:
<?php
session_start();
$idproduto = $_POST['idproduto'];
    $cont = 0;
     for( $i = 0; $i < sizeof( $_SESSION['produtos'] ); ++$i ){
          if(!in_array($idproduto,$_SESSION['produtos'][$i]) ){
              $_SESSION['prod'][$i] = $_SESSION['produtos'][$i]; 
              $cont++;
          } 
     }$_SESSION['produtos'] = $_SESSION['prod'];  
     header("Location:index.php?pg=novavenda");
?>

Mas se eu passar o id para excluir, se eu tiver passado 3 produtos separadamente, e depois quero retirar apenas um, não tem como. ELe vai retirar todos os que tem aquele id.

Link to comment
Share on other sites

  • 0

vinicius,

Você já pensou em utilizar uma tabela "temporária" para o carrinho de compras?

Assim sendo, nessa tabela temporária voce utilizaria um ID de sessão para identificar os produtos daquela compra.

E de uma pagina a outra, você apenas passaria esse ID, que poderia ser armazenado até mesmo na sessão no navegador ou em cookies.

Acho que isso pode resolver o seu problema.

Abs.

Link to comment
Share on other sites

  • 0

Refiz um codigo simples para tentar entender como excluir do array. Não consigo excluir também pelo id, vejam o código:

$id = $_GET['id'];
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
Exclui apenas o 1º. Como devo fazer para excluir o produto selecionado? Segue o arquivo que aciona para exclusão:
<form name="form" action="Listar.php" method="post">
        produto: <input type="text" name="codigo" />  |
        Quant: <input type="text" name="quant" size="4" value="1"/>  |
        <input type="submit" value="Adicionar item(s)" />
    </form>
    <a href="Cancelar.php">Cancelar</a>
    <table border="1" width="400">
        <tr>
            <th>Código</th>
            <th>Descrição</th>
            <th>Ação</th>
        </tr>
        
        <?php
        if(isset($_SESSION['carrinho'])){
        for($i = 0;$i<sizeof($_SESSION['carrinho']);$i++){
        $id = $_SESSION['carrinho'][$i][id];
        $desc = $_SESSION['carrinho'][$i][desc];
        
        ?>
        
        <tr>
            <td><?php echo $id;?></td>
            <td><?php echo $desc; ?></td>
            <td><a href="Excluir.php?id=$id">Retirar</a></td>
        </tr>
        
        <?php
        
        }
        }
        ?>
        
    </table>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...