Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22872 > unrolled thread
| Started by | Gianfranco <gbertozzi@gmail.com> |
|---|---|
| First post | 2020-11-02 10:21 +0000 |
| Last post | 2020-11-03 09:41 +0000 |
| Articles | 4 — 2 participants |
Back to article view | Back to it.comp.www.php
Confronto date inizio e date fine Gianfranco <gbertozzi@gmail.com> - 2020-11-02 10:21 +0000
Re: Confronto date inizio e date fine Leonardo Serni <lserni@gmail.com> - 2020-11-02 14:54 +0100
Re: Confronto date inizio e date fine Gianfranco <gbertozzi@gmail.com> - 2020-11-02 16:38 +0000
Re: Confronto date inizio e date fine Gianfranco <gbertozzi@gmail.com> - 2020-11-03 09:41 +0000
| From | Gianfranco <gbertozzi@gmail.com> |
|---|---|
| Date | 2020-11-02 10:21 +0000 |
| Subject | Confronto date inizio e date fine |
| Message-ID | <slrnrpvnck.c98.gbertozzi@debian.home> |
Ciao a tutti,
e scusatemi per il disturbo e la richiesta da grande inesperto. Spero
possiate aiutarmi.
Sto realizzando, tra l'altro, una griglia che mostri graficamente
le richieste di ferie presentate sul lavoro: in un database ho per
ogni dipendente le date delle richieste, inizio e fine; l'utente puo'
selezionare il mese che gli interessa e visualizzare la griglia di tutti
i colleghi che hanno richiesto ferie in quel periodo.
Per evitare di mostare righe vuote (colleghi che hanno presentato
richiesta di ferie ma non in quel mese), ho piazzato a braccio questa
condizione:
/* Ci sono richieste nel periodo? $iMese e $iAnno via _GET */
if ($dDataIn >= mktime(0,0,0,$iMese,1,$iAnno)
&& ($dDataOut <=mktime(0,0,0,$iMese,$iGiorniMese,$iAnno)))
Che mostra solo le richieste di ferie che cadono completamente nel
mese in questione mentre non "passano" quelle in cui la richiesta e' a
cavallo tra due mesi o tra un anno e l'altro.
Se metto un || al posto di && funziona, pero' vedo una serie di
griglie vuote e non mi piace (anche se potrei fregarmene).
Prima di impelagarmi in una serie di case che mi sembra una soluzione
molto brutta, c'e' qualcosa di piu' semplice?
Se puo' servire per capire meglio di che si tratta, posto il link al
lavoro che sto facendo...
Grazie.
Un saluto,
--
Gianfranco Bertozzi
[toc] | [next] | [standalone]
| From | Leonardo Serni <lserni@gmail.com> |
|---|---|
| Date | 2020-11-02 14:54 +0100 |
| Message-ID | <fj30qf9dg79acko672vc65pgalakqgupoh@L.Serni> |
| In reply to | #22872 |
On Mon, 2 Nov 2020 10:21:23 +0000 (UTC), Gianfranco <gbertozzi@gmail.com>
wrote:
>/* Ci sono richieste nel periodo? $iMese e $iAnno via _GET */
>
>if ($dDataIn >= mktime(0,0,0,$iMese,1,$iAnno)
> && ($dDataOut <=mktime(0,0,0,$iMese,$iGiorniMese,$iAnno)))
> Che mostra solo le richieste di ferie che cadono completamente nel
>mese in questione mentre non "passano" quelle in cui la richiesta e' a
>cavallo tra due mesi o tra un anno e l'altro.
Vedila in quest'altro modo: tu vuoi ESCLUDERE le richieste che finiscono PRIMA
del periodo in esame, e quelle che iniziano DOPO. Tutte le altre no.
Quindi:
if (!(($dDataOut < mktime(0,0,0,$iMese,1,$iAnno))
|| ($dDataIn > mktime(0,0,0,$iMese,$iGiorniMese,$iAnno))
)) {
}
Dato che NOT (A OR B) equivale a (NOT A AND NOT B), puoi riscrivere
if ((($dDataOut >= mktime(0,0,0,$iMese,1,$iAnno))
&& ($dDataIn <= mktime(0,0,0,$iMese,$iGiorniMese,$iAnno))
)) {
che sembra un po' "anti-intuitiva" perché ti confronta la fine di una cosa con
l'inizio di un'altra.
Metti un po' a posto le uguaglianze per la regolazione di fino.
Leonardo
--
"You all presumably know why" :-) :-(
[toc] | [prev] | [next] | [standalone]
| From | Gianfranco <gbertozzi@gmail.com> |
|---|---|
| Date | 2020-11-02 16:38 +0000 |
| Message-ID | <slrnrq0dcu.942.gbertozzi@debian.home> |
| In reply to | #22873 |
On Mon, 02 Nov 2020 14:54:50 +0100, Leonardo Serni wrote:
Ciao,
> Vedila in quest'altro modo: tu vuoi ESCLUDERE le richieste che
> finiscono PRIMA del periodo in esame, e quelle che iniziano DOPO.
> Tutte le altre no.
Detta cosi' diventa facile, anche da comprendere. Non c'ero proprio
arrivato a rovesciare la condizione, e invece e' una soluzione semplice
ed elegante.
Devo studiare di piu'. ;-)
> Dato che NOT (A OR B) equivale a (NOT A AND NOT B), puoi riscrivere
>
> if ((($dDataOut >= mktime(0,0,0,$iMese,1,$iAnno))
> && ($dDataIn <= mktime(0,0,0,$iMese,$iGiorniMese,$iAnno))
> )) {
Ho preferito questa che mi piace di piu' e sembra funzionare
perfettamente. Faccio due altre prove ma credo che ci siamo.
Ti ringrazio veramente tanto, sei sempre gentilissimo. Il lavoro ora
e' quasi pronto. Ti direi che vorrei contraccambiare il favore ma, visto
il lavoro che faccio, non ti conviene. ;-)
Un saluto e grazie ancora,
--
Gianfranco Bertozzi
[toc] | [prev] | [next] | [standalone]
| From | Gianfranco <gbertozzi@gmail.com> |
|---|---|
| Date | 2020-11-03 09:41 +0000 |
| Message-ID | <slrnrq29eb.627.gbertozzi@debian.home> |
| In reply to | #22874 |
On Mon, 2 Nov 2020 16:38:10 +0000 (UTC), Gianfranco wrote: Ciao, > e' quasi pronto. Ti direi che vorrei contraccambiare il favore ma, visto > il lavoro che faccio, non ti conviene. ;-) Resta inteso che, se mai un giorno ci dovessimo incontrare, ti offro da bere. :) Un saluto, -- Gianfranco Bertozzi
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web