Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    46

    Recuperare data/ora di un record da Mysql

    Salve,

    Ho creato una tabella dati che contiene diversi campi (nome cognome ecc...), ma non è stato inserito un campo per registrare la data e ora di registrazione. E' possibile in qualche modo recuperare questo dato -dopo che è già sono avvenute le registrazioni-?

    Grazie mille

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Credo di no, il DB contiene solo i dati che ci vengono inseriti, se la data non è stata inserita, non è recuperabile.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    46
    Ok grazie mille,

    ora ho aggiunto la colonna data ma non registra ugualmente (intendo le nuove iscrizioni chiaramente). Sicuramente sbaglio qualcosa nel codice che riporto:

    codice:
     	$sql="INSERT INTO dati (nome, cognome, email, tel, provincia, privacy, dem, data)  	VALUES  	('$_POST[nome]','$_POST[cognome]','$_POST[email]','$_POST[tel]','$_POST[provincia]','$_POST[privacy]','$_POST[dem]',time()')";
    Registra tutto, mentre nel campo data esce time() . Qual è l'errore?

    Grazie.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    L'errore è che hai messo time() dentro ai doppi apici, se l'editor che usi per scrivere il codice ti fa l'highlight te ne accorgi subito perché time() ti apparirà del colore delle stringhe e non di quello delle funzioni.
    time() è una funzione, non una variabile, quindi non viene valutata se la metti all'interno di una stringa, neanche se la stringa è con i doppi apici.

    Altre 3 cose:
    - non passare mai ad una query i dati che arrivano da un form direttamente senza controllarli
    - per gli indici degli array usa sempre gli apici, quindi ad esempio $_POST['nome']
    - alla fine della query, dopo time(), hai un ' di troppo

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    46
    Ciao,
    grazie dell'aiuto. Purtroppo io capisco pochissimo- quasi nulla di php-, ho solo editato questo vecchio script che ho postato sopra. Come posso fare quindi per registrare la data? Per esempio in un altro script che ho:

    codice:
    $str=$db->prepare('INSERT INTO hits (id,ip,page,timestamp,orderid,level) VALUES (?,?,?,?,?,?)'); $str->execute(array($_GET['id'],'$_SERVER['REMOTE_ADDR']', '$_SERVER['HTTP_REFERER']',time(), $orderid, $level)); ?>
    come mai la data la registra correttamente? Non è all'interno di una stringa la funzione time()? (Infatti stavo cercando di riutilizzarlo in questa occasione senza successo). Poi un'altra cosa, come posso verificare i dati che arrivano dal form?

    Grazie mille gentilissimo!

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    No, in questo caso non è dentro una stringa, ma è l'elemento di un array.

    Se vuoi far funzionare il primo codice che hai postato, modificalo così
    Codice PHP:
    $sql "INSERT INTO dati (nome, cognome, email, tel, provincia, privacy, dem, data) VALUES ('".$_POST['nome']."', '".$_POST['cognome']."', '".$_POST['email']."', '".$_POST['tel']."', '".$_POST['provincia']."', '".$_POST['privacy']."', '".$_POST['dem']."', ".time().")"

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    46
    Grazie mille di tutto! Ora funziona. Una piccola cosa se puoi, come posso far registrare la data es . 13/09/2013 13:05 anzichè: 1379070194 ?

    Grazie ancora.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    invece di time() mettici

    date('d/m/Y H:i')

    Il campo data però deve essere di tipo varchar e non int o altri formati numerici.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    46
    Grazie ancora ! Risolto. Per quanto riguarda la verifica dei dati che mi dicevi prima, come posso fare? Grazie e scusa il disturbo.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Da quel punto di vista ci sarebbe molto da dire, ti converrebbe leggere qualcosa sulla sicurezza, per esempio come evitare "slq injection", ma a grandi linee:
    - verifica che i dati numerici siano davvero dei numeri e non contengano altri caratteri, una cosa alla buona è mettere (int) davanti alla variabile, così viene convertita in un numero intero, ma non è detto che il dato sia coerente con ciò che dovrebbe rappresentare.

    - tutte le variabili che devono contenere stringhe passale alla funzione mysql_real_escape_string()

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.