Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    149

    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)?
    E poi, se devo fare una ricerca a tutto testo in un determinato campo di tutti i record registrati nel database, che comandi posso usare?
    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
    Mi potete indicare quali argomenti o comandi posso ricercare nel web per informarmi sul procedimento da eseguire per fare questa cosa?
    grazie mille!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    149
    Altra considerazione, non so se l'istruzione LIKE potrebbe essermi utile, l'ho trovata in internet ditemi il vostro parere:

    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143
    http://dev.mysql.com/doc/refman/5.0/en/select.html

    Quella query é sbagliata, cmq sí qualcosa del tipo
    SELECT campo1,campo2 FROM tabella1 WHERE campo1 LIKE '%quelchevuoi%'

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    149
    nessun altro aiuto ragazzi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    149
    Ma in quel campo "quellochevuoi" io posso inserire un valore che cambia sempre?perchè ovviamente quel campo corrisponde a ciò che scriverà l'utente nella form html campo "indica il nome che vuoi ricercare"...
    grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Originariamente inviato da luseresi
    Ma in quel campo "quellochevuoi" io posso inserire un valore che cambia sempre?perchè ovviamente quel campo corrisponde a ciò che scriverà l'utente nella form html campo "indica il nome che vuoi ricercare"...
    grazie
    Ma certo! basta che nella query metti una variabile PHP

    mettiamo che il FORM di ricerca abbia i campi nome, categoria i quali corrispondono ai campi nel db.

    Quando l'utente clicca su cerca, nella pagina action, ti arrivano i dati nel array $_POST (o $_GET a seconda di method)

    a quel punto, tu esamini $_POST e generi la query di conseguenza.

    Codice PHP:
    //qui codifica i dati con mysql_real_escape_string!!!
    $nome=mysql_real_escape_string($_POST["nome"]);
    $categoria=mysql_real_escape_string($_POST["categoria"]);

    $query="SELECT * FROM tabella WHERE nome LIKE '%".$nome."%' " AND categoria='".$categoria."'"; 
    poi dai $query "in pasto" a mysql_query.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    149
    Io ho un file php che avevo costruito cosi, ma non sono in grado di aggiungere le istruzioni per la query...

    <?php
    $connessione=mysql_connect("localhost", "root", "");
    $selezione_db=mysql_select_db("XXX_db", $connessione);
    ?>
    <HTML>
    <HEAD>
    <TITLE>Corso PHP</TITLE>
    </HEAD>
    <BODY>
    <?php
    $lettura_risultati=mysql_query("select nome_utente, tipo_struttura, nome_struttura, naz_struttura, luogo_struttura, mese_sogg, anno_sogg, titolo_rec, voto_struttura, voto_qualita_cam, voto_ristorante, voto_pulizia, voto_eff_servizi, testo_rec, date_format(data_ora_ins, '%d/%m/%Y - ore %H:%i:%s') as data_formattata from recensioni order by anno_sogg");
    if(mysql_num_rows($lettura_risultati)>0){
    echo "<table>";
    $flag_colore=0;
    while($scatola_temporanea=mysql_fetch_array($lettu ra_risultati)){
    $nome_utente=$scatola_temporanea['nome_utente'];
    $tipo_struttura=$scatola_temporanea['tipo_struttura'];
    $nome_struttura=$scatola_temporanea['nome_struttura'];
    $naz_struttura=$scatola_temporanea['naz_struttura'];
    $luogo_struttura=$scatola_temporanea['luogo_struttura'];
    $mese_sogg=$scatola_temporanea['mese_sogg'];
    $anno_sogg=$scatola_temporanea['anno_sogg'];
    $titolo_rec=$scatola_temporanea['titolo_rec'];
    $voto_struttura=$scatola_temporanea['voto_struttura'];
    $voto_qualita_cam=$scatola_temporanea['voto_qualita_cam'];
    $voto_ristorante=$scatola_temporanea['voto_ristorante'];
    $voto_pulizia=$scatola_temporanea['voto_pulizia'];
    $voto_eff_servizi=$scatola_temporanea['voto_eff_servizi'];
    $testo_rec=$scatola_temporanea['testo_rec'];
    $data_ora_ins=$scatola_temporanea['data_formattata'];
    echo "<tr>";
    if($flag_colore==0){
    echo "<td bgcolor=\"#FFFF00\">";
    $flag_colore=1;
    }
    else{
    echo "<td bgcolor=\"#C0C0C0\">";
    $flag_colore=0;
    }
    echo "Utente: $nome_utente

    Data inserimento recensione: $data_ora_ins

    Struttura: $tipo_struttura

    Nome della struttura: $nome_struttura

    Nazione struttura: $naz_struttura

    Luogo struttura: $luogo_struttura

    Periodo di soggiorno (mese,anno): $mese_sogg, $anno_sogg

    Titolo recensione: $titolo_rec

    Voto struttura: $voto_struttura

    Voto qualit&agrave delle camere: $voto_qualita_cam

    Voto sul ristorante: $voto_ristorante

    Voto sulla pulizia delle camere: $voto_pulizia

    Voto sull'efficienza dei servizi: $voto_eff_servizi

    Testo recensione: $testo_rec

    ";
    echo "</tr>";
    }
    echo "</table>";
    }
    else{
    echo "Non &#233; stata inserita ancora nessuna recensione in questa sezione. Se hai piacere essere il primo, clicca nella scelta <a href=\"nrecensione.html\">Nuova Recensione</a>";}
    ?>
    </BODY>
    </HTML>
    -----------------------------------------------------------------
    Il form che io uso per far fare la ricerca all'utente ha questa struttura:

    <form name="moduloGuest" action="query.php" method="post">
    <table>

    <tr>
    <td> Digita il nome che intendi ricercare</td>
    <td><input type="text" name="nome_struttura" size="50" maxlength="60" value=""></td>
    </tr>

    <tr>
    <td> Seleziona la tipologia da ricercare (esempio Hotel, Villaggio turistico, etc) </td><td><select name="tipo_struttura" style="font-size: 11px;">
    <option value="Tutti"> Tutti </option>
    <option value="Hotel"> Hotel </option>
    <option value="Villaggio turistico"> Villaggio turistico </option>
    <option value="Campeggio"> Campeggio </option>
    <option value="Residence"> Residence </option>
    <option value="Bed & Breakfast"> Bed & Breakfast </option>
    <option value="Appartamento"> Appartamento </option>
    <option value="Altre strutture"> Altre strutture </option>
    </select></td>
    </tr>

    <tr>
    <td> Nazione </td><td><select name="naz_struttura" style="font-size: 11px;">
    <option value="Italia"> Italia </option>
    <option value="Estero"> Estero </option>
    </select></td>
    </tr>

    <tr>
    <td> Digita dove si trova (esempio: Milano, etc) </td><td><input type="text" name="luogo_struttura" size="50" maxlength="60" value=""></td>
    </tr>

    <tr>
    <td align="center" colspan="2"><input type="submit" value="Invia il messaggio!"></td>
    </tr>
    </table>
    </form>
    Nei vari "name" devo mettere lo stesso nome del campo del mio database?non capisco...ho fatto un sacco di prove ma non capisco bene il giro che devo fare....

    scusami

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.