Scadenza di una news

FERMI TUTTI! Forse ho trovato una soluzione piuttosto elegante. Dato che il sito è hostato su Aruba (host linux) c'è la possibilità di far eseguire date operazioni a date ore, diciamo una specie di cron server.

Adesso faccio le prove e vediamo cosa succede
 
allora, con l'opzione di esecuzione automatica di aruba riesco a far eseguire lo script PHP quando mi serve, il problema è lo script:

PHP:
<?php
session_start();
require("./conf/dbconf.inc.php");
dbConnect();
$odierna = date("d.m.Y");
$qU= mysql_query("UPDATE news SET archivio = '1' WHERE scadenza = $odierna");
dbClose();
?>

Non ne vuol sapere di aggiornarmi la tabella news impostando archivio a 1 dove scadenza è uguale alla data odierna
 
ciao
prova a riscrivere questo pezzo modificandolo
<?php
session_start();
require("./conf/dbconf.inc.php");
dbConnect();
$odierna = date("d.m.Y");
$qU= mysql_query("UPDATE news SET archivio = '1' WHERE scadenza = $odierna");
dbClose();
?>
in
<?php
session_start();
require("./conf/dbconf.inc.php");
dbConnect();
$odierna = date("d.m.Y");
$qU="UPDATE news SET archivio = '1' WHERE scadenza = $odierna";

var_dump($qU);

$query=mysql_query($qU);
//e commenta la riga del close, generalmente non serve
//dbClose();
?>

e guarda bene cosa ti restituisce il var_dump, dovrebbe ristituirti una cosa del genere

string(40) UPDATE news SET archivio=1 WHERE scadenza=30.01.2010
 
ecco il dump per la query.

Codice:
string(58) "UPDATE news SET archivio = '1' WHERE scadenza = 2010-03-08"

ho controllato e nel DB la data viene registrata proprio così! Eppure non c'è verso di far cambiare sto basXXXo di campo archivia = a 1!
 
ciao
oltre a quallo che ha detto alex, verifica che ci sia ESATTA corripomdenza tra i nomi tabella e campi e le query.
posta la precisa struttura della tabella
 
È esattamente per questo che gli ho chiesto di modificare così il codice della query. Almeno se commette qualche errore con i nomi dei campi se ne accorge, invece di passare sei settimane a sbattere la testa contro il monitor come facevo io anni fa! :D
 
Ecco l'esportazione di PHP MyAdmin
Codice:
CREATE TABLE IF NOT EXISTS `news` (
  `id` int(25) NOT NULL AUTO_INCREMENT,
  `data` date NOT NULL,
  `titolo` varchar(255) NOT NULL,
  `testo_introduttivo` text,
  `testo_completo` text,
  `scadenza` date NOT NULL,
  `archivia` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `titolo` (`titolo`),
  FULLTEXT KEY `testo_introduttivo` (`testo_introduttivo`),
  FULLTEXT KEY `testo_completo` (`testo_completo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

e questo è il dump attuale della tabella

Codice:
INSERT INTO `news` (`id`, `data`, `titolo`, `testo_introduttivo`, `testo_completo`, `scadenza`, `archivia`) VALUES
(1, '2010-03-05', '22', '<p>22</p>', '<p>22</p>', '2010-03-05', 0),
(2, '2010-03-05', '444', '<p>444</p>', '<p>444</p>', '2010-03-05', 0),
(3, '2010-03-08', '4444', '<p>4444</p>', '<p>4444444</p>', '2010-03-08', 0);

e questo è il file auto_archivia_news.php allo stato attuale:

PHP:
<?php
session_start();
require("./conf/dbconf.inc.php");
dbConnect();
$res = mysql_query( "SELECT utenti_accesso.id FROM utenti_accesso, log_accessi WHERE utenti_accesso.id = log_accessi.id_utenti_accesso AND log_accessi.session_id = '".session_id()."';" );
if (mysql_num_rows($res) > 0) {
$odierna = date("Y-m-d");
$qU=("UPDATE news SET archivia = '1' WHERE scadenza = $odierna");
//var_dump($qU);
$query=mysql_query($qU)or die(mysql_error());  
}
?>

se richiamo il file auto_archivia_news.php la schermata è completamente bianca però il dump della tabella resta invariato.
 
ciao,
due cose che però forse sono stupidaggini
togli le parentesi e gli apici (archivia è un intero)

$qU="UPDATE news SET archivia = 1 WHERE scadenza = $odierna";

così come è la querystringa sembrerebbe giusta:confused:

forse trovato

$qU="UPDATE news SET archivia = 1 WHERE scadenza = '$odierna'";
a odierna gli apici
 
Ultima modifica:
avete presente quando uno script non funziona e vi mettete li a provare le cose più assurde? Era quello... sarà che stò portando avanti 4 siti contemporaneamente...

Comunque funziona! Ho fatto una prova inserendo una news con data di scadenza ad oggi e il campo archivia è uguale a 1.

Un sentito ringraziamento a tutti gli utenti che si sono fatti avanti postando codice e perdendo tempo.
 

Discussioni simili