• Benvenuti su XenForo Italia!

    Stai navigando nella nostra community come Ospite.

    Avere un account su XenForo Italia ti permetterà di creare e partecipare alle discussioni, scaricare i file di traduzione in italiano, vedere le immagini e i video a formato intero, iniziare conversazioni personali con gli altri membri del forum e di utilizzare tutte le funzioni di questo sito.

    Condividi anche tu la tua passione per XenForo!

    Registrarsi è gratis ed elimina la pubblicità

Spawn

Admin XenForo
Licenza Verificata
Punteggio reazioni
0
Punti
28
Un aiuto su uno script di ricerca avanzata in php che sto verificando.



Salve a tutti premesso che sono alle prime armi ma voglio imparare qualche cosa su php. Sto modificando un Add-on inerente un motore di ricerca da implementare su un mio forum . La query che ho realizzato mi cerca solo nel testo dei post ma non nei titoli.
Allego sotto la query
// run query
if ($keywords != '')
{
$posts = $db->fetchAll("
SELECT xf_post.post_id,
xf_post.username,
xf_thread.title AS threadTitle,
xf_node.title AS forumTitle,
xf_post.post_date
FROM xf_post
INNER JOIN xf_thread ON xf_thread.thread_id = xf_post.thread_id
INNER JOIN xf_node ON xf_node.node_id = xf_thread.node_id
WHERE xf_post.message LIKE " . XenForo_Db::quoteLike($keywords, 'lr') . "
$whereclause
ORDER BY xf_post.post_id DESC
LIMIT ?
", $limit);
}
A me interesserebbe che cercasse anche nella tabella xf_thread e precisamente in uno dei suoi campi che si chiama title. (xf_thread.title)
il mio problema è come impostare il select per due tabelle il FROM
il WHERE ho pensato si potesse sostituire cosi: WHERE xf_post.message AND xf_thread.title LIKE " . XenForo_Db::quoteLike($keywords, 'lr') . "
come posso fare? qualcuno mi potrebbe spiegare come farlo cercare anche nella tabella xf_thread e campo title?
grazie mille.
 

netkingZ

Admin XenForo
Licenza Verificata
Punteggio reazioni
84
Punti
55
Prova questo:

Codice:
if ($keywords != '')
{
       $posts = $db->fetchAll("
                     SELECT xf_post.post_id,
                                      xf_post.username,
                                      xf_thread.title AS threadTitle,
                                      xf_node.title AS forumTitle,
                                      xf_post.post_date
                      FROM xf_post
                      INNER JOIN xf_thread ON xf_thread.thread_id = xf_post.thread_id
                      INNER JOIN xf_node ON xf_node.node_id = xf_thread.node_id
WHERE xf_post.message LIKE " . XenForo_Db::quoteLike($keywords, 'lr') . "$whereclause
AND xf_thread.title LIKE " . XenForo_Db::quoteLike($keywords, 'lr') . "$whereclause
ORDER BY xf_post.post_id , xf_thread.thread_id DESC
LIMIT ?
", $limit);
}
P.s.: Non ho avuto il tempo di testarlo.
 

Spawn

Admin XenForo
Licenza Verificata
Punteggio reazioni
0
Punti
28
  • Autore discussione Autore discussione
  • #3
Con il tuo script non trova nulla ora. Ne nel testo e ne nel titolo. Anzi nel titolo telesystem palco 22l05 me lo trova solo se metto 22l05 Non mi da alcun errore quindi credo che vada affinata la queri. Con il precedente script potevo cercare all'interno di una sigla prendendo anche 4 caratteri dal centro della stessa. Ad esempio BN44-00226A. Se prendo 00226 dal centro di questa sigla (come anche di altre sigle) lui lo trovava. Ora non +.

In pratica vorrei poter anche cercare due parole. Esempio : vorrei cercare nel post (e non sul titolo) due sigle. Durante la ricerca il sistema deve poter restituire i post che contengono quelle due parole nel messaggio ed escludere i post che non li hanno.
 
Ultima modifica:

Spawn

Admin XenForo
Licenza Verificata
Punteggio reazioni
0
Punti
28
  • Autore discussione Autore discussione
  • #4
"Ne nel testo e ne nel titolo. Anzi nel titolo telesystem palco 22l05 me lo trova solo se metto 22l05" ---purtroppo me lo trovava perchè 22l05 era contenuto nel messaggio
 

netkingZ

Admin XenForo
Licenza Verificata
Punteggio reazioni
84
Punti
55
Per prima cosa ti conviene suddividere le parole cosi che avvenga un analisi singola di ricerca.
Poi inserire il codice che ti ho scritto.
In fine inserire il risultato visivo.

P.s.: Non ho provato il codice lo ripeto.
P.p.s.: Al massimo ti conviene inserire un AND-OR All'interno della ricerca del WHERE.
P.p.p.s.: Fornisci il link al tuo sito.
 

Spawn

Admin XenForo
Licenza Verificata
Punteggio reazioni
0
Punti
28
  • Autore discussione Autore discussione
  • #6
Ho risolto pero' ho ancora un problema legato alle sezioni ove i gruppi non sono abilitati. In pratica se uso la ricerca il motore mi mostra messaggi contenuti nelle sezioni che normalmente sono precluse au un certo gruppo. Pero' se ci clicco sopra mi avvisa che non si anno i permessi per accedervi. Mi piacerebbe che se non appartendo al gruppo abilitato a quella sezione il motore di ricerca non mi deve mostrare la sezione a me preclusa. Come si puo' ovviare? Comunque ho usato Or in WHERE ed è andato...ma mi mostra anche i post delle sezioni che non dovrei vedere anche non mi fa accedere.

Il forum è : www.ilriparatore.com/forum
Al momento siamo in fase di test di tutte le funzioni del mostro XenForo che pero' ha un motore di ricerca veramente pessimo. E quindi abbiamo messo mano ad un Add-on alternativo...realizzato da Andyb (apposta per noi) e poi lo abbiamo adattato alle nostre esigenze. Anche quello di Andyb aveva una pecca e cioè non mostrava i risultati delle sezioni protette anche se vi appartenevo...quindi peggio.
 

netkingZ

Admin XenForo
Licenza Verificata
Punteggio reazioni
84
Punti
55
Se non erro esiste l'opzione fra i permessi dei gruppi per limitare l'utilizzo della ricerca , in ogni caso puoi modificare la query escludendo l'id delle sezioni che non vuoi che diano accesso ai risultati oppure creare delle condizioni con IF .
 
  • Mi piace
Reazioni: ILR

Per rispondere Entra o Registrati è Gratis…

Perchè dovresti Registrarti?

  • Partecipare e Creare Discussioni
  • Trovare Consigli e Suggerimenti
  • Condividere i tuoi Interessi
  • Informarti sulle Novità

Membri Iscritti online

Non ci sono Iscritti online al momento.

Nuove Discussioni

Ultimi Messaggi sui Profili

Cerco al traduzione per XenForo 2 (poiattaforma che sto usando per il forumlibri).
Bellissimo XenForo....😎
Alto