Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Script controllo date e redirect che non funziona...

    Salve a tutti.
    Sto realizzando uno script php che confronta delle date salvate in una tabella con la data attuale... se ci sono record che danno risultato inferiore pari a 30 dovrebbe stamparli, altrimenti deve fare il redirect su un altra pagina...
    lovviamente c'è qualcosa che non torna... perchè basta fare piccoli cambiamenti che sballa, nel senso che se ci sono record validi non li stampa, oppure li stampa ma se li modifico dal db non fa il redirect, o altro... se posto qui il codice mi dareste una mano? Grazie.
    Codice PHP:
    <?php

    $serverdb
    ='localhost';
    $userdb='root';
    $passdb='';
    $db='test';
    $table='news';
    $link=mysql_connect("$serverdb","$userdb","$passdb")
    or die (
    "Impossibile connettersi");
    mysql_select_db($db,$link);

    $sel=mysql_query("SELECT * FROM news
    WHERE data <= DATE_ADD(CURDATE(), INTERVAL 30 DAY);"
    );
    if (!
    $sel) {
               exit (
    '

     Errore mentre recuperavo i dati' 
    mysql_error() . '</p>');
     
                    }
    while (
    $news=mysql_fetch_array($sel))
    {
    if (!
    $news) {
    echo 
    "non ci sono eventi imminenti!";
    }

    else {
    $a=$news['dataev'];
    $for1=explode(" "$a);
    $data=explode("-"$for1[0]);
    $ora=explode("-"$for1[1]);

    $a1=$news['data'];
    $for1=explode(" "$a1);
    $data1=explode("-"$for1[0]);
    $ora1=explode("-"$for1[1]);

         echo 
    "".$news['titolo']."</h2>
    "
    .$news['art']."
    che si terrà il "
    .$data[2]."/".$data[1]."/".$data[0]." alle ore ".$ora[0]."

    Pubblicato il "
    .$data1[2]."/".$data1[1]."/".$data1[0]." alle ore ".$ora1[0]."

    </p>"
    ;


       }

     
    ?>
    In questo caso non stampa la stringa "non ci sono eventi imminenti" (ho preferito un po' semplificare...) e posso immaginare che faccia cosi perchè è dentro il while.... ma come sistemarlo per i miei scopi???? Grazie a tutti quelli che mi daranno una mano.

  2. #2
    ... trovato l'errore... sbagliavo, come supponevo nel far analizzare l'array quando è vuoto... posto il codice finale, magari può servire a qualcuno:
    Codice PHP:
    <?php

    $serverdb
    ='localhost';
    $userdb='root';
    $passdb='';
    $db='test';
    $table='news';

    $link=mysql_connect("$serverdb","$userdb","$passdb")
    or die (
    "Impossibile connettersi");


    mysql_select_db($db,$link);

    $sel=mysql_query("SELECT * FROM news
    WHERE data <= DATE_ADD(CURDATE(), INTERVAL 30 DAY);"
    );
    if (!
    $sel) {
               exit (
    '

     Errore mentre recuperavo i dati' 
    mysql_error() . '</p>');
     
                    }
    if (
    mysql_num_rows($sel) == 0) {
       echo 
    "non ci sono eventi";
    } else {
       while(
    $news mysql_fetch_array($sel)) {


    $a=$news['dataev'];
    $for1=explode(" "$a);
    $data=explode("-"$for1[0]);
    $ora=explode("-"$for1[1]);

    $a1=$news['data'];
    $for1=explode(" "$a1);
    $data1=explode("-"$for1[0]);
    $ora1=explode("-"$for1[1]);

         echo 
    "".$news['titolo']."</h2>
    "
    .$news['art']."
    che si terrà il "
    .$data[2]."/".$data[1]."/".$data[0]." alle ore ".$ora[0]."

    Pubblicato il "
    .$data1[2]."/".$data1[1]."/".$data1[0]." alle ore ".$ora1[0]."

    </p>"
    ;
    }
    }
     
    ?>
    in pratica con questo codice stampa tutti i record che nel campo 'data' contengono un timestamp non superiore di 30 giorni alla data attuale e se assenti stampa la striga "non ci sono eventi".
    Grazie comunque!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.