Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    248

    Creare un motore di ricerca PHP MYSQL

    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.

  2. #2
    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!


  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    248
    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:
    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%')");
    La variabile $ricerca è la stringa di ricerca che do in input mentre gli argomenti dopo il LIMIT mi servirebbero per la paginazione.

    Provado la ricerca mi da errore qui:

    codice:
    while($row = mysql_fetch_array($query_limit))
    	{......
    ...
    ...
    ...
    } else {
    ...
    ...
    ...
    }
    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.
    L'errore è il seguente:

    codice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in....
    Non capisco a cosa sia dovuto, forse al fatto che con LIKE il risulatato della query è un TRUE o un FALSE????

    Comunque mi sembra molto meglio il full-text

  5. #5
    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 "); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    248
    @Samleo: Grande grazie.
    @Takeno: secondo te è possibile che un famoso quanto osannato gestore di hosting italiano non permetta di creare dei campi full-text?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    248
    @Takeno: Mi son risposto da solo, il FULL-TEXT è un indice
    Una cosa pero lo creo così:
    codice:
    ALTER TABLE news ADD FULLTEXT(titolo_news, descrizione_news);
    (uso alter perchè la tabella esisteva già)
    da pannello controllo di mysql e tutto va bene quando però cerco di toglierlo con:
    codice:
    DROP FULLTEXT CATALOG news;
    oppure
    DROP FULLTEXT CATALOG news;
    GO
    mi da errore:
    codice:
    #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 primo caso
    codice:
    #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 secondo
    Il mysql dovrebbe essere 5.x
    Mi sai dire se è possibile vedere se l'indice esiste ed è attivo e magari come cancellarlo?
    Grazie.

  8. #8
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    248
    No anzi sei gentilissimo, ho usato:
    codice:
    ALTER TABLE news DROP INDEX FULLTEXT
    ma anche in questo caso mi da errore, non so credo non me lo crei proprio, anche perchè se ripeto più volte
    codice:
    ALTER TABLE news ADD FULLTEXT(titolo_news, descrizione_news);
    non mi da nessun errore, boh.
    Mi space però perchè ho letto le caratteristiche e sembra molto più funzionale che il LIKE.

  10. #10
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    Purtroppo non ho mai avuto l'occasione di levarlo.

    ALTER TABLE news DROP FULLTEXT(titolo_news,);

    provato così?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.