Query ORDER BY

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Buongiorno a tutti :)

ho questa query che mi visualizza i film per ordine di rilascio, order by DESC,

il campo si chiama release_data

il limite e' impostato a 20,

tramite un if visualizzo anche un'icona NEW, limite fissato per 30 giorni

per qualche strano motivo nella lista compare un film del 2019,

perche'? l'icona NEW non e' visibile, quindi lo sbaglio penso risieda nella query

release_data_test.png


la query

SQL:
<?php
// togliere LIMIT 10 se si desidera visualizzare tutti

    $query=mysqli_query($conn, "SELECT
        film_id,
        movie_title,
        year,
        release_data,
        cover_front
        FROM film ORDER BY release_data DESC  LIMIT 20") or die(mysqli_error());
        while($fetch=mysqli_fetch_array($query)){
?>

questo e' per visualizzare l'icona NEW

PHP:
<?php echo $fetch ['release_data'];


// visualizza l'icona new_icon per 7 day +7*86400, inq uesto caso +30*86400 per 30 giorni

if ( (strtotime($fetch['release_data'])+30*86400)>time() )
  echo '&nbsp; &nbsp;' . "<img src=\"new_icon.gif\" alt=\"new\" />";


?>
 
Ultima modifica:
Se ci sono solo 3 film come nell'immagine è normale che prenda anche quello del 2019, dato che prende gli ultimi 20
 
Ti consiglio di testare la query direttamente nella sezione SQL di phpmyadmin così è più facile capire dove è l'errore
 
non capisco, questo e' molto strano,

query su phpmyadmin limite 20 stesso risultato

con limite 3 compare ancora il 2019 in cima alla lista


release_data_test_2.png
 
ahhhhhhhhh :D la vecchiaia fa brutti scherzi,

il film ha release_year 2091-02-07

e non 2019-02-07

:p

mi ha fregato il campo year 2019
 
dato che non mi sono accorto di questo stupido errore (mio)

per evitare altre sviste vorrei visualizzare la data in questo modo

da 2020-05-31

a

2020-05-31

solo l'anno 2020 con colore rosso e in grassetto

suggerimenti?
 
Per selezionare i primi 4 caratteri della data di rilascio (quindi l'anno) puoi usare:
PHP:
$stringa=$fetch['release_data'];
$anno=substr($stringa,0,4);
 
Quindi ad esempio puoi fare:
PHP:
$stringa=$fetch['release_data'];
$anno=substr($stringa,0,4);
$resto=substr($stringa,4,6);
echo "<span style='color:red;'>$anno</span><span>$resto</span>";
 
  • Like
Reactions: Alex_70
funziona :) grazie Tommy03 ;)

ecco il codice compreso di icona

PHP:
<?php


// code color year by Tommy03

$stringa=$fetch['release_data'];
$anno=substr($stringa,0,4);
$resto=substr($stringa,4,6);
echo "<span style='color:red;'>$anno</span><span>$resto</span>";

// visualizza l'icona new_icon per 7 day +7*86400, in questo caso +30*86400 per 30 giorni

if ( (strtotime($fetch['release_data'])+30*86400)>time() )
  echo '&nbsp; &nbsp;' . "<img src=\"new_icon.gif\" alt=\"new\" />";

?>
 
un'altra cosa, ho impostato in strtotime i giorni a 30,

dopo tale periodo si puo' visualizzare un altro colore differente per la data? :rolleyes:
 
Cioè intendi che se i film sono stati rilasciati più di 30 giorni fa devono essere di un altro colore?
 
esatto, ma solo l'anno,
con possibilita' di modifica, come la stringa per l'icona, se decido un giorno di cambiare da 30 a 7 giorni o altro
 
PHP:
$stringa=$fetch['release_data'];
$anno=substr($stringa,0,4);
$resto=substr($stringa,4,6);
if((strtotime($stringa)+30*86400) > time()){ //qui scegli il numero di giorni
$colore = "green";
}else{
$colore = "orange";
}
echo "<span style='color:$colore;'>$anno</span><span>$resto</span>";
 
  • Like
Reactions: Alex_70
ottimo lavoro Tommy03 :), funziona

grazie ancora ;)

tu e' marino51 siete il meglio in questa sezione del forum , al contrario di chi si eleva in alto e invece dovrebbe abbassarsi e cercare di capire cos'e' l'umilta'.
 

Discussioni simili