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

    Modificare campo di tab MySQL al raggiungimento di una data

    Ciao a tutti,

    La situazione è questa: ho una tabella news composta da data, titolo, testo_introduttivo, testo_completo, archivia, scadenza.

    In data viene inserita la data di pubblicazione della news mentre in scadenza quando si vuole archiviare. Per archiviare la news uso un form in cui aggiorno il campo archivia da 0 a 1. Ora io vorrei poter mettere in campo questa modifica: settare a 1 il campo archivia quando la data odierna è uguale a scadenza.

    Ho provato però non ci sono riuscito. Ecco il codice fatto fin'ora:

    Codice PHP:
    <?php
    $count1 
    0;
    $res1 mysql_query"SELECT * FROM news WHERE archivia = 0 ORDER BY id desc  ;");
    $number=mysql_num_rows($res1);

    if (
    $number == 0)
    {
    print(
    "Al momento non sono presenti news all'interno del sito web del Comune di Cinte Tesino.");
    }
    else{
    print(
    "<table class='tabella'>");
    print(
    "<thead>");
    print(
    "<tr>");
    print(
    "<th class='cella_intestazione' width='15%'>DATA</th>");
    print(
    "<th class='cella_intestazione' width='15%'>SCADENZA</th>");
    print(
    "<th class='cella_intestazione'>TITOLO</th>");

    print(
    "<th class='cella_intestazione' width='35%'>OPZIONI</th>");
    print(
    "</tr>");
    print(
    "</thead>");
    print(
    "<tbody>");
    while ( 
    $riga1 mysql_fetch_array$res1 ) ) {

        
    $dateform explode'-'$riga1["data"] );
        
    $datafin $dateform[2].'.'.$dateform[1].'.'.$dateform[0];
        
    $dateform2 explode'-'$riga1["scadenza"] );
        
    $datafin2 $dateform2[2].'.'.$dateform2[1].'.'.$dateform2[0];
    print(
    "<tr>");
    print(
    "<td class='cella_corpo_2'>".$datafin."</td>");
    print(
    "<td class='cella_corpo_2'>".$datafin2."</td>");
    print(
    "<td class='cella_corpo'>".$riga1["titolo"]."</td>");
    print(
    "<td class='cella_corpo_2'>
    <input type=\"button\" id=\"m"
    .$riga1["id"]."\" name=\"m".$riga1["id"]."\" value=\"Modifica\" title=\"Modifica\" onclick=\"javascript:document.location.href='./modifica_news.php?id=".$riga1["id"]."';\" />
    <input type=\"button\" id=\"c"
    .$riga1["id"]."\" name=\"c".$riga1["id"]."\" value=\"Archivia\" title=\"Archivia\" onclick=\"javascript:arc('".$riga1["id"]."');\" />
    <input type=\"button\" id=\"c"
    .$riga1["id"]."\" name=\"c".$riga1["id"]."\" value=\"Cancella\" title=\"Cancella\" onclick=\"javascript:canc('".$riga1["id"]."');\" />\n</td>");
    print(
    "</tr>");     
        }
    print(
    "</tbody>");
    print(
    "</table>");

    }

    ?>
    però non so come poter automatizzare l'archiviazione.
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    ho apportato alcune modifiche allo script per provare a vedere se riuscivo a farlo funzionare:

    Codice PHP:
    <?php
    $count1 
    0;
    $res1 mysql_query"SELECT * FROM news WHERE archivia = 0 ORDER BY id desc  ;");
    $number=mysql_num_rows($res1);

    if (
    $number == 0)
    {
    print(
    "Al momento non sono presenti news all'interno del sito web del Comune di Cinte Tesino.");
    }
    else{
    print(
    "<table class='tabella'>");
    print(
    "<thead>");
    print(
    "<tr>");
    print(
    "<th class='cella_intestazione' width='15%'>DATA</th>");
    print(
    "<th class='cella_intestazione' width='15%'>SCADENZA</th>");
    print(
    "<th class='cella_intestazione'>TITOLO</th>");

    print(
    "<th class='cella_intestazione' width='35%'>OPZIONI</th>");
    print(
    "</tr>");
    print(
    "</thead>");
    print(
    "<tbody>");
    while ( 
    $riga1 mysql_fetch_array$res1 ) ) {
    $giorno = (date("d"));
    $mese =(date("m"));
    $anno = (date("Y"));
    if(
    "$giorno"."$mese"."$anno==$riga1["scadenza"])
    {
    require_once(
    'auto_archivia_news.php');
    }
    else {
        
    $dateform explode'-'$riga1["data"] );
        
    $datafin $dateform[2].'.'.$dateform[1].'.'.$dateform[0];
        
    $dateform2 explode'-'$riga1["scadenza"] );
        
    $datafin2 $dateform2[2].'.'.$dateform2[1].'.'.$dateform2[0];
    print(
    "<tr>");
    print(
    "<td class='cella_corpo_2'>".$datafin."</td>");
    print(
    "<td class='cella_corpo_2'>".$datafin2."</td>");
    print(
    "<td class='cella_corpo'>".$riga1["titolo"]."</td>");
    print(
    "<td class='cella_corpo_2'>
    <input type=\"button\" id=\"m"
    .$riga1["id"]."\" name=\"m".$riga1["id"]."\" value=\"Modifica\" title=\"Modifica\" onclick=\"javascript:document.location.href='./modifica_news.php?id=".$riga1["id"]."';\" />
    <input type=\"button\" id=\"c"
    .$riga1["id"]."\" name=\"c".$riga1["id"]."\" value=\"Archivia\" title=\"Archivia\" onclick=\"javascript:arc('".$riga1["id"]."');\" />
    <input type=\"button\" id=\"c"
    .$riga1["id"]."\" name=\"c".$riga1["id"]."\" value=\"Cancella\" title=\"Cancella\" onclick=\"javascript:canc('".$riga1["id"]."');\" />\n</td>");
    print(
    "</tr>");     
        }}
    print(
    "</tbody>");
    print(
    "</table>");

    }

    ?>
    ora, non so come scrivere il file auto_archivia_news.php. Qualcuno mi può dare una traccia?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  3. #3
    niente? nessuno?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Neo996sps
    Qualcuno mi può dare una traccia?
    Devi usare un cronjob e fare l'aggiornamento una volta al giorno con una semplice query.

  5. #5
    forse ho trovato come fare. Dato che il sito è su un hosting aruba, c'è una funzione per eseguire dei file PHP ad orari determinati (tipo cron). In questa maniera io posso dire al server di eseguire ogni giorno a mezzanotte lo script in questione.

    Ti ringrazion per la tua preziosa indicazione
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    Non riesco a scrivere correttamente il file per l'archiviazione da far lanciare al server. Qua ho sicuramente un errore, però non capisco dove
    Codice PHP:
    <?php
    require("./conf/dbconf.inc.php");
    dbConnect();
    $oggi date("d.m.Y");
    $res1mysql_query("SELECT * FROM news WHERE data = '".$oggi."'");
    while ( 
    $riga1 mysql_fetch_array$res1 ) ) {
    $qU= ("UPDATE news SET archivia = '1' WHERE scadenza = '".$oggi."'");
    $query=mysql_query($qU);
    }
    dbClose();  
    ?>
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    1) a cosa serve la select?
    2) è sbagliato il modo in cui imposti la data
    3) non serve php per impostare la data
    "update tabella set archiviato = 1 where campo_data = CURRENT_DATE"

  8. #8
    forse è sbagliata la mia idea di base per realizzare lo script:

    - estraggo dalla tabella tutte le righe che hanno il campo scadenza uguale alla data odierna;
    - modifico ogni riga estratta, settando il campo archivia uguale a 1

    in questa maniera l'utente non deve andare ad archiviare manualmente le news che non vuole pubblicate in home page, ma è tutto automatizzato.
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  9. #9
    niente, lo script non funziona. Come posso risolvere?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

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.