PHP dizi sorun

2 Cevap php

Ben bir PHP dosyası ile AJAX üzerinden bazı verileri yolluyorum. Bu filtre seçenekleri hakkında. Neyse, ben bu gibi yolluyorum:

filter[0][data][type]   string
filter[0][data][value] automobiles
filter[0][field] product

filter[1][data][type] numeric
filter[1][data][value] 6000
filter[1][field] price

Bu, yukarıda FireBug konsoldan alınır. Sonra, PHP:

$filter = $_POST['filter'.$i];
if (is_array($filter)) {
    for ($i=0;$i<count($filter);$i++){
    	switch($filter[$i]['data']['type']){
    		case 'string' : 
                        // I'm doing my select from database based on that and so on

So, the translation of this would be: "Get me all the records from database that are: hmm, let's check the filters... I'm getting the first filter type witch is "string" witch needs to be applied to the mysql column named "product"...So I'm searching for the value of "automobiles" there...But I'm not finished yet, the second filter refers to a numeric filter for the column "price" from database. so I'm taking its value and add it to the query. So I'll end up selecting all the automobiles that have a price greater than 6000.

Şimdiye kadar iyi. Sorun veri alma şeklim değişti ve ben artık bu formatta benim veri göndermek değil ki. Yeni format, bir URL cadı bu gibi görünüyor:

filter[0][field]=prodct&filter[0][data][type]=string&filter[0][data][value]=automobiles&filter[1][field]=price&filter[1][data][type]=numeric&filter[1][data][value]=6000

Ben bir "&" tarafından bu bir patlayabilir yapabilirsiniz ve bir dizi ile sonuna kadar ... Ben bir çok şey yapabilir ... sorun ben yapabilirim Yani .. alınan verilerin bu tür ile çalışmak benim sorgu bina komut ayarlamak nasıl bilmiyorum ki bir " switch ($ filtre [$ i] ['veri'] ['type']) {"yeniden ...

Kodunu değiştirmek için herhangi bir fikir?

Teşekkür ederiz!

2 Cevap

parse_str ($ QueryString); ve sonra, normal olarak her şeyi yapmak. Bu yöntem sorgu dizesi işlemek ve (tehlikeli olabilir) küresel ad değişkenleri içe, belki (manuel sayfada listelenen) ikinci formu kullanacak:

$result = array();
parse_str($queryString, $result)
$filters = $result['filter'];

foreach($filters as $filter) {
// your code
}

Ben JSON nesne olarak verileri üzerinden göndermek, ve geriye sadece daha önce kullandığınız gibi bir dizi php dönüştürmek istiyorum.

Php üzerinde geri bir dizi JSON veri almak için json_decode kullanabilirsiniz ve sadece eskisi gibi kod kalanını kullanmaya devam edebilirsiniz.