2016-03-21 61 views
0

im使用帶有extendedPdo的aura sql。 我有一個過濾器的窗體,您可以選擇多個選項與選定的jquery,你可以看到我popoulate從數據庫的選項。自從使用$ bind與$ pdo進行提交後,我不知道如何從表單中獲取多個值。 我想爲我選擇的每個選項添加一個「和pr.idproduttori =:produttore」。對不起我的英文不好:d

模板:

<select name="filter[produttore][]" multiple class="chosen-select form-element" data-placeholder="Seleziona Produttore/i"> 
    <option value="">Tutti</option> 
    <?php foreach ($produttori as $row): ?> 
        <option value="<?= $row['id'] ?>" <?= @$filter['produttore'] == $row['id'] ? 'selected' : '' ?>><?= $row['prodname'] ?></option> 
    <?php endforeach ?> 
</select> 

控制器:

if(!empty($filter['produttore'])){ 
    foreach($filter['produttore'] as $row){ 
     $q_where .= ' and pr.idproduttori = :produttore'; 
     $bind['produttore'] = $row; 
    } 
} 

if(!empty($filter['ean'])){ 
     $q_where .= ' and p.ean_code = :ean'; 
     $bind['ean'] = $filter['ean']; 
} 

// Query predefinita 
$q = 'select p.idprodotti as id, pr.nome as produttore, p.modello, p.ean_code as ean, t.descrizione as tipo, count(o.idoggetti) as quanto 
    from prodotti p join produttori pr on p.idproduttori = pr.idproduttori 
    join tipologia t on p.idtipologia = t.idtipologia 
    left join oggetti o on p.idprodotti = o.idprodotti'; 

$q_attribs = ' group by p.idprodotti order by '.$filter['orderby'].' '.$filter['verso']; 

$data = $pdo->fetchAll($q.$q_where.$q_attribs, $bind); 

回答

0

我不知道,但我弄清楚你的意思smthg這樣的:

if(!empty($filter['produttore'])){ 
    $q_where .= ' and ('; 
    foreach($filter['produttore'] as $row){ 
     $q_where .= 'pr.idproduttori = :produttore or '; 
     $bind['produttore'] = $row; 
    } 
    $q_where = substr($q_where,0,-4).')'; 
} 
+0

那裏 $綁定[ 'produttore'] 是一個問題,因爲如果我這樣做的var_dump($綁定[ 'produttore']); 它說只有第二個值我選擇作爲篩選$ bind ['produttore'], 我需要$ bind ['produttore']是一個數組 – GabKini

+0

當你寫'$ bind ['produttore' ]'覆蓋可能存在的值是正常的。你不是指'$ bind ['produttore'] []'? – butterFlyNick

+0

'$ bind ['produttore'] []' does not work because you have to change the':produttore' in the string once – GabKini

1

現在的作品:

if(!empty($filter['produttore'])){ 
    $q_where .= ' and ('; 
    $i = 'a'; 
    foreach($filter['produttore'] as $row){ 
     $q_where .= 'pr.idproduttori = :'.$i.' or '; 
     $bind[$i] = $row; 
     $i++; 
    } 
    // d($bind[]); 
    $q_where = substr($q_where,0,-4).')'; 
} 

是不是真的很好看,但它的工作原理

相關問題