meta_compare nu compară întregul număr întreg

1 apr. 2014, 09:18:37
Vizualizări: 4.43K
Voturi: 0

Am trimis date numerice printr-un formular către pagina mea de căutare personalizată. Pot obține valori corect dacă input-ul are un singur caracter (ex. 1), dar dacă input-ul are mai multe caractere (ex. 100), comparația se face tot cu "1".

DACĂ input-ul utilizatorului este 1 primesc toate articolele cu valoarea câmpului personalizat Mai mare decât 1. dar dacă input-ul este 100 rezultatul este același.

De ce se întâmplă asta??

Iată codul meu::

$i_rate = $_GET["interest_rate"];

                $bc_args = array(

                    'post_type' => 'data',
                    'data-category'=>'insurance-rate',
                    'order' => 'DESC',
                    'meta_key' => 'interest_rate',
                    'meta_value' =>$i_rate,
                    'meta_compare' => '>=',
                    'orderby' => 'meta_value_num',

                );

                 $sortedPosts = new WP_Query($bc_args);
3
Comentarii

Nu ar trebui ca 'meta_value' =>$i_rate să fie 'meta_value_num' =>$i_rate,

User User
1 apr. 2014 12:55:08

@magenta Am încercat și eu asta...dar nu funcționează așa

rafsuntaskin rafsuntaskin
1 apr. 2014 11:15:33

Voiam să sugerez să convertești valoarea la INT, dar se pare că răspunsul marcat te-a acoperit.. :)

t31os t31os
1 apr. 2014 11:30:53
Toate răspunsurile la întrebare 1
2
10

Ai putea încerca asta în schimb:

$bc_args = array(
    'post_type'      => 'data',
    'data-category'  =>'insurance-rate',
    'order'          => 'DESC',
    'orderby'        => 'meta_value_num',
    'meta_query' => array(
        array(
            'key'     => 'interest_rate',
            'value'   => (int) $i_rate,
            'type'    => 'numeric',
            'compare' => '>='
        ),
    )
);

$sortedPosts = new WP_Query( $bc_args );

unde folosim numeric type.

Ar trebui să iei în considerare și utilizarea filter_input în loc de $_GET:

$i_rate = filter_input( INPUT_GET, 'i_rate', FILTER_SANITIZE_NUMBER_INT );

sau metoda nativă add_query_var / get_query_var.

Ps: data-category nu este un parametru nativ în clasa WP_Query().

1 apr. 2014 09:48:49
Comentarii

Mulțumesc mult.... a funcționat exact cum aveam nevoie...Știam că era o problemă de tip casting dar nu știam cum să o rezolv.

Mulțumesc

rafsuntaskin rafsuntaskin
1 apr. 2014 11:04:58

Mă bucur că a funcționat pentru tine. Poți verifica întotdeauna SQL-ul generat cu echo $sortedPosts->request; pentru a te asigura că este exact ceea ce dorești.

birgire birgire
1 apr. 2014 11:07:43