Jump to content
Fórum Script Brasil
  • 0

limpar array


Carlos Rocha

Question

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);
*/           }

Edited by Carlos Rocha
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 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...