Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281

    motore di ricerca interno al sito

    sto cercando di inserire un motore di ricerca interno al sito.

    ho quindi creato la pagina che imposta i criteri di ricerca in html, e la pagina che effettua la ricerca e mostra i risultati in php.
    la ricerca si basa sul database in mysql già presente, e non prevede stringhe di ricerca, ma solo dei form con valori predefiniti.

    vi riporto un pezzo della pagina html:

    <html>
    <head>
    <title></title>
    <style type="text/css">
    input,select {border:1px black;font-family:arial;color:black;font-weight:bold;font-size:11px;background-color:white;}

    </style>
    </head>
    <body>
    <center>
    <form action="after_search.php" method="post">
    <table width="400" border="0" cellspacing="0" cellpadding="0">

    <tr>
    <td width="50%">
    Città di nascita
    </td>
    <td width="50">
    <select name="cittadinascita">
    <option value="" ></option>
    <option value="milano" >milano</option>
    <option value="roma" >roma</option>
    <option value="palermo" >palermo</option>
    </select>
    </td>
    </tr>

    // qua ci sono altri form nella tabella

    </table>

    <table width="200" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="50%">
    <input type="submit" value="Cerca"></p>
    </td>
    <td width="50%">
    <input type="reset" value="Annulla">
    </td>
    </tr>
    </form>
    </table>
    </center>
    </body>
    </html>

    e qua termina la pagina dei form fatta in html.

    la pagina "aftersearch.php" contiene il seguente codice:

    <?php
    $db=mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("anagrafe",$db) or die(mysql_error());
    $st=mysql_query("SELECT * FROM persone WHERE cittadinascita = '$cittadinascita' ") or die(mysql_error());
    while ($row=mysql_fetch_assoc($st))

    print("$row[cittadinascita]");
    mysql_close($db);
    ?>
    </body>
    </html>


    il problema è che quando, ad esempio, seleziono "milano", e clicco su "cerca", la pagina di risposta in php mi da un errore e mi dice "undefined variable "cittadinascita" "

    come mai mi dice che la variabile non è definita?
    non dovrebbe avergliela passata la pagina in html???

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    ho cambiato qualcosina, ora non ricordo cosa, ho cambiato il metodo da post a get e ora funziona.

    grazie a tutti, dopo questa serata magica mi lacrimano quasi gli occhi......

  3. #3
    Originariamente inviato da riaw
    ho cambiato qualcosina, ora non ricordo cosa, ho cambiato il metodo da post a get e ora funziona.

    grazie a tutti, dopo questa serata magica mi lacrimano quasi gli occhi......
    Dovevi usare:

    SELECT * FROM persone WHERE cittadinascita = '$_POST[cittadinascita]' ")


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    Originariamente inviato da piero.mac
    Dovevi usare:

    SELECT * FROM persone WHERE cittadinascita = '$_POST[cittadinascita]' ")

    domandina

    se nel database mysql ho inserito nel campo "cittadinascita" la parola milano3 e voglio far comparire "milano3" nella ricerca che ha come selezione "milano", come devo fare?

    in pratica, io voglio che corrisponda la parola "milano", e che siano presi come risultati buoni tutte quelle righe del database che contengono milano indipendentemente da quello che c'è scritto dopo...

  5. #5
    Originariamente inviato da riaw
    domandina

    se nel database mysql ho inserito nel campo "cittadinascita" la parola milano3 e voglio far comparire "milano3" nella ricerca che ha come selezione "milano", come devo fare?

    in pratica, io voglio che corrisponda la parola "milano", e che siano presi come risultati buoni tutte quelle righe del database che contengono milano indipendentemente da quello che c'è scritto dopo...
    WHERE cittadinascita LIKE 'milano%';


    Se invece "milano" non fosse la prima devi mettere i carattere jolly % (significa tutti i caratteri) anche prima...

    WHERE cittadinascita LIKE '%milano%';


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    Originariamente inviato da piero.mac
    WHERE cittadinascita LIKE 'milano%';


    Se invece "milano" non fosse la prima devi mettere i carattere jolly % (significa tutti i caratteri) anche prima...

    WHERE cittadinascita LIKE '%milano%';


    dunque, ora sto usando il metodo GET.
    e la sintassi che uso è questa:

    $st=mysql_query("SELECT * FROM anagrafe WHERE cittadinascita LIKE '%$_GET[cittadinascita]%' ");

    dove lo devo mettere il % ?

  7. #7
    Originariamente inviato da riaw
    dunque, ora sto usando il metodo GET.
    e la sintassi che uso è questa:

    $st=mysql_query("SELECT * FROM anagrafe WHERE cittadinascita LIKE '%$_GET[cittadinascita]%' ");

    dove lo devo mettere il % ?
    Cosi' ti prende tutte le stringhe dove e' presente "milano", in qualunque posizione sia (primo, in mezzo, ultimo).

    Se vuoi che prenda solo dove milano e' la prima parola presente, devi togliere il primo %.

    Ma provar non nuoce....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    Originariamente inviato da piero.mac
    Cosi' ti prende tutte le stringhe dove e' presente "milano", in qualunque posizione sia (primo, in mezzo, ultimo).

    Se vuoi che prenda solo dove milano e' la prima parola presente, devi togliere il primo %.

    Ma provar non nuoce....

    ma non funziona così...

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    chiedo umilmente perdono in ginocchio sui ceci, hai ragione te, è così e funziona alla perfezione.......

    mi ero dimenticato le " in una voce nel menu di selezione della pagina html, e testavo la selezione su "cittadinascita" proprio su quella voce e non funzionava....
    ho messo le virgolette e funziona regolare......
    che palle perdere un'ora e mezza per un paio di virgolette

  10. #10
    Originariamente inviato da riaw
    ma non funziona così...
    Per dire che non funziona cosi' bisogna vedere almeno alcune righe prima e dopo.

    Stampa le query e metti la segnalazione di errore. Esempio:
    codice:
    $query = "SELECT * FROM anagrafe WHERE cittadinascita LIKE '%$_GET[cittadinascita]%'";
    
    echo $query;
     
    $st = mysql_query($query) OR DIE(mysql_error());
    
    lettura result set....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.