Ir para conteúdo

POWERED BY:

Arquivado

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

Gomes0707

WP_Query Fazer Consulta múltiplos campos

Recommended Posts

Olá pessoal será que alguém pode me ajudar quero realizar uma consulta no Wordpress usando um select com vários valores no campo preço quando selecionar o select com o valor de 100 até 1000 que ele retorne os valores entre esse valores da mesma maneira de 1001 até 2000 aqui está a consulta da página de resultado! desde já agradeço

Código

<?php
if(isset($_REQUEST['imovel'])):
	 $negocio = $_REQUEST['srcnegocio'];
	 $tipo    = $_REQUEST['srctipo'];
	 $valor   = $_REQUEST['srcpreco'];
	 $cidade  = $_REQUEST['srccidade'];
	 $bairro  = $_REQUEST['srcbairro'];

$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
	'category_name'=>$negocio,
);
$args['meta_query'][] = array(
    'key' => 'tipo_de_imovel',
    'value' => $tipo,
    'compare' => 'LIKE',
);
$args['meta_query'][] = array(
    'key' => 'valor',
    'value' =>$valor,
    'compare' => 'LIKE',
	 'type' =>   'NUMERIC',
);
$args['meta_query'][] = array(
    'key' => 'cidade',
    'value' => $cidade,
    'compare' => 'LIKE',
);
$args['meta_query'][] = array(
    'key' => 'bairro',
    'value' => $bairro,
    'compare' => 'LIKE',
);
 endif;
?>
<?php  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente:

$args['meta_query'][] = array(
'key' => 'valor',
'value' => array( 100, 200 ),
'compare' => 'BETWEEN', 
'type' => 'numeric',
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algo no banco cadastrado com esses valores e a soma dos outros campos para a query?

 

abra o phpmyadmin e teste essa query que você está fazendo, veja se retorna algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim tem os mesmo valores cadastrado no banco de dados, valores de 100 até 1000 e de 1000 até 2000

só que quando coloco o array(100,1000) ele retorna os valores quem no banco de dados certinho mas quando faço o filtro de 1000 até 2000 ele me retorna os mesmo valores de 100 até 1000!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora eu estava fazendo um teste aqui, criei algo parecido com o seu e funcionou a dica que eu coloquei...

 

Faz uma pesquisa só para confirmar minha dúvida, pesquisa de 100 a 150 ou de 100 a 300 para ver os resultados que vem.

 

Está removendo os pontos e virgulas na hora da pesquisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja meu select no html se ten algo errado

<option value=""><?php _e(' Por Preço');?></option>

<option value="1000">De R$ 100,00 Até R$ 1.000,00</option>

<option value="2000">De R$ 1.000,00 Até R$ 2.000,00</option>

<option value="3000">De R$ 2.000,00 Até R$ 3.000,00</option>

<option value="3500">De R$ 3.000,00 Até R$ 3.500,00</option>

<option value="4000">De R$ 3.500,00 Até R$ 4.000,00</option>

<option value="5000">De R$ 4.000,00 Até R$ 5.000,00</option>

</select>

Eu quero que me retorne o resultado através da variável $valor = $_REQUEST['srcpreco'];

se passar value = array(100,1000) como vou pega o resultado de 100 até 2000?

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca os dois no campo!

<option value="100,1000">De R$ 100,00 Até R$ 1.000,00</option>

Depois faz um explode na virgula e separa os valores no array!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Ted K Obrigado por tudo só mais uma coisa quer dizer que dou um explode

$valor = '100,1000';

exemplo $separa = explode($valor1,',');

<option value="<?php echo $separa;?>">De R$ 100,00 Até R$ 1.000,00</option>

 

e depois separa o valor no array da consulta

exemplo

$args['meta_query'][] = array(

'key' => 'valor',

'value' => array( 100, 200 ),

'compare' => 'BETWEEN',

'type' => 'numeric',

);

é isso? desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu muito obrigado pela sua ajuda deu certo eu fiz assim!

<?php
if(isset($_REQUEST['imovel'])):
	 $negocio = $_REQUEST['srcnegocio'];
	 $tipo    = $_REQUEST['srctipo'];
	 $valores   = $_REQUEST['srcpreco'];
	 $cidade  = $_REQUEST['srccidade'];
	 $bairro  = $_REQUEST['srcbairro'];
	 
list($valor1,$valor2) = split('[,]',$valores);






$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
	'category_name'=>$negocio,
);
$args['meta_query'][] = array(
    'key' => 'tipo_de_imovel',
    'value' => $tipo,
    'compare' => 'LIKE',
);
$args['meta_query'][] = array(
    'key' => 'valor',
    'value' =>array($valor1,$valor2),

	 'type' =>   'NUMERIC',
		 'compare' => 'BETWEEN',
		 'orderby'=>'meta_value_num',
		 'order'=>'ASC'
);
$args['meta_query'][] = array(
    'key' => 'cidade',
    'value' => $cidade,
    'compare' => 'LIKE',
);
$args['meta_query'][] = array(
    'key' => 'bairro',
    'value' => $bairro,
    'compare' => 'LIKE',
);
 endif;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma duvida como posso realizar a pesquisa sem ser obrigatório selecionar o select preço

para retornar o resultado !

Porque agora o resultado da pesquisa só retorna algo se o select preço for selecionado,quero que ele seja opcional?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo fiz assim!

if(!empty($_REQUEST['srcpreco'])):
$args['meta_query'][] = array(
    'key' => 'valor',
    'value' =>array($valor1,$valor2),
	 'type' =>   'NUMERIC',
	 'compare' => 'BETWEEN',
);
endif;

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.