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

Busca em array()


Jefferson Oliveira

Pergunta

Estou querendo fazer uma busca, exemplo eu tenho um array que contem o mesmo id do produto (idproduto), quando o usuário adiciona um novo produto queria checar se esse is existe nesses array() e apenas mudar a quantidade para 2.

Array
(
    [1] => Array
        (
            [nome] => GNC Mega Men Vitapak Energia
            [preço] => 
            [quantidade] => 1
            [codigo] => 346617
            [codarray] => 1
            [idproduto] => 19
        )

    [2] => Array
        (
            [nome] => GNC Mega Men Vitapak Energia
            [preço] => 
            [quantidade] => 1
            [codigo] => 346617
            [codarray] => 2
            [idproduto] => 19
        )

)

Agradeço a vocês pela visita ao tópico!

Abraços

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Olá! ^_^

Veja se é +- isso que você quer:

<?php 

    // Visualizar todas mensagens de erros, warnings e notices
    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    // Declara array
    $dados = Array();
    
    // Simula o array com os dados
    for($x=0; $x<9; $x++){
        $dados[$x]['nome'] = 'nome'.($x);
        $dados[$x]['preço'] = 'R$'.($x+10).',90';
        $dados[$x]['quantidade'] = '1';
        $dados[$x]['codigo'] = 346617;
        $dados[$x]['codarray'] = $x;
        $dados[$x]['idproduto'] = $x+1;
    }

    // Imprime o array antes de fazer alteração (só para ver como está)
    foreach($dados as $d){
        print_r($d);
        echo '<br/>';
    }
    echo '<br><br/>';
    
    // Verifica se já existe o produto com código '4' no array, se achar aumenta a quantidade em 1
    $x=0;
    foreach($dados as $d){
        if($d['idproduto']=='4'){
            $dados[$x]['quantidade'] = $d['quantidade']+1;
        }
        $x++;
    }

    // Imprime o array após fazer a alteração (só para ver como está)
    foreach($dados as $d){
        echo '<br/>';
        print_r($d);
    }
    
?>

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

  • 0

Aewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww!!!!!!!!!!!!!!!

é isso mesmo!!

Valeu Stoma!!!!!

O meu problema era que eu tenho um loja que tem uma promoção de levar o mesmo produto, e quando o cara add outro produto no carrinho ele verifica se existe 2 ele add a promoção, que no caso é um combo.

Quiser visualizar a lojá que fiz

www.facilsuplementos.com

Link para o comentário
Compartilhar em outros sites

  • 0

Ou poderia usar a função in_array();

ela procura por um elemento dentro de um array.

Usa-se assim:

if( in_array( $valorProcurado, $seuarray, [não é obrigatório esse terçeiro parametro porém pode por true ele verifica se o valor procurado também é do mesmo tipo dos valores que tem no array])

Bem simples..

Link para o comentário
Compartilhar em outros sites

  • 0

Jefferson,

Eu já implementei uma regra parecida com essa sua, então, tomei a liberdade de adaptar seu problema ao meu código.

Visto que já resolveu o problema, vou postar o código somente para futuras referencias.

Abraço

//array exemplo
$arrProd = array( 
        array(
            'nome' => 'GNC Mega Men Vitapak Energia',
            'preço' => '',
            'quantidade' => 1,
            'codigo' => 346617,
            'codarray' => 1,
            'idproduto' => 19
        ), array (
            'nome' => 'Teste prod 2',
            'preço' => '',
            'quantidade' => 8,
            'codigo' => 346617,
            'codarray' => 2,
            'idproduto' => 2
        )
);

    //imprime o array antes da modificação
    print '<pre>';
    print_r($arrProd);
    print '</pre>';


    //função para verificar se existe um produto, caso existir, incremente 1 ao valor do índice quantidade
    function verificarProdutoSemelhante(&$item,$key,$idProduto){
        if($item['idproduto'] == $idProduto){
            $item['quantidade'] += 1;
        }
    }

    //aplica a função verificarProdutosSemelhantes a todos os mentros do array, passando o código do produto como parametro Ex.: 19
    array_walk($arrProd,'verificarProdutoSemelhante',19);

    //imprime o array depois da modificação
    print '<pre>';
    print_r($arrProd);
    print '</pre>';

Link para o comentário
Compartilhar em outros sites

  • 0

O problema de usar a função in_array é que por exemplo, se o código do produto é 2, ao procurar dentro do array pode ser que a quantidade de um outro produto seja 2, a função in_array daria como se tivesse sido encontrado pois ele não verifica em qual índice do array está o valor e sim se existe o valor (e o valor 2 existe, mas no índice quantidade)...

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

  • 0

É isso mesmo, agora eu tenho 2 sessões, o $_SESSION["carrinho_combo"] e $_SESSION["carrinho"]

vou postar o codigo pra vocês

<?php 
@session_start();
$lib    = true;
include "../../lib/classes.php";
$idproduto        = $_REQUEST["id"];
$quantidade        = $_REQUEST["quantidade"];
$dadosproduto    = $_not->pega($idproduto);

#verifica se existe este combo


if($_GET["limpar"]==1){
    unset($_SESSION['carrinho']);
    unset($_SESSION['carrinho_combo']);
}else{
$x     = count($_SESSION['carrinho']);
$x    = $x+1;
    $_SESSION['carrinho'][$x]= array(nome=>$dadosproduto["titulo"],preço=>$dadosproduto["cartola"],quantidade=>$quantidade,codigo=>$dadosproduto["data"], codarray=>$x,idproduto=>$idproduto);

}



$carrinho     = $_SESSION['carrinho'];


foreach($carrinho as $checcombo){
    
    if($checcombo["idproduto"] == $idproduto){
    
    $combodados    = $_com->pegaComboIguais($idproduto,$checcombo["idproduto"]);
    $_SESSION['carrinho_combo'][count($_SESSION['carrinho_combo'])+1]= array(id_combo=>$combodados["id"],nome_combo=>$combodados["titulo"],quantidade=>1,codarray=>count($_SESSION['carrinho_combo'])+1);
    
    unset($carrinho[$checcombo["codarray"]]);
    
        }else{
        echo "Não existe";
        }
    }


?>
<h2>CARRINHO NORMAL</h2>
<pre><? print_r($_SESSION['carrinho']) ?></pre>

<h2>COMBO</h2>
<pre><? print_r($_SESSION['carrinho_combo']) ?></pre>

Quando eu ver 2 produtos com o mesmo id eu verifico se existe um combo pra este id, se existir eu apago o $_SESSION['carrinho'] e transformo em $_SESSION['carrinho_combo']. estou consegindo, mais ele cadastra 2 combos.

Obrigado a todos que tentam me ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0

Ai pessoal acho que consegui.

Foi só por a musica do METALLICA pra truar que eu consegui :)

Musica >> Ain't My Bitch

Veja ai URL

http://facilsuplementos.com/modulos/carrin...mp;quantidade=1

Ai você check o carrinho:

http://facilsuplementos.com/paginas/facil/...rrinho-compras/

Agora é só ficar atualizando!

Valeu pessoal pela ajuda!!!!

Obrigado!

Editado por Jefferson Oliveira
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...