Joomla.it Forum

Non solo Joomla... => Database => : tomtomeight 16 Dec 2019, 19:00:32

: [RISOLTO] Clausa WHERE con valori numerici funziona ma con valori testo no
: tomtomeight 16 Dec 2019, 19:00:32
Devo selezionare dei record in base al giorno corrente e nella tabella ho ovviamente il campo giorno. Nel models ho la funzione per ottenere la lista nel frontend, dopo le varie selezioni, permessi, stato, ecc. ho questa query finale:
:
$query->where('a.state = 1 and a.giorno = lunedi');purtroppo ottengo questo errore:
:
0 Unknown column 'lunedi' in 'where clause' Unknown column 'lunedi' in 'where clause'mentre se per i valori dei giorno metto un valore numerico:
:
$query->where('a.state = 1 and a.giorno = 2');Funziona mostrandomi solo i record con valore giorno uguale a 2.
Se però converto i giorni a valori numerici poi non mi piace vedere la lista coi giorni  1, 2, ecc.  invece che lunedi, martedi, ecc.
Dove sbaglio nella query?



: Re:Clausa WHERE con valori numerici funziona ma con valori testo no
: tomtomeight 17 Dec 2019, 10:08:27
Ho superato il fatto di non poter inserire valori numerici per i giorni, giocando con le stringhe lingua sono riuscito a visualizzare in lista  i giorni con valori testuali invece che numerici. Tuttavia poiché devo comunque filtrare i record in base al giorno corrente ho il bisogno che la query deve funzionare anche con valori di confronto non numerici.
Per filtrare in base al giorno corrente e confrontandolo con quello nei record ho utilizzato questa query:
:
if (!Factory::getUser()->authorise('core.edit', 'com_calendario'))
        {
            // Leggo il giorno corrente.
            $oggi = date("now");
            $gc = date('d', strtotime($oggi));
            $query->where('a.state = 1 and a.giorno = $gc');
    }
Ma continua a darmi lo stesso errore:
0 Unknown column '$gc' in 'where clause' Unknown column '$gc' in 'where clause'


: Re:Clausa WHERE con valori numerici funziona ma con valori testo no
: giusebos 17 Dec 2019, 10:47:24
non è che forse gli va detto che si tratta di una stringa aggiungendo str al codice?
: Re:Clausa WHERE con valori numerici funziona ma con valori testo no
: tomtomeight 17 Dec 2019, 12:23:24
Graie giusebos ma non ho capito ove aggiungere str.
: Re:Clausa WHERE con valori numerici funziona ma con valori testo no
: tomtomeight 17 Dec 2019, 13:01:43
Ho risolto , ricavando il numero del giorno invece del nome.
Così ottengo quello che mi serve:
:
if (!Factory::getUser()->authorise('core.edit', 'com_calendario'))
        {
            // Ricavo il giorno corrente.
            $dateTime = new \DateTime('now', new \DateTimeZone('Europe/Berlin'));
            $day = $dateTime->format('N');
            $query->where('( a.state = 1 )and ( a.giorno LIKE ' . $day . ' )');
        }    }
Ora devo aggiungere anche il filtro per visualizzare solo i record in base all'ora corrente, ma se ho bisogno apro un altro post.
Grazie


: Re:[RISOLTO] Clausa WHERE con valori numerici funziona ma con valori testo no
: giusebos 17 Dec 2019, 13:23:25
quel str ho visto che viene inserito nel codice quando dobbiamo indicare che si tratta di un valore stringa, purtroppo non so come deve essere usato...
: Re:[RISOLTO] Clausa WHERE con valori numerici funziona ma con valori testo no
: tomtomeight 17 Dec 2019, 13:35:43
Il punto era che il where non ne voleva sapere di funzionare con valori stringa, quando la variabile esprime invece un numero ha funzionato, non ho tempo di approfondire perché mi si prospettano altre sfide per questo progetto, in pratica si tratta di ottenere un tabellone degli orari di corsi del giorno mentre si svolgono con visualizzazione solo di quelli in corso, prossimi con indicazione dell'ora di inizio e del tempo mancante alla fine delle stesse.