Pagina 1 di 2

Cerca nella pagine personalizzate

Inviato: 01/02/2013, 22:07
da digreo
Questa è difficile:

Ho bisogno che il form CERCA, compia la ricerca anche all'interno delle pagine personalizzate non attinenti al forum, ma con lo stesso database però con tabelle personalizzate!

:?

Re: Cerca nella pagine personalizzate

Inviato: 12/02/2013, 18:07
da digreo
Non sono riuscito a trovare niente su phpbb.com; niente che ampli le ricerche in tabelle personalizzate delle custom page!

Re: Cerca nella pagine personalizzate

Inviato: 13/02/2013, 3:13
da Barrnet
Come sono composte questa tabelle?

Re: Cerca nella pagine personalizzate

Inviato: 14/02/2013, 17:29
da digreo
Nel particolare è una sola tabella, con lo stesso prefisso delle tabelle del forum e quindi aggiunta al file includes/constant.php con il nominativo di PRO_TABLE.

PRO_TABLE è così strutturata:
pro_id = Int AUTO INCREMENT primario
prog_prod, realizzazione, commissione = Int 0/1/2
titolo, descrizione, approfondimenti = Stringa
prog_ing, prog_arc, prog_des, prod_art, prod_des, prod_sag = Int 0/1

La query potrebbe dare questi risultati (indicativamente)::
if ($row['prog_prod'] == 1) $row['prog_prod']= "progetti/project.php"
if ($row['prog_ing'] == 1 || $row['prog_arc'] == 1 || $row['prog_des'] == 1 etc. etc.) $pro= $row[il risultato della query == 1]


Un link per visualizzare un dato potrebbe essere il seguente:

Codice: Seleziona tutto

append_sid("{$phpbb_root_path}".$row['prog_prod']", "real=" .$row['realizzazione']. "&comm=" .$row['commissione']. "&pro=" .$pro. "")
Questo link visualizzarebbe tutti i pro_id che hanno quelle variabili.
O più semplicemente::

Codice: Seleziona tutto

append_sid("{$phpbb_root_path}".$row['prog_prod']", "pro_id=" .$row['pro_id']")
:geek:

Re: Cerca nella pagine personalizzate

Inviato: 15/02/2013, 11:28
da digreo
Io so (sufficentemente) come fare una query! ..Il problema è inserirla nel search.php; come e dove.
...Nel frattempo studio il file.

Re: Cerca nella pagine personalizzate

Inviato: 17/02/2013, 14:51
da digreo
E' veramente difficile capire dove inserire la query all'interno del search.php
Sicuramente penso qui, ma l'if è lunghissimo e ci sono troppe ramificazioni! E' impossibile per me capirlo

Codice: Seleziona tutto

if ($keywords || $author || $author_id || $search_id || $submit) {

Re: Cerca nella pagine personalizzate

Inviato: 21/03/2013, 17:48
da digreo
UP for this!
Dove inserire la query, di una tabella personalizzata, all'interno del search.php?

Re: Cerca nella pagine personalizzate

Inviato: 06/04/2013, 20:50
da digreo
digreo ha scritto:Dove inserire la query, di una tabella personalizzata, all'interno del search.php?
UPping!!

Re: Cerca nella pagine personalizzate

Inviato: 23/04/2013, 16:52
da digreo
Possibile che a nessuno è mai capitato di dover estendere la ricerca anche per le pagine personalizzate?
UP

Re: Cerca nella pagine personalizzate

Inviato: 23/04/2013, 21:41
da digreo
Sono riuscito, almeno in parte, a completare quello che volevo; ma nascono diversi problemi sulle parole cercate:

Il sistema phpbb si appoggia a tabelle WORDLIST e WORDMATCH che francamente non capisco.. cioè se le parole sono nella tabella WORDLIST allora si produce una ricerca altrimenti ritorna errore!

Sapreste parlarmi di queste due tabelle? Perchè alcuni termini vengono cercati e altri no?

Io vi spiego cosa ho capito:
board\includes\search\fulltext_native.php si appoggia appunto a quelle due tabelle per cercare le parole
board\includes\search\fulltext_mysql.php compie alcune funzioni per capire cosa si sta cercando (forum, autore, etc.), quindi non è importante ai fini della mia ricerca
board\search.php è dove ho inserito la mia query abbastanza facilmente, subito prima del controllo errore
if (!sizeof($id_ary) && !$search_id) //..aggiungendo && !sizeof($resultpro)
{
trigger_error('NO_SEARCH_RESULTS');
}

Codice: Seleziona tutto

$sqlpro = 'SELECT id_pr, titol, descr, approfond FROM ' . PROGETTI_TABLE . " WHERE MATCH (titol, descr, approfond) AGAINST ('" . $keywords . "' IN BOOLEAN MODE)";
$resultpro = $db->sql_query($sqlpro);
al posto di $keywords si può inserire un controllo più accurato.. (forse, io comunque l'ho trovato in fulltext_mysql.php) e sarebbe: $db->sql_escape(htmlspecialchars_decode($search->search_query))

Poi, prima del page_footer(); ho inserito il mio while per il template:

Codice: Seleziona tutto

while ($rowpro = $db->sql_fetchrow($resultpro))
{
		$template->assign_block_vars('progetti',array(
			'PRO_TIT' => $rowpro['titol'],
			'PRO_DESC' => $rowpro['descr'],
			'PRO_APPR' => $rowpro['approfond']
		));
}