Visualizzazione risultati 1 fino 19 di 19

Discussione: Aiutino per formattare una data

  1. #1
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Smile Aiutino per formattare una data

    Ciao volevo chiedere info circa una formattazione di un dato proveniente dal database. Nello specifico attraverso un form io inserisco un record di cui ho inviato insieme al form anche la data. Il campo data in questo caso è di tipo testo e la data che riesco a inserire è di tipo 23/09/2014. Ora questo dato vorrei richiamarlo da una mia pagina php in questo modo:

    questa è una prova di "Martedì 23 Settembre, 2014"

    volevo sapere se è possibile ottenerlo e se si come poter fare? Infatti vorrei che la datta finale si componesse come sopra prendendo il dato d'origine da quel campo testo.

    grazie a chi mi potrà rispondere

  2. #2
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Certamente si può fare.
    1) Fai un explode della data per avere giorno, mese e anno separati.
    2) Trova il timestamp corrispondente con la funzione mktime.
    3) Usa la funzione date utilizzando il timestamp appena ricavato.
    4) Se date restituisce la data in inglese ("Tuesday 23 September, 2014"), allora ti serve la funzione setlocale per impostare i valori locali (italiani).
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  3. #3
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Smile

    ti ringrazio innanzitutto per la tua risposta...
    potresti gentilmente farmi un piccolo esempio, calcola che il campo nel database che ho dato alla data è di tipo testo quindi è memorizzata in questo modo :

    23/09/2014

    quindi la devo richiamare poi nel modo che ho scrito tipo:

    Prova di Martedì 23 Settembre, 2014

    PS: ti chiedo un esempio perché avendo alcune lacune ho bisogno di qualche esempio per poterci lavorare, ti ringrazio comunque :-)

  4. #4
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Non capisco cosa tu intenda per "esempio", visto che ti ho praticamente scritto la procedura da seguire. Se non conosci le funzioni (i cui nomi ho scritto in grassetto) basta che vai sul sito php.net e leggi come funzionano. Quello che potresti chiedere è invece il significato di alcuni termini, se non li conosci (ad es. "timestamp") o, se non lo sai fare, come si estrae un dato dal database. O meglio specificare tali lacune che possiedi.
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Utilizza questo codice, è più facile e veloce:

    Codice PHP:
    echo "Questa è una prova di ".date_format(date_format($data), "l d F, Y");
    Fonte
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    Anche se in ritardo grazie per le vostre risposte....

  7. #7
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Smile

    Buongiorno a tutti, allora ho fatto in questo modo, scrutando qua e la e mettendo a frutto i consigli già presi

    ho reso i campi data "timestamp" poi ho creato questa query:

    Codice PHP:
    DELETE FROM `oroscopo_segni_standby` WHERE 1 data < NOW ()
    provata in locale e funziona, mi cancella tutti i record che hanno la data inferiore a quella corrente richiamata da NOW()

    Ora devo intergrarla nella pagina con una chiamata query

    Vorrei che ci sia questa possibilità:

    chiamata alla query che si avvia una volta al mese, e nel caso senza cronjob o altro, c'è la possibilità?

    Questo perché credo che se lascio avviare la query per tutte le volte che qualcuno passa sulla pagina, faccio interrogare il database inutilmente dopo che la prima persona che vede già mi fa avviare lo script.

    è importante per questa query inserire la chiusura tipo :
    Codice PHP:
    mysql_close;
    .

    In effetti volevo creare una variabile con una funzione if else del tipo:

    1 caso = se la data corrente è uguale alla prima data nel database, cancella tutte quelle vecchie....

    2 caso = tutti il primo lunedì del mese cancella tutte le date vecchie dal database rispetto alla corrente

    Qualcuno può indicarmi uno script che mi aiuti grazie!

  8. #8
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    La 1 non l'ho capita, anche perché di solito le nuove righe sono messe una dopo l'altra e quindi la prima riga sarà quella più vecchia (sempre che tu intendessi questo!)

    La 2 è molto ma molto più facile!
    Codice PHP:
    list($D, $j) = explode(' ', date('D j'));
    if(
    $D == 'Mon' && $j <= 7)
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  9. #9
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Smile

    Si hai ragione per il primo caso, mi ero confuso perché adesso faccio tutto a mano e ordine in modo decrescente, infatti la prima è l'ultima creata e in successione le vecchie.

    Quindi nell'esempio che mi hai postato lo devo inserire nella mia pagina php in questo modo:

    Codice PHP:
    list($D, $j) = explode(' ', date('D j'));
    if(
    $D == 'Mon' && $j <= 7)
    mysql_select_db($database_connect, $connect);
    $query_delete = "DELETE FROM mia_tabella WHERE data < NOW()";
    mysql_query($query_delete, $connect) or die(mysql_error());
    mysql_close();
    sarebbe corretto in questo modo? Gli If e gli else non ci vogliono? Scusa la domanda forse banale....
    Cioè questa query mi si attiva dalla mia pagina il lunedì di ogni settimana? Ma nel caso volessi un giorno differente?
    dove posso trovare una guida su questi valori?

    ps: ho provato in locale la funzione sulla mia pagina php ma così come l'ho scritta sopra mi ha cancellato tutti i record vecchi lasciando solo quello odierno. Beh funziona adesso dai rispetto a prima che non mi raccapezzavo, però non essendo lunedì oggi c'è qualcosa che non va....;-)
    Ultima modifica di letturasibillaindovina : 02-10-2014 alle ore 15.23.57

  10. #10
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da letturasibillaindovina Visualizza messaggio
    sarebbe corretto in questo modo? Gli If e gli else non ci vogliono? Scusa la domanda forse banale....
    Cioè questa query mi si attiva dalla mia pagina il lunedì di ogni settimana? Ma nel caso volessi un giorno differente?
    dove posso trovare una guida su questi valori?

    ps: ho provato in locale la funzione sulla mia pagina php ma così come l'ho scritta sopra mi ha cancellato tutti i record vecchi lasciando solo quello odierno. Beh funziona adesso dai rispetto a prima che non mi raccapezzavo, però non essendo lunedì oggi c'è qualcosa che non va....;-)
    Guida alla funzione 'date': http://it2.php.net/manual/it/function.date.php Quello che ti ho scritto funziona il primo lunedì di ogni mese, come tu stesso hai specificato.

    Poi devi mettere aprire la graffa nella riga dell'if e chiuderla alla fine (non te l'ho messe perché pensavo che lo sapessi), altrimenti l'if contiene solo la prima istruzione (tutti i blocchi come if-else, for, while ecc. funzionano così). L'else non serve perché l'else sarebbe "non fare niente"
    Codice PHP:
    list($D, $j) = explode(' ', date('D j'));
    // D = prime 3 lettere del giorno in inglese, quindi lunedì = Monday = 'Mon'
    // j = giorno del mese, oggi 2 ottobre quindi '2'
    if($D == 'Mon' && $j <= 7) { // il primo lunedì del mese viene sicuramente nei primi 7 giorni del mese
    mysql_select_db($database_connect, $connect);
    $query_delete = "DELETE FROM mia_tabella WHERE data < NOW()";
    mysql_query($query_delete, $connect) or die(mysql_error());
    mysql_close();
    }
    Citazione Originalmente inviato da letturasibillaindovina Visualizza messaggio
    ops chiedo scusa ad eventuale moderatore, per ERRORE ho postato due volte perché ho aggiunto una modifica, chiedo umilmente venia!
    Credo che possa cancellare tu stesso il messaggio nelle opzioni di modifica del messaggio.
    Ultima modifica di Luffio : 02-10-2014 alle ore 15.24.47
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  11. #11
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    Grazie mille sei stato molto gentile e cortese per le dritte e le correzioni, impresa affrontata con successo! Ora funziona tutto su locale e trà un po' lo invio anche sul server.

    Buona giornata e buon lavoro!

  12. #12
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da letturasibillaindovina Visualizza messaggio
    Grazie mille sei stato molto gentile e cortese per le dritte e le correzioni, impresa affrontata con successo! Ora funziona tutto su locale e trà un po' lo invio anche sul server.

    Buona giornata e buon lavoro!
    Ottimo!
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  13. #13
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Guida alla funzione 'date': http://it2.php.net/manual/it/function.date.php Quello che ti ho scritto funziona il primo lunedì di ogni mese, come tu stesso hai specificato.

    Poi devi mettere aprire la graffa nella riga dell'if e chiuderla alla fine (non te l'ho messe perché pensavo che lo sapessi), altrimenti l'if contiene solo la prima istruzione (tutti i blocchi come if-else, for, while ecc. funzionano così). L'else non serve perché l'else sarebbe "non fare niente"
    Codice PHP:
    list($D, $j) = explode(' ', date('D j'));
    // D = prime 3 lettere del giorno in inglese, quindi lunedì = Monday = 'Mon'
    // j = giorno del mese, oggi 2 ottobre quindi '2'
    if($D == 'Mon' && $j <= 7) { // il primo lunedì del mese viene sicuramente nei primi 7 giorni del mese
    mysql_select_db($database_connect, $connect);
    $query_delete = "DELETE FROM mia_tabella WHERE data < NOW()";
    mysql_query($query_delete, $connect) or die(mysql_error());
    mysql_close();
    }

    Credo che possa cancellare tu stesso il messaggio nelle opzioni di modifica del messaggio.
    Buongiorno, a distanza di una settimana lo script ha funzionato direi, dopo la mezzanotte di oggi ha eseguito lo script cancellando tutti i record. Il problema che mi è sorto oggi che pensavo lo eseguisse una sola volta e che quindi io una volta inserito il record odierno, l'operazione poi fosse rimandata al prossimo lunedì, ma mi sono accorto per caso che il record da me creato è stato poi cancellato, l'ho rimesso (rimettendo sempre la data odierna), l'ho monitorato e dopo qualche ora quando sono andato a controllare il record non c'era più. A questo punto ho disabilitato lo script in attesa di venirne a capo :(

    ...dove potrebbe essere l'inghippo, secondo voi?
    Ultima modifica di letturasibillaindovina : 06-10-2014 alle ore 11.00.35

  14. #14
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    L'inghippo è che non sta controllando se è già stato eseguito oppure no, quindi PER TUTTO IL GIORNO continuerà a eseguirlo cancellando i record di oggi.
    La soluzione è segnare in qualche modo che l'operazione sia effettivamente stata eseguita:
    Codice PHP:
    if($D == 'Mon' && $j <= 7 && non_eseguito()) { ...
    In questo caso, basta salvare la data dell'ultima pulizia (oggi) e verificare se la data odierna è diversa dalla data dell'ultima pulizia (tale verifica non sarà comunque fatta se non è il primo lunedì del mese).
    Codice PHP:
    function non_eseguito(){
    return
    data_di_oggi() != data_ultima_pulizia();
    }
    Ultima modifica di Luffio : 06-10-2014 alle ore 12.03.00
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  15. #15
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    sarebbe corretto scritto così:

    Codice PHP:
    list($D, $j) = explode(' ', date('D j'));
    // D = prime 3 lettere del giorno in inglese, quindi lunedì = Monday = 'Mon'
    // j = giorno del mese, oggi 2 ottobre quindi '2'
    if($D == 'Mon' && $j <= 7 && non_eseguito()); { // il primo lunedì del mese viene sicuramente nei primi 7 giorni del mese
    function non_eseguito(){
    return
    data_di_oggi() != data_ultima_pulizia();
    mysql_select_db($database_connect, $connect);
    $query_delete = "DELETE FROM mia_tabella WHERE data < NOW()";
    mysql_query($query_delete, $connect) or die(mysql_error());
    mysql_close();
    }
    ps: return data di oggi() != data_ultima_pulizia sono delle variabili che devo inserire prima giusto?

    così:
    $data_di_oggi = ? (cosa inserire);
    $data_ultima_pulizia = ? (cosa inserire);

    he he grazie intanto ;-)

  16. #16
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Non sai cos'è una funzione? Ok.

    Funzione: Porzione di codice che puoi richiamare più volte e che possono avere dei parametri da utilizzare. Esempio di funzione:
    Codice PHP:
    function doppio($numero){
    $numero = $numero * 2;
    return
    $numero;
    }
    echo
    doppio(2);echo doppio(3);echo doppio(4);echo doppio(5);
    "function <nome>" definisce una funzione, invece sotto è utilizzata: verrà stampato "46810" (2*2=4, 3*2=6 ecc).
    (Documentazione PHP: http://php.net/manual/it/functions.user-defined.php)

    Quando ho scritto
    Codice PHP:
    function non_eseguito(){
    return
    data_di_oggi() != data_ultima_pulizia();
    }
    significava una possibile implementazione, significa che al posto di non_eseguito() ci va un'implementazione che non ti ho dato. (Ad es. la data di oggi la puoi trovare con date('j/n') e la data dell'ultima pulizia la estrai dal database, supponendo che la salvi da qualche parte nel database.)

    PS: ho scritto data_di_oggi() e non $data_di_oggi perché "pareva brutto"
    Ultima modifica di Luffio : 06-10-2014 alle ore 14.33.56
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  17. #17
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    ok capito l'antifona ad ogni modo grazie per il tuo tempo e la spiegazione... gentilissimo.
    Studierò meglio

    grazie ancora

  18. #18
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da letturasibillaindovina Visualizza messaggio
    Studierò meglio
    In questa stessa pagina sono state citate e/o usate alcune funzioni: date_format(), NOW(), explode(), date(), mysql_select_db(), mysql_query(), mysql_close().
    La differenza tra tutte queste e quelle introdotte da "function" è che le prime sono già definite in PHP, le seconde sono definite/create dall'utente (=programmatore dello script). Imparare a usare correttamente una funzione è un passo molto importante e praticamente fondamentale della programmazione ^^
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  19. #19
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    In questa stessa pagina sono state citate e/o usate alcune funzioni: date_format(), NOW(), explode(), date(), mysql_select_db(), mysql_query(), mysql_close().
    La differenza tra tutte queste e quelle introdotte da "function" è che le prime sono già definite in PHP, le seconde sono definite/create dall'utente (=programmatore dello script). Imparare a usare correttamente una funzione è un passo molto importante e praticamente fondamentale della programmazione ^^
    A volte si cerca di fare alla meglio quando è vero quello che dici tu che le cose dette sono alla base della programmazione, avendo iniziato da un annetto e praticamente da zero, penso di aver fatto dei bei passi, ovviamente non mi metto a confronto ci mancherebbe, da autodidatta cercherò sempre di migliorare. Il fatto di avere delle lacune, le riconosco ci mancherebbe, sul fatto di studiare approfonditamente purtroppo il tempo è quello che è e cerco di fare tutto, ma non riesco ad arrivare su tutto. Apprezzo moltissimo l'aiuto finora dato, altervista per avermi dato l'opportunità di ricevere assistenza da gente competente. Non vuole essere una sviolinata la mia, ma a volte bisogna dare a Cesare quel che è di Cesare he he he grazie ancora

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •