Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22872 > unrolled thread

Confronto date inizio e date fine

Started byGianfranco <gbertozzi@gmail.com>
First post2020-11-02 10:21 +0000
Last post2020-11-03 09:41 +0000
Articles 4 — 2 participants

Back to article view | Back to it.comp.www.php


Contents

  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

#22872 — Confronto date inizio e date fine

FromGianfranco <gbertozzi@gmail.com>
Date2020-11-02 10:21 +0000
SubjectConfronto 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]


#22873

FromLeonardo Serni <lserni@gmail.com>
Date2020-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]


#22874

FromGianfranco <gbertozzi@gmail.com>
Date2020-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]


#22875

FromGianfranco <gbertozzi@gmail.com>
Date2020-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