Moduletto con articoli consigliati in base ai tag

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Dovrei creare un moduletto che a fine articolo prenda nel db gli articoli correlati in base ai tags ( inseriti nel db in un'unica cella come "prova, test, altrotag, tags, ecc" ) e confrontandoli con quelli dell'articolo visualizzato mi faccia una lista dei 5 articoli che trattano argomenti simili..
Qualcuno ha qualche idea su come realizzarlo?

Avevo pensato a creare un'array dai dati estrapolati dalla cella e poi fare un ciclo con like, ma ancora non ho chiaro il come realizzarlo.

Grazie in anticipo per eventuali risposte.

P.S. girando su internet ho trovato questo script ma nn l'ho capito benissimo..

PHP:
$query_parts = array();
foreach ($array_name as $val) {
// Cosa fa la funzione mysql_real_escape_string()?
    $query_parts[] = "'%".mysql_real_escape_string($val)."%'";
}
// qui non ho capito la parte OR url LIKE
$string = implode(' OR url LIKE ', $query_parts);

// qui non ho capito {$string} le parentesi graffe
$tank = "SELECT url FROM `PHP`.`db` WHERE url LIKE {$string}";
 
Ultima modifica:

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Sono riuscito nell'intento, unica cosa che non riesco a capire è il perchè non mi esclude l'articolo stesso dove questa lista è contenuta, nel senso se il mio articolo è "ciao prova" con id 1 ed io facio una query esattamente come questa:

PHP:
'SELECT COUNT(*) FROM blog WHERE keywords LIKE "%prova key%" OR keywords LIKE "%prettt%" OR keywords LIKE "%prova%" OR keywords LIKE "%ecompilat%" OR keywords LIKE "%volipianss%" AND pub = 1 AND id <> "24"'

Dovrebbe teoricamente trovare tutti gli articoli che contengono una delle keywords indicate che abbiano pub = 1 e id diverso da 24.. Giusto ?
Ho provato anche con != anziché <> ma nulla, la query funziona tranne che nell'ultima parte che dovrebbe servirmi a non includere nella lista l'articolo stesso in cui la lista si trova.


Ho provato anche a togliere gli apici al 24 facendolo diventare di fatto un numero ma nulla..
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Forse ho risolto in questo modo, ma non ho capito il perchè.. Qualcuno me lo spiega?
Aggiungendo delle parentesi tonde dopo il where, che contenessero tutti gli OR. A cosa servono?
PHP:
'SELECT COUNT(*) FROM blog WHERE (keywords LIKE "%prova key%" OR keywords LIKE "%prettt%" OR keywords LIKE "%prova%" OR keywords LIKE "%ecompilat%" OR keywords LIKE "%volipianss%") AND pub = 1 AND id <> "24"'
 

The-Night

Utente Attivo
18 Ott 2015
59
0
6
Ciao, non ne sono sicuro al 100% ma penso che sia perché diventa una condizione se aggiungi le tonde.
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Però in questo momento sono tutte delle condizioni nel senso anche AND ... AND ... è una condizione.. , avevo pensato ad una specie di formula, che quello che sta in parentesi dev'essere verificato prima, bhoo..
 

n1k4r0

Utente Attivo
15 Nov 2012
135
0
0
le parentesi nelle query funzionano come le parentesi nelle espressioni, quello che sta fra parentesi viene valutato prima e ritornato come un unico risultato. puoi anche inserire parentesi dentro le parentesi per raggruppare ulteriormente.
nella tua prima query soltanto l'ultimo OR teneva conto del AND che c'è dopo mentre mettendo gli OR fra parentesi tutti tengono conto del AND perché quello fra parentesi viene ritornato come un unico risultato.
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Diciamo che grazie a questo esempio, che comunque dovró ancora approfondire e per cui colgo l'occasione per ringraziarvi per i chiarimenti, ho conosciuto più a fondo anche le sub query. Ho visto e testato parecchie tipologie diverse e devo dire che sono molto utili ed in tanti casi un'ottima soluzione per ridurre anche di molto il codice.
Quindi ricapitolando: nei casi in cui bisogna aggiungere più OR e più AND ed altri nella stessa query, conviene suddividerli in parentesi? Mi confermate inoltre che come nelle espressioni queste verranno valutate prima dei dati posti al di fuori delle parentesi stesse.


Saluti.
G.G.
 

n1k4r0

Utente Attivo
15 Nov 2012
135
0
0
quando hai più opzioni per una sola variabile conviene metterle fra parentesi così verranno valutate come una sola
 

n1k4r0

Utente Attivo
15 Nov 2012
135
0
0
per semplificare al massimo ogni variabile della query deve risultare true perché la query riporti un risultato, quando ci sono una serie do OR oppure una combinazione di valori che possono avere stati diversi (es a=1 AND b=2 OR a=3 AND b=4) allora si mettono fra parentesi in modo da togliere gli eventuali false dal flusso della query. quindi nel caso dell'esempio di prima si dovrebbe scrivere
Codice:
(a=1 AND b=2) OR (a=3 AND b=4)
a sua volta questo può essere fra parentesi se nella query ci sono altre variabili quindi
Codice:
( (a=1 AND b=2) OR (a=3 AND b=4) ) AND c=5
in questo modo vengono valutati a e b e ritornati come un unico true o false e poi viene valutato c.
anche una serie di OR sulla stessa variabile andrebbero fra parentesi perché così tornano un unico true o false com'è giusto che sia.
spero di essere stato chiaro.

saluti
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Chiarissimo grazie, sopratutto per questo ultimo esempio che è servito a rendere tutto più lineare con esempi caso per caso.. Come sempre grazie a tutti i partecipanti :)


Saluti.
G.G.
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
F access ricerca record con apostrofo. MS Access 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0
P Hosting multidominio con Plesk Hosting 0
L Soluzione con INNER JOIN Database 0
S passare un valore da un form a un file .php con metodo post PHP 4
A Redirect 301 genera url statico con variabili Web Server 0
T problemi con dati menu a tendina HTML e CSS 2
T Query con date MS Access 1
F Url dinamiche da cambiare con categoria, subcategoria e title PHP 2
L Aiuto con DataGridView Visual Basic 1
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
M Aggiunta prodotti nel carrello con lo stesso in e varianti diverse PHP 0
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Problema con position absolute e overflow HTML e CSS 4
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
felino [Wordpress] Gallery con foto selezionabili dall'utente WordPress 0
G Invio di più valori con la stessa checkbox PHP 4
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
I Form con selettore HTML e CSS 0
G phpmailer e php 8.1 con estensione mysqli PHP 6
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
N Vendo sito web di casino online con 1000 giochi Compravendita siti e domini 0
G form invio multiplo con checkbox PHP 12
L Query e selezione DB con $_POST PHP 2
K [PHP] Problema con variabili concatenate. PHP 1
R Dubbi su siti sviluppati con Wordpress e con codice WordPress 6
B Router e telecamere con pannello solare IP Cam e Videosorveglianza 0
Z Cerco ecommerce gratuito meglio se realizzato con Woocommerce di Wordpress. E-Commerce 0
S [CERCO] scambio di articoli con link Offerte e Richieste di scambio links 0
A Immagine decentrata con sfondo trasparente Photoshop 0
O problema con query PHP 4
Jensen Errore di sintassi con DELETE PHP 3
D Casella di testo con grassetto ecc... HTML e CSS 2
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
G Query con i giorni della settimana MySQL 10
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
A Connessione a mdb con php7 PHP 1
P errore 404 con javascript Javascript 2
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0

Discussioni simili