Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

[Resolvido] conferindo em um array

Recommended Posts

Não funciona porque as variáveis e o objeto estão no escopo da função.

 

Você tem que passar o objeto TCarrinho, e as variáveis $id_produto e $id_lista.

 

<?php

Class TCarrinho
{
   private $item_codigo;
   private $item_lista;
   public function __construct( )
   {
       $this->item_codigo = array( 3, 6, 3, 5, 9 );
       $this->item_lista  = array( 1, 1, 5, 7, 6 );
   }
   public function getParItem( )
   {
       for( $i = 0; $i < count( $this->item_codigo ); $i++ )
       {
           $par_item[ ] = array( $this->item_codigo[ $i ], $this->item_lista[ $i ] );
       }
       return $par_item;
   }
}

function array_array( TCarrinho $MeuCarrinho, $id_produto, $id_lista )
{
   $par_item = $MeuCarrinho->getParItem( );

   for( $cl = 0; $cl< count( $par_item ); $cl++ )
   {
        if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] )
        {
            return true;
        }
   }
   return false;
}


$MeuCarrinho = new TCarrinho;

var_dump( array_array( $MeuCarrinho, 3, 5 ) ); // boolean true
var_dump( array_array( $MeuCarrinho, 3, 9 ) ); // boolean false

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema aqui é que a ssessão Carrinho ja esta criada e no teu exemplo, você criou ela de novo.

E todo caso, fiz assim:

function array_array( TCarrinho $MeuCarrinho, $id_produto, $id_lista )
{
   $par_item = $MeuCarrinho->getParItem( );

   for( $cl = 0; $cl< count( $par_item ); $cl++ )
   {
        if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] )
        {
            return true;
        }
   }
   return false;
}

if(array_array( $MeuCarrinho,  $id_produto, $id_lista )==false)
//	 if (array_array()==false)
 {

.......

E continuou não exibindo os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você percebeu, eu criei um objeto TCarrinho apenas para exemplificar, é claro que você vai passar o objeto já criado e não criar um novo. ;)

 

Você vai ter que debugar isso antes do IF e veja se está entrando os dados que você está esperando que entrem(o array com os valores corretos e as variáveis também).

 

echo $id_produto, ' = ', $par_item[ $cl ] [ 0 ], '<br/>', $id_lista, ' = ', $par_item[ $cl ] [ 1 ], '<hr>';

if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] )
{
continua...

 

Em vez de usar direto a função, faça um teste(debugar) no retorno para ver se em algum momento retorna TRUE.


var_dump( array_array( $MeuCarrinho, $id_produto, $id_lista ) );

if(array_array( $MeuCarrinho,  $id_produto, $id_lista )==false)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim?

 	 while(list($id_lista, $foto, $id_produto, $nome_produto, $id_fornece, $nome_razao_fornece, $nome_grupo, $quantidadecaixa, $preco, $condicao,$observacao, $imposto) = mysql_fetch_row($sql_produtos_query))
{
if(session_is_registered("MeuCarrinho"))
{	
function array_array($MeuCarrinho, $id_produto, $id_lista )
{
   $par_item = $MeuCarrinho->getParItem();

   for( $cl = 0; $cl< count( $par_item ); $cl++ )
   {
		 echo $id_produto, ' = ', $par_item[ $cl ] [ 0 ], '<br/>', $id_lista, ' = ', $par_item[ $cl ] [ 1 ], '<p>';
        if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] )
        {
            return true;
        }
   }
   return false;
}
print "<p>-----<p>";
var_dump( array_array( $MeuCarrinho, $id_produto, $id_lista ) );
print "<p>-----<p>";

if(array_array( $MeuCarrinho,  $id_produto, $id_lista )==false)
 {
   echo "<input type=\"hidden\" name=\"{$i}[id_prod]\"  id=\"{$i}[id_prod]\" value=\"$id_produto\">
		 <input type=\"hidden\" name=\"{$i}[quan]\" id=\"{$i}[quan]\" value=\"\">	
		 <input type=\"hidden\" name=\"{$i}[id_lista]\" name=\"{$i}[id_lista]\" value=\"$id_lista\">		   
		 <input type=\"hidden\" name=\"{$i}[imposto]\" name=\"{$i}[imposto]\" value=\"$imposto\">		   
		";

Retornou isso

bool(true)

3.jpg

Parece que deu um exit no final da pagina mas não tem exit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você pode ver, a função está cumprindo com o esperado, ela encontrou a combinação e retornou TRUE.

 

Agora basta você fazer o que deve ser feito caso NÂO exista a combinação.

if( ! array_array( $MeuCarrinho,  $id_produto, $id_lista ) )
{
// false

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos Coelho.

 

Funcionou.

 

Foi só tirar a função de dentro dos whiles todos.

 

Muito obrigado pelo apoio.

 

Se tiver como eu retribuir estarei ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.