Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    52

    [mysql+php]time da database <= curtime

    ho una situazione di questo tipo
    codice:
    while ($row = mysql_fetch_array($result))
    {      
    echo "$row[tipo] " . 
         "$row[inizio] " . 
    "$live" .
    " $row[titolo]" . 
    " $row[canale] " .
    " $row[link]" .
    "$row[info]" . "
    
    "; }
    devo ricavare la variabile $live per ogni risultato. se CURTIME >= $row[inizio] e se CURTIME <= $row[fine] $live="live ora" altrimenti $live="".
    ho provato intersecando due if ma non funziona
    codice:
    while ($row = mysql_fetch_array($result))
    {  if (CURTIME >= $row[inizio]){ if (CURTIME <= $row[fine])  $live = "live ora"; else $live ="";} 
    echo "$row[tipo] " . 
         "$row[inizio] " . 
    "$live" .
    " $row[titolo]" . 
    " $row[canale] " .
    " $row[link]" .
    "$row[info]" . "
    
    "; }
    qualcuno sa come farlo funzionare? ($row[inizio] $row[fine] sono in formato TIME)

    ciao e grazie a tutti

    (per i moderatori: se trovate un titolo migliore cambiatelo pure)

  2. #2
    mettilo direttamente nel where cosi' selezioni subito solo i record che ti interessano.

    WHERE CURTIME() BETWEEN inizio AND fine

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    52
    io devo visualizzare con la query tutti i record e in base a quando si connette l'utente confrontare tutti gli orari estratti

  4. #4
    Se lo devi confrontare in php considera' che CURTIME() e' una funzione di MySQL. Dovresti trasformare la data in unix timestamp in modo da avere un valore numerico.

    Con time() prendi il valore corrente (al secondo), nella query utilizza la funzione UNIX_TIMESTAMP(inizio)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    52
    scusa ma non ho capito bene, basta che sostituisco CURTIME con time(), in sostanza devo fare in modo che se l'ora attuale è compresa tra [inizo] [fine] la variabile $link="live ora"

    grazie per la pazienza

  6. #6
    potresti fare nella SELECT
    codice:
    select *, UNIX_TIMESTAMP(inizio) as start,
              UNIX_TIMESTAMP(fine) as stop
              from tabella ....
    e poi nel confronto:
    codice:
    if ( TIME() >= $row['start'] AND time() <= $row['stop']) {
    
         $live = "live ora";
    
         }  else  {  $live ="";  }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    52
    EDIT: mentre scrivevo non mi sono accorto della tua risposta
    sembra che abbia risolto.
    prima ho settato
    codice:
    $adesso = date("G:i:s",time());
    dopo l'ho messo negli if
    codice:
    while ($row = mysql_fetch_array($result))
    {   if ($adesso >= $row[inizio]) {if ($adesso <= $row[fine]) $live = "ok";  } ;
    echo "$row[tipo] " . 
         "$row[oinizio] " . "$live" .
    " $row[titolo]" . 
    " $row[canale] " .
    " $row[link]" .
    "$row[info]" . "
    
    "; }
    grazie mille pero.mac per la dritta dul time()

  8. #8
    se metti data ora attuale, non serve usare time() in date. la data ora corrente la prende di default.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.