Comparare due date

giusalvo

Nuovo Utente
14 Ago 2012
25
1
3
MS
Saluti a tutti,
cercando qualcosa che mi potesse aiutare nel lavoro che dovevo fare, ho trovato nel Vostro sito nella sezione "Didattica" un articolo che pensavo facesse al mio caso;
(https://www.mrw.it/php/articoli/differenza-date-php-creiamo-funzione-datediff_1121.html).

Ho provato ad adattarlo al mio codice ma mi da parecchi errori, probabilmente non riesco ad associare in modo corretto i campi.

Non sto a postare il codice della funzione del link di sopra.
Il problema è questo: un interrogazione al DB dovrebbe controllare se dalla data di arrivo dell'articolo aggiungendo gli anni di garanzia è maggiore della data odierna.
Se si la variabile $gar deve darmi "in garanzia" altrimenti " garanzia scaduta" invece mi da sempre la seconda opzione.

Ecco il mio codice:

PHP:
....
$sqlp = "SELECT * FROM print_assegnate WHERE ilmodello=$qmod ORDER BY dataarrivo DESC LIMIT $primo, $per_page";
$resultp = mysql_query($sqlp);

while ($row = mysql_fetch_array($resultp)){
$arrivo = $row ['dataarrivo'];
$ufficio = $row['ufficio'];
$quanti = $row['quanti'];
$garanzia = $row['garanzia'];
prendi_ufficio();

$adesso = strtotime("now");
$arr = strtotime($arrivo); /*data di arrivo delle stampanti*/
$scadenza = date('d m Y', strtotime("$arrivo +$garanzia year")); /* calcolo del periodo di garanzia*/
echo $scadenza ; /* se faccio visualizzare il risultato, questo è corretto. Ma poi non riesco a fargli fare il calcolo*/



if ($scadenza =< $adesso){
  $gar = "garanzia scaduta";
}else {
$gar = "in garanzia";
} 
?>
<td bgcolor="#FFFFFF" width="100"><?php /*echo $gar; */?></td>
<td bgcolor="#FFFFFF" width="100"><?php echo date('d-m-Y',strtotime("$arrivo")); ?></td>
...

Grazie in anticipo a chi può darmi una mano.
Saluti
 
ciao
metti var_dump per vedere come sono i formati delle date
PHP:
<?php
//.....
echo $scadenza ; /* se faccio visualizzare il risultato, questo è corretto. Ma poi non riesco a fargli fare il calcolo*/
var_dump($scadenza);
var_dump($adesso);
if ($scadenza =< $adesso){
//.....
?>
poi una domanda: come sono formattate le due date? se sono in formato italiano l'errore può essere li
es (il separatore non ha importanza se uguale in entrambe)
scadenza = 10/04/2013
adesso = 21/08/2012
scadenza è guardando "maggiore" di adesso, ma gli script sono stupidi per loro quello che scrivi è una stringa e nel confronto 10 è minore di 21 quindi scadenza risulta minore di adesso

per avere il confronto delle stringe le date devono essere formattate Y/m/d
scadenza = 2013/04/10
adesso = 2012/08/21
in questo caso il confronto viene giusto
 
ciao
metti var_dump per vedere come sono i formati delle date
PHP:
<?php
//.....
echo $scadenza ; /* se faccio visualizzare il risultato, questo è corretto. Ma poi non riesco a fargli fare il calcolo*/
var_dump($scadenza);
var_dump($adesso);
if ($scadenza =< $adesso){
//.....
?>

in effetti erano sballate!

per avere il confronto delle stringe le date devono essere formattate Y/m/d
scadenza = 2013/04/10
adesso = 2012/08/21
in questo caso il confronto viene giusto


PHP:
$adesso = date('Y/m/d', strtotime("now"));
$arr = strtotime($arrivo);
$scadenza = date('Y/m/d', strtotime("$arrivo +$garanzia year"));


if ($scadenza <= $adesso){
  $gar = "garanzia scaduta";
}else {
 $gar = "in garanzia";
 }
...
La formattazione era sballata in effetti e ho risolto così. Ora si che funziona!
Grazie ancora borgo italia!
 

Discussioni simili