选择select,如何将多个值放入一个$bind数组
Chosen select, how to get the multiple values into a $bind array
我正在使用 aura sql 和 extendedPdo。
我有一个带有过滤器的表单,您可以在其中选择 select 多个选项 jquery 正如您所看到的,我从数据库中填充了选项。我不知道如何在提交后从表单中获取多个值,因为我使用 $bind 和 $pdo。
我想为我 select 编辑的每个选项添加一个 "and 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);
我不确定,但我想你的意思是这样的:
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).')';
}
现在可以使用了:
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).')';
}
不是很好看,但它有效
我正在使用 aura sql 和 extendedPdo。 我有一个带有过滤器的表单,您可以在其中选择 select 多个选项 jquery 正如您所看到的,我从数据库中填充了选项。我不知道如何在提交后从表单中获取多个值,因为我使用 $bind 和 $pdo。 我想为我 select 编辑的每个选项添加一个 "and 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);
我不确定,但我想你的意思是这样的:
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).')';
}
现在可以使用了:
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).')';
}
不是很好看,但它有效