Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di Think
    Registrato dal
    Jun 2005
    Messaggi
    1,008

    Motore ricerca gite da database

    Ciao
    ho un mega database di gite divise con diversi campi

    titolo
    Quota di partenza
    Quota vetta
    Dislivello complessivo

    Valle
    Nazione
    Località di partenza

    Difficoltà (6 possibilità)
    Esposizione
    Punti d'appoggio

    Descrizione
    Note


    Bene, ora devo fare una cosa che non ha mai fatto; un motore di ricerca interno al sito.

    Da dove inizio? (sono messo male.. ne?)

  2. #2
    Ma tutti questi campi sono in un'unica tabella?

    Comunque potresti iniziare col pensare in quali campi è possibile effettuare la ricerca

    Comunque per cercare nel database per esempio nella colonna titolo basto che fai un select e metti (mi sembra di ricordare) WHERE titolo LIKE %parola%
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  3. #3
    Utente di HTML.it L'avatar di Think
    Registrato dal
    Jun 2005
    Messaggi
    1,008
    Originariamente inviato da Sora88
    Ma tutti questi campi sono in un'unica tabella?
    E come faccio a dividerli?


    Sto pensando poi:
    faccio una pagina con la ricerca avanzata dove divido i campi e più o meno li me la cavo.

    Ma se metto un box <input type.. >normale senza niente come faccio a cercare? non deve essere lento...

  4. #4
    non ho ancora capito se hai tutto in una tabella...

    comunque devi creare un form dove si inseriscono le parole chiave e scegliere se cercare in tutte le colonne(titolo, valle, nazione, ecc..) oppure limitare solo ad una parte.
    Poi devi mettere il bottone per inviare il form.
    Una volta premuto il bottone si apre la pagina in php in cui in base alle scelte del form lo script effettua le ricerche e poi resituisce i dati
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  5. #5
    Utente di HTML.it L'avatar di Think
    Registrato dal
    Jun 2005
    Messaggi
    1,008
    Originariamente inviato da Sora88
    non ho ancora capito se hai tutto in una tabella...
    Si è una tabella sola. Ma come potrei farne di divise??

    Originariamente inviato da Sora88
    comunque devi creare un form dove si inseriscono le parole chiave e scegliere se cercare in tutte le colonne(titolo, valle, nazione, ecc..) oppure limitare solo ad una parte.
    Poi devi mettere il bottone per inviare il form.
    Una volta premuto il bottone si apre la pagina in php in cui in base alle scelte del form lo script effettua le ricerche e poi resituisce i dati
    Grazie Sora88! ma il mio problema principale non è creare l'input ma l'output.

    Mi spiego: l'utente mette una parola nel mio campo d'ingresso, bene ora come faccio a creare l'output cioè mostragli i risultati?
    Devo scannare ogni colonna del db? non è troppo lento???

    :master: :master: :master: :master:

    Grazie

  6. #6
    Allora appena il post viene inviato la pagina in php prende i valori del $_POST e in base a quelli esegue la ricerca

    codice:
    SELECT * 
    FROM `tabella`
    WHERE `colonna_in_cui_cercare` LIKE '%parola%'
    SELECT * -> Seleziona tutte le righe
    FROM `tabella` -> dalla tabella di nome tabella
    WHERE `colonna_in_cui_cercare` LIKE '%parola%' -> in cui la colonna "colonna_in_cui_cercare" contiene la parola "parola"

    E' un semplicissimo select con una clausola where
    dopo di questo fai un while e stampi i risultati
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  7. #7
    Utente di HTML.it L'avatar di Think
    Registrato dal
    Jun 2005
    Messaggi
    1,008
    codice:
    SELECT * 
    FROM `tabella`
    WHERE `colonna_in_cui_cercare` LIKE '%parola%'
    Ok, ma se voglio cercare in più colonne?

    Faccio diverse query e poi le stampo tutte?

    Seconda cosa: questa scansione TOTALE del database non è troppo lenta? :master:

  8. #8
    La velocità di queste query non dovrebbe influenzare particolaremente l'esecuzione della tua pagina. Se ovviamente il database non è di enorme proporzione. Molti megabyte. Puoi prevedere un campo input dove fai scegliere la colonna in cui cercare e implementare al posto del select * il Select nome_colonna. Un altro sistema molto più complicato per rendere la ricerca del database più veloce quello di salvare in un altra tabella i risultati ottemuti da parole chiavi precedentemente già cercate. Questo aumenta di molto l'efficenza del database, ma in compenso comporta una costruzione di software in php complicato, giustificato se i record sono in ordine di migliaia e i tempi di esecuzioni molto lente. puoi fare delle prove nel databse direttamente. Di solito ti segna il tempo di esecuzione della query. ti consiglio di farlo solo se ricerche hanno tempo di esecuzioni superiori ai 2 o 3 secondi

  9. #9
    non penso....mmh..
    Ho provato a cercare con un query in phpmyadmin la lettera e su 150 record con 10 colonne e ci ha impiegato circa 0.0044 sec ...
    Vedi tu^^
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  10. #10
    Utente di HTML.it L'avatar di Think
    Registrato dal
    Jun 2005
    Messaggi
    1,008
    Grazie..
    i record che mi dovranno passare, ho chiesto e dovrebbero essere circa 700, sono tanti cavolo!

    L'idea di mettere un campo di "aiuto" dove almeno uno sceglie la colonna mi piace.


    Ultiuma cosa:
    codice:
    SELECT * 
    FROM `tabella`
    WHERE `colonna_in_cui_cercare` LIKE '%parola%'
    Ok, ma se voglio cercare in più colonne?

    Faccio diverse query e poi le stampo tutte?
    Ma come???

    :master:

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 © 2024 vBulletin Solutions, Inc. All rights reserved.