Ciao, qualcuno sa indirizzarmi ad un buon tutorial per creare un motore di ricerca in php di dati in tabelle mysql abbastanza comprensibile.
La mia conoscenza del linguaggio e media, grazie, Ale.
Ciao, qualcuno sa indirizzarmi ad un buon tutorial per creare un motore di ricerca in php di dati in tabelle mysql abbastanza comprensibile.
La mia conoscenza del linguaggio e media, grazie, Ale.
Quello che vuoi realizzare è un motore di ricerca interno ad un sito?
In questo caso, non ti serve altro che:
1) Un form con uno o più campi per filtrare la ricerca
2) Delle tabelle su cui effettuare la ricerca
3) Una pagina che, letti i dati inviati dal form, effettui la query e ti restituisca i risultati!
![]()
http://www.codicefacile.it/tutorials...erca_full-text
Lo tengo sempre tra i segnalibri![]()
Grazie proverò con il FULL-TEXT che ho letto essere molto più veloce del semplice LIKE.
Una cosa volevo chiedervi, stavo provando con il LIKE e ho questa query:
La variabile $ricerca è la stringa di ricerca che do in input mentre gli argomenti dopo il LIMIT mi servirebbero per la paginazione.codice:$query_limit = mysql_query("SELECT * FROM news ORDER BY ts DESC LIMIT $primo, $per_page WHERE (titolo_news LIKE '%$ricerca%') or (descrizione_news LIKE '%$ricerca%')");
Provado la ricerca mi da errore qui:
Premetto che se utilizzo la SELECT senza il WHERE tutto funziona alla perfezione quindi non è una questione di tabella ne di codice nel ciclo while.codice:while($row = mysql_fetch_array($query_limit)) {...... ... ... ... } else { ... ... ... }
L'errore è il seguente:
Non capisco a cosa sia dovuto, forse al fatto che con LIKE il risulatato della query è un TRUE o un FALSE????codice:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in....
Comunque mi sembra molto meglio il full-text![]()
La query è sbagliata!
Codice PHP:
$query_limit = mysql_query("SELECT * FROM news WHERE (titolo_news LIKE '%$ricerca%')
or (descrizione_news LIKE '%$ricerca%') ORDER BY ts DESC LIMIT $primo, $per_page ");
@Samleo: Grandegrazie.
@Takeno: secondo te è possibile che un famoso quanto osannato gestore di hosting italiano non permetta di creare dei campi full-text?
@Takeno: Mi son risposto da solo, il FULL-TEXT è un indice
Una cosa pero lo creo così:
(uso alter perchè la tabella esisteva già)codice:ALTER TABLE news ADD FULLTEXT(titolo_news, descrizione_news);
da pannello controllo di mysql e tutto va bene quando però cerco di toglierlo con:
mi da errore:codice:DROP FULLTEXT CATALOG news; oppure DROP FULLTEXT CATALOG news; GO
nel primo casocodice:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT CATALOG news' at line 1
nel secondocodice:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT CATALOG news' at line 1
Il mysql dovrebbe essere 5.x
Mi sai dire se è possibile vedere se l'indice esiste ed è attivo e magari come cancellarlo?
Grazie.
Scusa per il ritardo, non ho potuto risponderti prima.
Per cancellarlo dovrebbe essere
codice:ALTER TABLE post DROP INDEX title
Per vedere se c'è... non lo so![]()
![]()
No anzi sei gentilissimo, ho usato:
ma anche in questo caso mi da errore, non so credo non me lo crei proprio, anche perchè se ripeto più voltecodice:ALTER TABLE news DROP INDEX FULLTEXT
non mi da nessun errore, boh.codice:ALTER TABLE news ADD FULLTEXT(titolo_news, descrizione_news);
Mi space però perchè ho letto le caratteristiche e sembra molto più funzionale che il LIKE.![]()
Purtroppo non ho mai avuto l'occasione di levarlo.
ALTER TABLE news DROP FULLTEXT(titolo_news,);
provato così?