2016-03-21 14 views
0

Ich benutze Aura sql mit extendedPdo. Ich habe ein Formular mit einem Filter, wo Sie mehrere Optionen mit ausgewählten jQuery auswählen können, wie Sie sehen können, poploulate die Optionen von der db. Ich weiß nicht, wie man mehrfache Werte vom Formular erhält, nachdem ich abliege, da ich $ bind mit $ pdo verwende. Ich möchte für jede ausgewählte Option ein "und pr.idproduttori =: produttore" hinzufügen. sorry für mein schlechtes Englisch: D

Vorlage:

<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> 

Controller:

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); 

Antwort

0

Ich bin nicht sicher, aber ich herausfinden, dass Sie smthg wie das bedeutet:

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

es ein Problem bei $ binden ist [ 'produttore'] , denn wenn ich das tun var_dump ($ binden [ 'produttore']); es sagt, es gibt nur den 2. Wert, den ich als Filter in $ bind ['Produttore'], ich brauche das $ bind ['Produttore'] ist ein Array – GabKini

+0

Die Tatsache, dass wenn Sie '$ bind ['Produttore' schreiben ] 'überschreibt einen möglicherweise vorhandenen Wert als normal. Meinst du nicht '$ bind ['produttore'] []'? – butterFlyNick

+0

'$ bind ['produttore'] []' funktioniert nicht, weil Sie das ': Produttore' in der Zeichenfolge jedes Mal ändern müssen – GabKini

1

Jetzt funktioniert es:

ist nicht wirklich schön zu sehen, aber es funktioniert