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

limpar array


Carlos Rocha

Pergunta

Ola pessoal.

Tenho o código abaixo de um carrinho de compras.

Quando o cliente marca varios produtos e envia todos, eu crio uma matriz de filtro para saber o valor do campo name="marcado" que é uma checkbox de cada produto que o $_post do form enviou.

Dai eu filtro o array $_post por valor de marcado=On e com os produtos enviados marcado=On, eu faço uma matriz $dados.

Depois, eu jogo essa matriz para o carrinho propriamente dito.

O meu problema é que, caso o cliente marque 3 produtos e depois ele decida voltar e marcar outro produto, o array dados não envia esse outro.

O que eu devo fazer para resolver isso?

Acho que devo ao final do lançamento no carrinho zerar o array $_post e depois enche-lo de novo.

Seria isso? Se sim, como fazer isso?

$dados = filtrar_array_por_valor($_POST, 'marcado', 'on');

               // trocar o for para for each -> para cada indice da array, faça a inserção.
                  for( $i = 0; $i <= count( $dados ); $i++ )
                {
                        if ($dados[ $i ] [ 'condicao' ]=="#" )
                    {
                        echo '<script>
                                     alert("Posição não foi seleciona. \n Por favor, volte selecione!");
                                     document.location="produto_lista_cadastrar.php?acao=mostra_produtos&id_fornece='.$id_fornece.'";
                              </script>';
                              break;
                    }
                        if( !empty( $dados[ $i ] [ 'id_prod' ] ) )
                        {
                          $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] );
                          $R_Query = $MySQL->query( $Query );
                          if( mysql_num_rows( $R_Query ) > 0 )
                          {
                              $preco_calculado = (($dados[ $i ] [ 'novo_imposto' ] * $dados[ $i ] [ 'novo_preco' ]) / 100 ) + $dados[ $i ] [ 'novo_preco' ];
            $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], 1 , $dados[ $i ] [ 'novo_imposto' ], $preco_calculado, $dados[ $i ] [ 'condicao' ] );
                          }
                        }
      
                  }
/*                  delete($dados);
                  $dados= array();
                  print_r($dados);
*/           }

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom.

Fiz assim:

$dados=null;

Funcionou, limpou a array. Porem, surgiu outro problema:

Quando, após declarar a array dados como sendo o filtro do post, dou um print_r no $dados e imprime direitinho.

Porem, quando vejo dentro do for, o $dados [$i] ['id_prod'] não imprime.

O que será que esta de errado?

$dados = filtrar_array_por_valor($_POST, 'marcado', 'on');
print_r($dados);
               // trocar o for para for each -> para cada indice da array, faça a inserção.
                  for( $i = 0; $i <= count( $dados ); $i++ )
                {
print $dados[ $i ] [ 'id_prod' ];
                        if ($dados[ $i ] [ 'condicao' ]=="#" )
                    {
                        echo '<script>
                                     alert("Posição não foi seleciona. \n Por favor, volte selecione!");
                                     document.location="produto_lista_cadastrar.php?acao=mostra_produtos&id_fornece='.$id_fornece.'";
                              </script>';
                              break;
                    }
                       if( !empty( $dados[ $i ] [ 'id_prod' ] ) )
                    {
                      $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] );
                      $R_Query = $MySQL->query( $Query );
                            if( mysql_num_rows( $R_Query ) > 0 )
                          {
                              $preco_calculado = (($dados[ $i ] [ 'novo_imposto' ] * $dados[ $i ] [ 'novo_preco' ]) / 100 ) + $dados[ $i ] [ 'novo_preco' ];
            $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], 1 , $dados[ $i ] [ 'novo_imposto' ], $preco_calculado, $dados[ $i ] [ 'condicao' ] );
                          }
                        }
      
                  }
                  $dados = null;
O print_r($dados) imprime (no exemplo usado):
Array
(
    [2] => Array
        (
            [id_prod] => 6
            [novo_preco] => 3.20
            [novo_imposto] => 0
            [marcado] => on
            [condicao] => 1
        )

)

Mas o print $dados[ $i ] [ 'id_prod' ] dentro do for não imprime nada e ainda nõ chegou no $dados=null.

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
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...