Ir para conteúdo
Fórum Script Brasil
  • 0

Exclusão item array por id linha tabela html


viniciuscrn

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...