Visualizzazione risultati 1 fino 11 di 11

Discussione: Differenza tra date PHP e Mysql

  1. #1
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito Differenza tra date PHP e Mysql

    Ciao gente,

    avrei bisogno di aiuto, ho perso tutta la mattina a scrivere un codice che non funziona.

    In sostanza mi serve qualcosa che estrae più record da una colonna Mysql (il valore della cella è la data di scadenza di assicurazione di mezzi in formato strtotime) li confronta con la data odierna e se mancano 7 giorni manda una mail ad un indirizzo predefinito.

    Chi mi riesce a fare una piccola bozza?

    Grazie in anticipo...

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

  3. #3
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    ora provo a guardare nuovamente.... tu sei assoldato nel caso non riuscissi...

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Renitente alla leva!

  5. #5
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    ma in che formato deve essere scritta la data nel database

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    In uno dei tipi di campo data disponibili, e.g. DATE, DATETIME, etc.

  7. #7
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    io ho elaborato questo, ma non funziona come dovrebbe, ovvero mi estrae tutti record nel database anche se non sono prossimi alla scadenza

    Codice PHP:
    <?php

    // Mi connetto al database
    include ('connessione/database_5.php');
    mysql_select_db("$db_name2")or die("cannot select DB");

    // Recupero i record
    $rs = mysql_query("SELECT id, tipologia, associazione, descrizione, DATE_SUB(data_sc_assic, INTERVAL 2 DAY) AS data_scad FROM attrezzature_mezzi");
    $nr = mysql_num_rows($rs);
    if (
    $nr != 0){
    for(
    $x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);

    //Invio la mail
    $mittente = 'From: "nome" <io@server.it> \r\n';
    $destinatario = "miamail@hotmail.it";
    $oggetto = "Prossime scadenze assicurazioni";
    $messaggio = 'Lista delle prossime scadenze:'.$row["id"].$row["tipologia"].$row["descrizione"].'
    '
    ;
    mail($destinatario, $oggetto, $messaggio, $mittente);

    }
    }else{
    echo
    "Nessuna attrezzatura o mezzo inserito.";
    }

    ?>

  8. #8
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Non vedo nessuna condizione sulla data!

    Forse dovresti usare quel DATE_SUB per una condizione (WHERE) della query impostando che sia > CURDATE().


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  9. #9
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    ragazzi ora l'ho fatto cosi, ma continua a restituirmi quello che gli pare....

    riuscite a mettermelo a posto?

    Codice PHP:
    <?php

    // Mi connetto al database
    include ('connessione/database_5.php');
    mysql_select_db("$db_name2")or die("cannot select DB");

    // Recupero i record
    $rs = mysql_query("SELECT * FROM attrezzature_mezzi WHERE data_sc_assic >= DATE_SUB(NOW(), INTERVAL 1 DAY)");
    $nr = mysql_num_rows($rs);
    if (
    $nr != 0) {
    for(
    $x = 0; $x < $nr; $x++) {
    $row = mysql_fetch_assoc($rs);

    //Invio la mail
    $mittente = 'From: "nome" <io@server.it> \r\n';
    $destinatario = "miamail@hotmail.it";
    $oggetto = "Prossime scadenze assicurazioni";
    $messaggio = 'Lista delle prossime scadenze:'.$row["id"].$row["tipologia"].$row["descrizione"].'
    '
    ;
    mail($destinatario, $oggetto, $messaggio, $mittente);

    }
    } else {
    echo
    "Nessuna attrezzatura o mezzo inserito.";
    }

    ?>
    Ultima modifica di dreadnaut : 06-11-2012 alle ore 13.19.11 Motivo: + indentazione codice

  10. #10
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Formalmente mi sembra corretto. Comunque per le prove ti conviene prendere la query ed eseguirla con phpMyAdmin dal pannello di controllo.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  11. #11
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    Bene Risolto!

    Allora ragazzi il gioco è fatto, e inoltre ho provveduto ad implementare la cosa:
    Ora manda la mail completa di molte informazioni e elabora e riordina il formato data solo per renderlo italianizzato nella mail. Praticamente elabora tutte le scadenze del database indicate nella colonna "data_sc_assic" guarda quelle in scadenza entro i 12 giorni e quelle già scadute e manda la mail, una mail per ogni mezzo.

    Codice PHP:
    <?PHP
    // Mi connetto al database
    include ('connessione/database_5.php');
    mysql_select_db("$db_name2")or die("cannot select DB");

    // Recupero i record per le assicurazioni
    $rs = mysql_query("SELECT * FROM attrezzature_mezzi WHERE DATE_ADD(CURDATE(),INTERVAL 12 DAY) >= data_sc_assic");
    $nr = mysql_num_rows($rs);
    if (
    $nr != 0){
    for(
    $x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);

    //converto la data
    list($year, $month, $day) = explode('-', $row['data_sc_assic']);
    $data = "$day/$month/$year";

    //Invio la mail
    $mittente = 'From: "nome" <io@server.it> \r\n';
    $destinatario = "miamail@hotmail.it";
    $oggetto = "Prossima scadenza assicurazione";
    $messaggio = 'Sta per scadere l\'assicurazione del mezzo: '.$row["descrizione"].'
    La data indicata di scadenza &egrave; il '
    .$data.'.
    Il mezzo si trova presso: '
    .$row["assoc_affid"].'.
    ---------------
    Costruttore: '
    .$row["costruttore"].'.
    Modello: '
    .$row["modello"].'.
    Targa: '
    .$row["targa"].'.
    Codice inventario magazzino: '
    .$row["invent_mag"].'.
    Codice inventario regionale: '
    .$row["invent_reg"].'.';
    mail($destinatario, $oggetto, $messaggio, $mittente);

    }
    }else{
    echo
    "Nessuna attrezzatura o mezzo inserito.";
    }
    ?>
    Problema da risolvere: come posso evitare che mandi un mail ai campi che riportano data 0000-00-00?
    Ultima modifica di adminreluca : 06-11-2012 alle ore 17.06.47

Regole di scrittura

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