• User

    Ricerca dati nel database??

    Buongiorno a tutti, volevo farvi una domanda.
    Ho creato un database con easyphp, ho una form in html dove scrivo i dati, questi vengono passati in una file PHP che scrive i record nel mio database, e poi ho un altro file PHP che si occupa di leggere tutti i dati del database e me li espone a video secondo un determinato ordine.
    Questo sito che sto costruendo dovrà essere un contenitore di opinioni riguardo vari argomenti, seguendo questa logica per cui è stato creato il database, come faccio a dare la possibilità ai vari utenti del sito di avere una specie di "ricerca" o "ricerca avanzata" dove possono selezionare una parola chiave da ricercare all'interno di tutti i record del database che finora sono stati scritti dagli utenti, per vedere le opinioni scritte precedentemente, con la possibilità di fare la ricerca all'interno di determinate categorie di interesse (categorie che l'utente ha selezionato nel form html iniziale, in fase di inserimento della sua opinione)?
    Mi potete indicare quali argomenti o comandi posso ricercare nel web per informarmi sul procedimento da eseguire per fare questa cosa?parlo da ignorante, devo fare una ricerca tramite linguaggio PHP?
    grazie mille!!


  • ModSenior

    Ciao luseresi,
    trovi una guida, su come fare qui:
    http://www.allwebfree.it/php_mysql_query.php

    La parte che ti interessa, è quella riguardante LIKE


  • User

    grazie mille, ci do subito un'occhiata.
    buona serata!


  • User

    Ma quindi questo mi permette di fare una sorta di RICERCA AVANZATA?Devo creare una form in html che valorizza i campi che l'utente vuole ricercare e poi fare la query?
    grazie mille


  • ModSenior

    Si, basta usare like con la parola da ricercare.
    Nel caso in cui devi ricercare più valori chiave,(esempio testo prova, devi cercare nella tabella uno che contenga testo e/o prova all'interno del campo) fai un explode...

    Spero di essere stato chiaro... non è difficile da realizzare in ogni caso 😉


  • User

    Grazie mille.
    Pensavo ad una cosa, se devo fare una ricerca a tutto testo in un determinato campo di tutti i record registrati nel database, posso usare sempre EXPLODE che dicevi tu?
    Faccio un esempio, se io registro un record nel database dove nel campo NOME metto "Hotel Paperino", voglio dare la possibilità all'utente del mio sito di ricercare tutti i record del database che in NOME contengono la parola "Hotel Paperino". La domanda è: se scrivo "Paperino" o per esempio "hotel paperino" me lo trova lo stesso o mi tira fuori i record a video solo se lo scrivo esattamente nel modo in cui è stato registrato ovvero "Hotel Paperino"?
    grazie


  • ModSenior

    Con il like lo trova comuqnue, se serve la corrispondenza essatta devi fare il normale WHERE campo='valore'


  • User

    In questo esempio che mi hanno consigliato di guardare c'e' scritto cosi:

    LIKE
    mysql_db_query($db_database," select nome from ".$db_tabella." where nascita=1965 like '%marco%' ",$connessione);
    In questo caso selezioniamo la colonna nome e le righe dove nascita=1965.
    A questo punto ricerchiamo solo le caselle dove è contenuto 'marco'.
    L'opzione like ricerca termini che contengono la parola indicata dopo like.
    Il carattere % (percentuale) indica dove devono essere le altre parole (nel caso la parola ricercata sia contenuta dentro un'altra parola). In questo caso prima e dopo.
    Nell'esempio possiamo trovare gianmarco o marcogiacomo. Se scriviamo like 'marco%' troviamo solo marcogiacomo, viceversa like '%marco' trova solo gianmarco.

    Per me quel "nascita" potrebbe corrispondermi ad una categoria specifica dentra la quale guardare se ci sono opinioni di utenti, mi spiego meglio: ricerco nel database tutti i record che contengono nel campo NOME la parola "topolino" però all'interno della categoria HOTEL. Ma potrei anche dire: ricerco nel database tutti i record che contengono nel campo NOME la parola "topolino" però all'interno di TUTTE le categorie, ovvero non solo HOTEL, ma magari anche RESIDENCE etc etc...come mi devo comportare in questo caso?
    grazie mille


  • ModSenior

    basta togleire nascita = 1965, cosi cerca solo la parola, senza ulteriori condizioni


  • User

    ma se io non metto nascita=1965, lui ricerca il nome anche in tutti gli altri anni? esempio 1966 1967 1968 etc etc?