Ho una tabella chiamata forum così formata:
`id_messaggio` bigint(20) NOT NULL,
`id_messaggio_origine` bigint(20) NOT NULL DEFAULT '0',
`titolo` varchar(255) DEFAULT NULL,
`messaggio` text,
`autore` varchar(20) DEFAULT NULL,
`data_messaggio` datetime DEFAULT NULL
Nel momento in cui apro un thread nuovo (che chiameremo Prova):
- id_messaggio viene settato con last_id (ad esempio 340)
- id_messaggio_origine su 0.
Nel momento in cui rispondo a questo thread:
- id_messaggio viene settato con last_id (ad esempio 1340)
- id_messaggio_origine su 340 (dunque l'id_messaggio del messaggio origine).
Tutto qui benissimo.
Ho dunque fatto uno script di ricerca:
Codice PHP:
<?php
$ricerca = $_POST['ricerca'];
if(gdrcd_filter('get', $_REQUEST['op']) == 'search') {
$result = gdrcd_query("SELECT * FROM forum WHERE (titolo LIKE '%$ricerca%' OR messaggio LIKE '%$ricerca%' OR autore LIKE '%$ricerca%') ORDER BY data_messaggio DESC LIMIT", 'result');
}
?>
<form action="main.php?page=forum&op=search" method="post">
<input name="ricerca" />
<input type="submit" value="cerca" />
</div>
</form>
<?php
while($row = gdrcd_query($result, 'fetch')) {
//risultati ricerca
}
Qui nasce il problema
Quando vado a ricercare la parola, nella lista dei risultati mi compaiono tutti i messaggi.
Ecco, io vorrei raggruppare i messaggi e visualizzare solo il titolo del id_messaggio_origine.
Ad esempio, se io cercassi la parola OBBLIGO, il risultato sarebbero 5 risultati, ossia:
id_messaggio 1340
id_messaggio_origine 1
id_messaggio 1349
id_messaggio_origine 1
id_messaggio 11340
id_messaggio_origine 3
id_messaggio 1331
id_messaggio_origine 7
id_messaggio 21340
id_messaggio_origine 7
Io vorrei che la lista non me li visualizzasse tutti e 5, ma solo 3 (vale a dire 1, 3 e 7, che sono l'origine).
Non so se ho reso chiaro il concetto.