conidizioni

Ciao,

devo modificare le condizioni di questa query basandomi sugli elementi dell'array $categorie

   if (count($categorie) < '2' ) $where .= "AND tipo='$cat'";

   else $where .= "AND tipo_newsletter='$cat' OR tipo_newsletter='$cat'";

il risultato deve essere questo:

se ho un solo elemento nell'array dovrò fare la query usando AND

se ho due elementi dovrò usare nella query un AND ed un OR

se ho tre elementi  dovrò usare nella query un AND e due OR

eccc....

sono riuscita a fare le prime due ma come devo modificare le condizioni per rendere la cosa dinamica e non dover trattare ogni singolo caso ....

grazie  ;)

inviato 9 anni fa
stellina
X 0 X
if (count($cateogrie) > 0)
   $where .= " AND tipo_newsletter IN (".join($categorie, ", ").")";

...questo funziona se l'array $categorie è unidimensionale e contiene l'elenco delle chiavi primarie della tabella sulla quale fai la query

dimmi se non capisci qualcosa...

 :bye:

risposto 9 anni fa
Xscratch
X 0 X

Prova così:

$condizione_categorie = implode(" OR ", (array) $categorie);

if ($condizione_categorie)
   $where .= " AND (" . $condizione_categorie . ") ";
risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Prova così:

$condizione_categorie = implode(" OR ", (array) $categorie);

if ($condizione_categorie)
   $where .= " AND (" . $condizione_categorie . ") ";

questa soluzione mi produce una query che non va bene

la condizione viene cosi

AND (turistico OR privato)

ma in relatà dovrebbe essere questa

AND (tipo='turistico' OR tipo='privato')

oppure questa

AND tipo='turistico' OR tipo='privato'

ho prvato a modificarla introducendo il tipo ma continuo a sbagliare....

 :(

risposto 9 anni fa
stellina
modificato 9 anni fa
X 0 X

hai ragione, prova allora così:

if($categorie)
{
   for($i=0, $c = count($categorie) ; $i < $c; $i++)
   {
      $categorie[$i] = "tipo='" . addslash($categorie[$i]) . "'";
   }

   $condizione_categorie = implode(" OR ", $categorie);

   $where .= " AND (" . $condizione_categorie . ") ";
}
risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ma cos'ha la mia soluzione che non va? :P

(a parte le virgolette perché pensavo che l'array  fosse numerico)

risposto 9 anni fa
Xscratch
X 0 X

ma cos'ha la mia soluzione che non va? :P

(a parte le virgolette perché pensavo che l'array  fosse numerico)

nulla  :P

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda