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 2006
    Messaggi
    15

    problema nella gestione delle date

    Ciao a tutti,
    ho un problema, penso, nella gestione delle date tra php e mysql.
    vi spiego il mio problema:
    ho una pagina php, nella quale c'è un box con il titolo dello spettacolo in programmazione nella data odierna.
    la tabella spettacolo sul db è composta dai seguenti campi:
    -id
    -titolo
    -descrizione
    -img
    -data (formato DATE)
    -programmazione (che è un tiny int con valore predefinito di 0)

    il codice php che gestisce la cosa è il seguente:

    <?php
    include("config.inc.php");
    $today = date("Y-m-d");

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    mysql_query("SET CHARACTER SET 'utf8'");
    if ($_GET[data] = $today && $_GET[programmazione] = 0){

    mysql_query("UPDATE spettacolo SET programmazione = '1' WHERE data = '$today'");
    }
    else if($_GET[data] != $today && $_GET[programmazione] = 1){

    mysql_query("UPDATE spettacolo SET programmazione = '0'");
    }

    $query = "SELECT titolo FROM spettacolo WHERE programmazione = 1";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "[*] $row[titolo]";
    }
    mysql_close($db);
    ?>

    praticamente io vorrei che quando nel campo data del db è presente la data di oggi $today, il valore di programamzione cambi, e viceversa, se la data (non è più uguale a $today) ma il valore di programmazione è ancora 1, ricambi su 0 in modo che non venga più visualizzato.
    sto provando in tutti i modi, ma c'è qualcosa che mi sfugge, e funziona solo a sprazzi.
    se la data è 0 a $today e programamzione è 0, mi visualizza il titolo e cambia valore, ma quando la data cambia non torna più a 0..

    grazie per l'aiuto,
    spero di essere stato chiaro!
    ciao

  2. #2
    a parte tutto il resto... se vuoi fare un confronto e non una assegnazione devi mettere due == e non uno solo nella if....

    if ($_GET[data] = $today && $_GET[programmazione] = 0){

    questa che fai e' una assegnazione e non un confronto

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    15
    si, lo so, con = è l'ultima prova che ho fatto per la disperazione ma il problema non è li, è che dopo il primo cambio di valore nel campo programmazione, e con i data!=$today e programmazione ==1 non entra nell'else!

  4. #4
    Originariamente inviato da zim182
    si, lo so, con = è l'ultima prova che ho fatto per la disperazione ma il problema non è li, è che dopo il primo cambio di valore nel campo programmazione, e con i data!=$today e programmazione ==1 non entra nell'else!
    lascia perdere la disperazione e metti lo script corretto altrimenti non si sa quali pesci prendere. Mancano anche alcuni apici agli indici asssociativi di $_GET

    Intanto la data odierna ($today) dove la prendi? Poi dovresti controllare il contenuto di $_GET cioe' se esiste e se e' nel formato == a $today. Se non ci sono le premesse corrette e' inutile vedere che succede nella tabella.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    dimenticavo.... a proposito di logica:

    questo ti mette "TUTTI" i record con programmazione = 0

    Codice PHP:
    mysql_query("UPDATE spettacolo SET programmazione = '0'"); 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    15
    grazie, ho sistemato quello che mi hai detto..
    la data odierna la recupero con date(), per essere sicuro che effettivamente la prende ho fatto l'echo della variabile.
    penso anch'io che sia un problema di formato diverso delle due date, ma se fosse così non dovrebbe andare mai, invece se parto con la data odierna e programamzione = 0 mi va, ma poi cmabio la data e il valore di programmazione non torna più a 0

  7. #7
    in php date() forma una stringa a partire da una data in formato unix timestamp. Se utilizzi il formato ansi di mysql invece un campo in formato DATE (che non e' una funzione) sara' yyyy-mm-dd

    Quindi se vuoi confrontare una stringa generata dalla funzione date() del php, questa dovra' essere nello stesso formato di quella memorizzata sul db... cioe':

    $today = date('Y-m-d');

    rimane poi da vedere cosa ricevi via GET.... e sopratutto ci vuole la condizione where nell'update altrimenti ti pialla con l'aggiornamento tutta la tabella.

    Per ultimo ma non ultimo bisognerebbe conoscere lo stato dell'arte del tuo script dopo gli aggiustamenti correttivi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    15
    grazie per la disponibilità,
    allora il codice ora è così:
    <?
    $today = date("Y-m-d");
    echo $today;

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    mysql_query("SET CHARACTER SET 'utf8'");

    if ($_GET['data'] == $today && $_GET['programmazione'] == 0){
    mysql_query("UPDATE spettacolo SET programmazione = '1' WHERE data = '$today'");
    }

    else if($_GET['data'] != $today && $_GET['programmazione'] == 1){
    mysql_query("UPDATE spettacolo SET programmazione = '0' WHERE data != '$today'");
    }

    $query = "SELECT titolo FROM spettacolo WHERE programmazione = 1";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "[*] $row[titolo]";
    }
    mysql_close($db);
    ?>

    ho provato a fare un echo di GET['data'] all'interno del primo ef e invece di ritornarmi la data mi ritorna 1..

  9. #9
    usa il tag php esteso. prova poi a stampare il contenuto di $_GET

    Codice PHP:
    <?php

    echo "<pre>";
    print_r($_GET);

    $today date("Y-m-d");
    echo 
    $today;
    .....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    15
    l'echo del GET mi ritorna vuoto, ma allora come faccio a richiamare i parametri dal db?

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.