Joomla.it Forum
Non solo Joomla... => Database => : Stige82 20 Oct 2014, 21:57:20
-
Ciao ragazzi,
avrei bisogno di un aiuto per l'estrazione e stampa a video da una tabella
In pratica avrei bisogno che la SELECT tirasse fuori stringhe da stampare a video solo se la data inserita in un campo della tabella sia minore di 2 giorni rispetto alla data odierna.
Non so se mi sono spiegato....faccio un esempio:
mettiamo il caso che io sia un professore e carico oggi 20/10/2014 i voti degli esami scritti dei miei alunni ma voglio che essi non siano visibili agli studenti fino a 2 giorni prima del 27/10/2014.
E' possibile ?!
Grazie anticipatamente.
-
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
-
grazie per la risposta ma purtroppo l'avevo letto l'articolo ma non mi funziona.
Vi incollo la stringa che ho inserito e non mi da nessun output inserendo quel controllo (ovviamente in tabella ci sono righe che rispondono a quei parametri):
$cur="SELECT designazioni.arbitro, designazioni.gara, designazioni.luogo, DATE_FORMAT(designazioni.data,'%d/%m/%Y') as data_it, designazioni.categoria, designazioni.ruolo, tb_comprofiler.avatar
FROM designazioni INNER JOIN tb_comprofiler
on designazioni.idArbitro = tb_comprofiler.id
WHERE data >= CURDATE() ORDER BY data, organico, ruolo, categoria, arbitro
AND data(CURDATE(), INTERVAL 2 DAY)";
-
copia una query di joomla e guarda come fa che è molto più difficile sbagliare in quella query hai usato gli alias in modo sbagliato e ti complicano la query
perchè hai una tabella senza prefisso?
cosa stai facendo nello specifico? un'estensione?
-
sto utilizzando il codice direttamente all'interno dell'articolo
-
in che senso? con un plugin? con un modulo?
-
utilizzo un plugin SOURCER, inserisco all'inizio e alla fine
{source} ....{/source}
e al posto dei puntini il codice
-
ah, mi spiace ma non conosco e non saprei cosa se ne fa della query, se prevede che le tabelle non abbiano suffisso, se esiste il database etc... magari qualcuno lo usa e lo sa.
-
l'istruzione che ho scritto io come la scriveresti tu in sql ?!
-
per intanto non metterei l'order by in mezzo alle condizioni del where e metterei una comparazione nell'ultima riga.
prova le queries nell'interfaccia di mysql prima di metterle nel codice: non dà nessun output perché dà erorre.
ciao
-
Prova questa query
SELECT ......... WHERE data >= now() AND now() - INTERVAL 2 DAY ORDER BY data, organico, ruolo, categoria, arbitro
-
sarà, ma secondo me manca un pezzo alla seconda condizione del where...
-
Prova questa query
SELECT ......... WHERE data >= now() AND now() - INTERVAL 2 DAY ORDER BY data, organico, ruolo, categoria, arbitro
purtroppo non funziona la seconda condizione
-
E così
SELECT ......... WHERE data >= now() - INTERVAL 2 DAY ORDER BY data, organico, ruolo, categoria, arbitro
-
se inserisco il record in tabella me lo visualizza anche se ha data 2 novembre purtroppo :(
-
facciamo un poco di chiarezza
WHERE ( data >= now() ) AND ( now() - INTERVAL 2 DAY )
la prima condizione
data >= now()
indica che la data in `data` deve essere una data nel futuro
la seconda condizione
now() - INTERVAL 2 DAY
non è una espressione valida: manca la comparazione; ovviamente, essendo comunque una data valida, viene valutata come true, ma è meglio lasciare la valutazione di questi side effects a persone esperte.
quindi quanto sopra richiede solo che `data` contenga una data nel futuro.
interval non deve essere usata direttamente, ma solo come secondo operando in una funzione quale date_add o date_sub.
tornando al problema esposto
mettiamo il caso che io sia un professore e carico oggi 20/10/2014 i voti degli esami scritti dei miei alunni ma voglio che essi non siano visibili agli studenti fino a 2 giorni prima del 27/10/2014.
in data devi inserire '25/10/2014' e come condizione where
`data`<=NOW()
il resto non centra...
ciao
-
il problema è che la condizione non si deve basare sulla data odierna ma sulla data di pubblicazione Cioè che la data in cui escono i voti deve essere 2 giorni prima della data dell'orale.
-
Salve.
... e così:
SELECT ..... FROM `tabella` WHERE CURDATE() >= DATE_SUB(`data_orale`, INTERVAL 2 DAY)
-
già detto, dipende tutto da che valore inserisci in `data`. che cosa c'è in data? la data dell'orale? allora va bene ciò che ti ha scritto joomla_fan, chiarisci quali sono i dati su cui operi, se no ogni risposta è sbagliata...
-
Salve.
... e così:
SELECT ..... FROM `tabella` WHERE CURDATE() >= DATE_SUB(`data_orale`, INTERVAL 2 DAY)
grandissimooooooooooooooooooooo !!!!! FUNZIONAAAAAAAAAAAAAAA :)
e grazie anche a tutti quelli che hanno cercato di aiutarmi :D
buona serata