Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Forum De Bell Tolls
 
[PHP] problema con le date
Clicca QUI per vedere il messaggio nel forum
Dodo
premesso che ho provato di tutto per fare un semplicissimo confronto di due date.. qualcuno mi spiega perchè mai non funziona il codice che ho scritto, ovvero l'if mi da sempre false....

voglio semplicemente controllare se l'evento a cui mi sto registrando è già passato o meno... qualcuno può helparmi
code:
\\riceve delle variabili via POST ............ $queryanno = "SELECT anno_incontro FROM lista_incontri WHERE id = $required_incontro"; $querymese = "SELECT mese_incontro FROM lista_incontri WHERE id = $required_incontro"; $querygiorno = "SELECT giorno_incontro FROM lista_incontri WHERE id= $required_incontro"; $anno_corrente = date("y"); $mese_corrente = date("m"); $giorno_corrente = date ("d"); settype($anno_corrente, "integer"); settype($mese_corrente, "integer"); settype($giorno_corrente, "integer"); $anno_incontro = mysql_query($queryanno) or die(mysql_error()); $mese_incontro = mysql_query($querymese) or die(mysql_error()); $giorno_incontro = mysql_query($querygiorno) or die(mysql_error()); if ($anno_corrente <= $anno_incontro) { if ($mese_corrente <= $mese_incontro) { if ($giorno_corrente < $giorno_incontro) { $query = "INSERT INTO accrediti (nome, cognome, email, telefono, attività, città, età, incontro) VALUES ('$required_nome', '$required_cognome', '$required_email', '$telefono', '$required_attivita', '$required_citta', '$required_eta', '$required_incontro')"; if (mysql_query($query, $db)) echo "La tua partecipazione è stata registrata correttamente, ti è stata inviata una conferma di registrazione nella tua casella email"; else echo "Erorre durante l'inserimento"; $from="******@*****.**"; $titolo="Conferma registrazione incontro"; $testo="Ciao $required_nome. Ti Confermiamo l'avvenuta iscrizione all'incontro da te selezionato, ti invieremo pochi giorni prima un promemoria con tutti i dettagli dell'incontro ."; mail($required_email, $titolo, $testo, "From: $from"); } }} else { echo "Non è possibile accreditarsi a questo incontro, in quanto scaduto"; }

DeepBlue
Perché hai convertito a integer la data?
Nel DB le date sono inserite come integer?
Sicuro che le query per ottenere i dati della data dell'incontro vadano a buon fine?

Forse fai prima a convertire le date in timestamp unix e a confrontarli fra loro. Così avresti un solo if da gestire e non dovresti fare conversioni di tipo.

Dodo
ho già provato con timestamp unix e mi da lo stesso problema, per questo mi sono ridotto ad una soluzione a tre colonne, ma nulla :(

le ho convertite in integer pensando potesse esserci un problema di formato, ma non è neanche quello il problema...

le ho provate veramente tutte (quasi)...

JaM
quando non sai se i confronti vanno a buon fine metti un po' di echo sui risultati delle query e su quello che ti stampa la fnzione date...

in genere io i problemi li risolvevo all'80% in questo modo ;)

korn
code:
$querydata = "SELECT giorno_incontro,mese_incontro,anno_incontro FROM lista_incontri WHERE id = $required_incontro"; $row = mysql_fetch_array(mysql_query($querydata)); $dataincontro = mktime(0,0,0,$row[1],$row[0],$row[2]); $datadioggi = mktime(0,0,0,date("m"),date("d"),date("Y")); if ($dataincontro < $datadioggi) { $query = "INSERT INTO accrediti (nome, cognome, email, telefono, attività, città, età, incontro) VALUES ('$required_nome', '$required_cognome', '$required_email', '$telefono', '$required_attivita', '$required_citta', '$required_eta', '$required_incontro')"; if (mysql_query($query, $db)) echo "La tua partecipazione è stata registrata correttamente, ti è stata inviata una conferma di registrazione nella tua casella email"; else echo "Erorre durante l'inserimento"; $from="******@*****.**"; $titolo="Conferma registrazione incontro"; $testo="Ciao $required_nome. Ti Confermiamo l'avvenuta iscrizione all'incontro da te selezionato, ti invieremo pochi giorni prima un promemoria con tutti i dettagli dell'incontro ."; mail($required_email, $titolo, $testo, "From: $from"); } else { echo "Non è possibile accreditarsi a questo incontro, in quanto scaduto"; }


Attento, date("y") è diverso da date("Y"), forse è stato quello.

Dodo
si avevo notato e corretto... ma nulla ancora...

cmq grazie a tutti.. l'unica cosa è da controllare come giustamente ha detto JAM ogni query cosa stampa....

spero che il mio problema non rientri nel 20 % :D

yeah
Scusa se magari ti mando fuori strada (di mysql ho letto qualche pag di un libro :)) ma in accordo con qui
mysql_query() ritorna una risorsa.

quindi devi elaborare con mysql_fetch*(), come fa korn.

Dodo
dici?...sto andando proprio a lavoro... provo e ti dico :D

Dodo
ma sono così rincoglionito da non essermi accorto che quello di korn era diverso dal mio?...

pensavo fosse un quote... oh mamma :oops:

fabpicca
Originally posted by JaM


in genere io i problemi li risolvevo all'80% in questo modo ;)


il restante 20% lo risolvevamo invece a bestemmie

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate