Sistema di news interno al sito

MarcoGrazia

Utente Attivo
15 Dic 2009
820
18
18
60
Udine
www.stilisticamente.com
Ciao
ho un problema
biggrin.gif


Sto creando un semplice sistema di news interno ad un sito.

La tabella delle news è così costruita (mysql)
SQL:
CREATE TABLE `news` (
`id_news` int(10) UNSIGNED NOT NULL,
`id_ute` int(10) UNSIGNED NOT NULL,
`data` timestamp NOT NULL DEFAULT current_timestamp(),
`titolo` varchar(256) NOT NULL,
`messaggio` varchar(2048) NOT NULL,
`visibile` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0=invisibile (predefinito), 1 = visibile'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='News al sito delle Apo / Leg';
Dove id_ute è l'ID di chi ha inserito il messaggio, id_news è l'ID della news; titolo e messaggio sono intuitivi immagino, data è la data di inserimento del messaggio, visibile è un flag (zero o uno) per rendere il messaggio visibile o meno senza doverlo cancellare.

Ogni utente poi è accreditato al sito tramite account e password e quando effettua il login dal database viene prelevata la data del suo ultimo ingresso, così da vedere se sono state generate news dall'ultima volta che si "loggato".

Semplice no?

Fino a qui sembra di sì, e in pratica dopo il login si viene portati nell'homepage dove c'è la finestra che mostra le eventuali news (se non ce ne sono non viene mostrata nemmeno la finestra).

Quindi ecco il problema che mi si presenta: dovendo fare il check delle news ho pensato di verificare tramite query sql se la data riportata dal record utente fosse maggiore o uguale a quella dell'ultima news inserita, in pratica faccio:
codice:
SQL:
SELECT * FROM news WHERE visibile = 1 AND data >= :data_ingresso_utente ORDER BY data ASC
Per provarlo ho inserita una semplice news con questi dati:
1, 2, '2020-02-21 06:44:51', 'News', 'Da oggi esiste un bellissimo sistema di news nel sito.', 1
E dato che la data del mio ingresso al sito è quella di oggi 2022-01-12 08:42:11 non mi doveva dare nessuna news in quanto la data era precedente al mio ingresso.

In realtà mi genera un errore:
Fatal error: Uncaught PDOException: SQLSTATE[42000]:
Syntax error or access violation: 1064 Errore di sintassi nella query SQL vicino a '> ? ORDER BY data DESC; --'
linea 1 in C:\Apache\users\marco\apoleg-2\index.php on line 720( ! )
PDOException: SQLSTATE[42000]:
Syntax error or access violation: 1064 Errore di sintassi nella query SQL vicino a '> ? ORDER BY data DESC; --'
linea 1 in C:\Apache\users\marco\apoleg-2\index.php on line 720
Call Stack#TimeMemoryFunctionLocation10.0000466936{main }( )...\index.php:020.0312634584leggiNews( $pdo = class PDO { }, $dataUltimaNewsLetta = '2022-01-12 08:42:11' )...\index.php:75130.0312634584prepare( $statement = 'SELECT * FROM news WHERE visibile = 1 AND data => :data ORDER BY data DESC; --' )...\index.php:720

Non si legge benissimo ma non riesco a formattarlo meglio.

Questo se la query riporta data >= :data_ingresso_utente se invece inserisco come query data =< :data_ingresso_utente allora la news viene letta.

Ovvio, viene letta in quanto gli ho chiesto di leggermi quelle più vecchie, ma se cambio la query mi da errore.
Ho pensato: va bene , non ci sono altre news con data maggiore di oggi, quindi può dare adito ad un errore (bo!) cambio la data della news, la porto a febbraio 2022!
Niente, stesso errore. Sono bloccato.

Dato che mi chiederete il codice PHP ecco lo script che legge le news.
Codice PHP:
PHP:
function leggiNews($pdo, $dataUltimaNewsLetta = null){
            $sql = 'SELECT * FROM news WHERE visibile = 1 AND data >= :data ORDER BY data DESC; --'; 
             $handle = $pdo->prepare($sql);  
            if(empty($dataUltimaNewsLetta) === true)
              //  Se è false leggo tutte le news      
              $handle->bindValue(':data', null, PDO::PARAM_NULL);  
            else
              //  Leggo le news a partire dalla data      
              $handle->bindValue(':data', $dataUltimaNewsLetta, PDO::PARAM_STR);
            $handle->execute();  
            $news = $handle->fetchAll();
            unset($handle);
            return $news;
}
Dove $pdo è la connessione al database, e $dataUltimaNewsLetta, è la data segnata nel login utente, che se non ha mai effettuato il login non è presente e per questo va a NULL e legge tutte le news presenti nel database (forse comunque dovrei limitare questa data in ogni caso o tra poco diventeranno centinaia
biggrin.gif
)
 

MarcoGrazia

Utente Attivo
15 Dic 2009
820
18
18
60
Udine
www.stilisticamente.com
era la prima cosa pensata, ma ....
non ci dai neppure il piacere di provare il codice .....
ci ho sbattuto la testa due giorni, poi ho inserito il post qui, nel frattempo ho fatto quello che dovevo fare fin dall'inizio, provare la query su phpMyAdmin e... SBAM!
Cambiato il nome al campo tutto è andato a posto, funziona benissimo, infatti ora lo sto cambiando completamente :D
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [gratuito] cerco sistema news xml in php5 Offerte e Richieste di Lavoro e/o Collaborazione 1
P Creazione sistema banner news (HELP!! Entrate perfavore!) Database 0
F Sistema gestione news in Flash Flash 4
A sistema di commenti+guestbook+aggiornamento news rss PHP 0
R Sistema news - PDF PHP 1
T SSD - errore sistema Hardware 2
R Come creare sistema Add to homescreen PHP 3
L Sistema outdoor centralizzato IP Cam e Videosorveglianza 0
F Sistema di autenticazione e pagamento PHP 3
LDB Multimedia e Internet Offro sistema di affiliazione remunerato Offerte e Richieste di scambio links 1
R [PHP] Creare sistema random PHP 3
brasoft2019 [PHP] Sistema di gestione presenze PHP 29
F Sistema unico e perfetto per ottenere oltre 10.000+ followers al giorno! Annunci servizi di Social Media Marketing 0
L Trasferimento dei file OLM Mac in formato PST sul sistema Mac Mac e Software 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino Windows 8.1: installare sistema operativo e programmi in due hard disk diversi Windows e Software 4
M Esiste un sistema di video sorveglianza simile? IP Cam e Videosorveglianza 1
W [Javascript] Eseguire script residente nel sistema da html remota Javascript 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
V [Visual Basic] ottenere info su sistema Visual Basic 1
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
P Sistema per identificare utente se proviene da apertura app android Sviluppo app per Android 3
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
loois Ho un problema nella creazione di un sistema di commenti in PHP PHP 11
xone [MySQL] Comparazione data per sistema di prenotazioni MySQL 23
papayablu Calcolatore scommesse a sistema per Android? Smartphone e tablet 4
A Sistema di comunicazione visiva IP Cam e Videosorveglianza 0
N Sistema di Help di Delphi 7 non funziona su Win10 Windows e Software 0
R Sistema Operativo Windows e Software 1
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
S Sistema di iscrizione al mio sito PHP 1
F come creare un sistema ranking tra due tabelle (TOMBOLA/BINGO) PHP 8
D Sistema di videocamere alta qualita IP Cam e Videosorveglianza 1
E sistema di autenticazione PHP 4
R Sistema di conteggio (somma) HTML e CSS 4
felino Presentazione foto e sistema di votazione PHP 2
M "BOOTMGR is missing" - formattare HD di sistema Windows e Software 2
JackIlPazzo Sistema di login e registrazione avanzato PHP 1
M Sistema per gestione file. PHP 1
S Creare Sistema di API Request e Response libero e protetto PHP 7
Christian1977 Nuovo sistema operativo Android Smartphone e tablet 3
A File di sistema PHP 6
simonetta619 sistema operativo a 32 o a 64bit? Windows e Software 1
L pdo e sistema crud PHP 1
P Sistema di consultazione orari PHP 2
A windows 8 - INTERRUZIONE IMPREVISTA SERVICES DI SISTEMA Windows e Software 0
Alessandro Le Mura Sistema votazione mysql - php a stelle PHP 3
C Sistema particolare di password PHP 5
F Sistema anti MySQLi Injection? PHP 6
P Script sistema rating PHP 0

Discussioni simili