Trovare record nel database partendo da id non sequenziali

MarcoGrazia

Utente Attivo
15 Dic 2009
820
18
18
60
Udine
www.stilisticamente.com
Ciao,
come da titolo, sto cercando una soluzione semplice ad un problema complesso, cioè devo estrarre da una tabella, alcuni record non sequenziali non a caso, sarebbe facile, ma con determinati ID.

In pratica ho costruito un problema di news per un sito interno alla nostra intranet, in prima stesura funzionava bene ma non mi permetteva di gestire correttamente le news, cioè selezionavo tutte quelle da leggere e lui non me le faceva più leggere una volta selezionate appunto. Tutte quelle da una certa data!

A me serve invece che l'utente legge anche quelle vecchie se non selezionate e così ho creato nel record utente un campo json, in cui ci sono gli ID di tutte le news che lui ha già letto.

Perfetto!

E no, perché in pratica queste non hanno un ID sequenziale ma casuale, stabilito da quelle che lui ha selezionato come lette.

Un po' come quando in un client di posta uno segna come lette certe email ed altre no.

In realtà la differenza è che alla prossima apertura del programma, io voglio fargli vedere solo quelle che non ha ancora letto, mentre le altre no. E siccome la selezione di quelle già viste è casuale, come faccio la query al database?

In pratica e semplicemente, estraggo il json memorizzato nel campo utente, in questo ci sono memorizzati gli ID delle news già lette, facciamo per esempio che lui ha già letto la 1, la 5 e la 12 io a questo punto devo estrarre la 2, la 3, la 4, la 6, la 7, eccetera.

Ma non so come fare la query, dovrei forse interagire tramite gli insiemi? O bo!
 

marino51

Utente Attivo
28 Feb 2013
3.071
195
63
Lombardia
json, in cui ci sono gli ID di tutte le news che lui ha già letto.
trasforma questo json in una stringa fatta da ID separati da una virgola e poi fai una select con clausola where campo not in (stringa)
ovvero,
select * from news where IDnews not in (1, 5, 12)
quindi estraendo solo i record non letti

1642244381461.png
 

Allegati

  • 1642244298766.png
    1642244298766.png
    9,6 KB · Visite: 7
Ultima modifica:

MarcoGrazia

Utente Attivo
15 Dic 2009
820
18
18
60
Udine
www.stilisticamente.com
Come immaginavo, dovevo interagire con gli insiemi.

Bene funziona ma ho un problema, costruisco la stringa CSV che è una stringa appunto, come la metto nella query?
Cioè se la passo con PDO essendo una stringa mi viene inserita come tale e non va bene, dato che i parametri devono essere interi.

Per ora ho realizzata una porcata invereconda, cioè ho inserito direttamente nella query la stringa contenente il CSV, non c'è un problema di sicurezza dato che comunque i dati provengono direttamente dal database e non possono essere manipolati dall'esterno, ma non mi piace.
 

marino51

Utente Attivo
28 Feb 2013
3.071
195
63
Lombardia
se anziché un campo json avessi una tabella delle news lette per utente, potresti fare la stessa cosa con
select .... where IDnews not in (select ..... where IDuser = :IDuser)
evitando limiti sugli elementi memorizzabili

i dati provengono direttamente dal database e non possono essere manipolati dall'esterno
oppure, .... accontentati
 

marino51

Utente Attivo
28 Feb 2013
3.071
195
63
Lombardia
vedi se qui trovi una soluzione,
"Prepared statements and IN clause"
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Trovare la Tabella del pagamento su WooCommerce WordPress 0
G Nuova Idea su come trovare clienti per sviluppo web Discussioni Varie 6
W Errore di run-time di Microsoft VBScript error '800a0035' Impossibile trovare il file Classic ASP 0
W Impossibile Trovare Provider Classic ASP 7
G [PHP] Trovare tutti i file a un arl PHP 2
K [PHP] Trovare le cartelle online PHP 1
W [PHP] dirmi dove posso trovare.. Offerte e Richieste di Lavoro e/o Collaborazione 1
E salve tutti spero si essere di aiuto e di trovare aiuto Presentati al Forum 2
L Trovare immagini belle per siti Discussioni Varie 1
Federico.Marcelo Come trovare una corretta mailing list italiana Email Marketing 7
C [PHP] Trovare simbolo unicode in stringa PHP 1
V [Visual Basic] trovare versione di un .exe con vb6 Visual Basic 0
D [PHP] Trovare le cartelle online PHP 3
N [VENDO] Articolo SEO "I migliori siti per trovare offerte di lavoro in Germania". Offerte e Richieste di Lavoro e/o Collaborazione 0
C [PHP] Trovare se la parola è presente in una pagina PHP 1
V [PHP] Non riesco a trovare errore PHP 25
C Trovare coordinate del quadrato intorno ad un punto centrale conoscendo la distanza PHP 1
filippino Chiavi a corrispondenza inversa per i risultati organici? (Era: come NON farsi trovare con date chia SEO e Posizionamento 4
S Comando per trovare file PHP 0
F Trovare foto da Codici Prodotti E-Commerce 6
Z Tool per trovare Long Tail SEO e Posizionamento 0
MarcoGrazia Come trovare parole similari nel database? PHP 1
V Trovare numero unico minore PHP 1
IImanuII Trovare del testo in una stringa. PHP 1
IImanuII Trovare un'immagine PHP 0
W Dove trovare temi per Drupal 7 gratuiti ed affidabili? CMS (Content Management System) 1
C Trovare parole con le doppie PHP 2
A GoGo Voglio creare un sito come ustream.tv, dove posso trovare uno script come ustream.tv? Discussioni Varie 0
M PHP/MySQL: Sistema per trovare multiaccount PHP 7
D Trovare dimensione cella tabella Javascript 3
asevenx trovare nome dell'utente dopo login PHP 1
F Trovare clienti Discussioni Varie 3
F Trovare una riga conoscendo un valore (MYSQL) PHP 2
novello88 Trovare domini liberi e/o scaduti Domini 5
StarFish [Prestashop] Dove posso trovare dei template gratuiti per Prestashop CMS (Content Management System) 2
A Trovare un "percorso" in un file PHP... WordPress 1
S trovare span con classe dentro un div jQuery 2
Monital Trovare un array in txt e modificarlo PHP 16
neo996sps Dove trovare omini bianchi 3D [era: Omini bianchi, avete presente?] Webdesign e Grafica 0
emanuelevt trovare file PHP 1
G dove posso trovare un modello di disclaimer e di privacy? Leggi, Normative e Fisco 2
LaKanka ereg() per trovare file di cui so solo parte del nome PHP 3
G dove posso trovare i forum con le cartelle? HTML e CSS 1
max1850 Trovare il num. di ricerche mensili di una keyword SEO e Posizionamento 2
G Trovare su Google il proprio sito dalle immagini SEO e Posizionamento 7
L Dove posso trovare pulsanti in flash? Flash 3
K Impossibile trovare ISAM installabile ASP.NET 1
A Soulmet: annunci online per incontrare nuovi amici e trovare l'anima gemella. Presenta il tuo Sito 1
L Come trovare una licenza Flash 1
B Chi mi sa trovare l'errore?? Programmazione 0

Discussioni simili