Back to top

Autore Topic: [RISOLTO] Clausa WHERE con valori numerici funziona ma con valori testo no  (Letto 1469 volte)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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:
Codice: [Seleziona]
$query->where('a.state = 1 and a.giorno = lunedi');purtroppo ottengo questo errore:
Codice: [Seleziona]
0 Unknown column 'lunedi' in 'where clause' Unknown column 'lunedi' in 'where clause'mentre se per i valori dei giorno metto un valore numerico:
Codice: [Seleziona]
$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?



« Ultima modifica: 17 Dic 2019, 13:02:07 da tomtomeight »

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Clausa WHERE con valori numerici funziona ma con valori testo no
« Risposta #1 il: 17 Dic 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:
Codice: [Seleziona]
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'



Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Clausa WHERE con valori numerici funziona ma con valori testo no
« Risposta #2 il: 17 Dic 2019, 10:47:24 »
non è che forse gli va detto che si tratta di una stringa aggiungendo str al codice?
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Clausa WHERE con valori numerici funziona ma con valori testo no
« Risposta #3 il: 17 Dic 2019, 12:23:24 »
Graie giusebos ma non ho capito ove aggiungere str.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Clausa WHERE con valori numerici funziona ma con valori testo no
« Risposta #4 il: 17 Dic 2019, 13:01:43 »
Ho risolto , ricavando il numero del giorno invece del nome.
Così ottengo quello che mi serve:
Codice: [Seleziona]
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



Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
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...
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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.

 



Web Design Bolzano Kreatif