Newsgroup: it.comp.www.php
Titolo: Ricerca in un database mysql

Salve,
da poco sto studiando php + mysql e per esercitarmi ho creato un semplice
database contenente 15 righe e 4 campi per poter realizzare un piccolo
motore di ricerca in php.
Per effettuare la ricerca ho fatto in modo che sia necessario prima
scegliere tramite un menù cosa cercare, e poi scrivere in un input di tipo
text la stringa da ricercare, in questo modo:
<form method="post" action="mysql.php?do=cerca">
    <select name="trova[option]">
      <option value="Anno">Anno</option>
      <option value="Artista">Artista</option>
      <option value="Album">Album</option>
    </select>
    &nbsp;
    Criterio Ricerca
    <br><br>
    <input type="text" name="testoricerca">
    <br><br>
    <input type="submit" name="sub_search" value="Cerca">
    <input type="reset" name="sub_reset" value="Riazzera">
  </form>
Il problema è che il motore funziona solo se faccio una ricerca con un
numero, se inserisco una stringa mi ritorna l'errore:
Warning: Supplied argument is not a valid MySQL result resource in
C:\Apache\htdocs/prove/mysql.php
Il codice php che ho scritto per ricercare nel database è il seguente:
case "cerca":
              //Inizio INTESTAZIONE tabella
              echo "<table align=center border=0 cellpadding=5
cellspacing=1>"."\n";
              echo "<tr>\n";
              echo "        <td><b>ID</b></td>\n
                            <td><b>Artista</b></td>\n
                            <td><b>Album</b></td>\n
                            <td><b>Anno</b></td>";
              echo "</tr>\n" ;
              //Fine INTESTAZIONE tabella
              //INIZIO PRIMO IF RICERCA
              if($trova[option]=="Anno"){
                      $ricerca = mysql_db_query("Prove","SELECT * FROM
musica WHERE Anno=$testoricerca",$conn);
                      while ($row = mysql_fetch_array ($ricerca)) {
                            echo "<tr>\n";
                            echo "        <td>$row[0]</td>\n";
                            echo "        <td>$row[1]</td>\n";
                            echo "        <td>$row[2]</td>\n";
                            echo "        <td>$row[3]</td>\n";
                            echo "</tr>\n";
                      }
                      echo "</table>"; //Chiude la tabella
                      //Libera la memoria dai risultati
                      mysql_free_result ($ricerca);
              break;
              } //FINE PRIMO IF RICERCA
              //INIZIO SECONDO IF RICERCA
              if($trova[option]=="Artista"){
                      $ricerca = mysql_db_query("Prove","SELECT * FROM
musica WHERE artista=$testoricerca",$conn);
                      while ($row = mysql_fetch_array($ricerca)) {
                            echo "<tr>\n";
                            echo "        <td>$row[0]</td>\n";
                            echo "        <td>$row[1]</td>\n";
                            echo "        <td>$row[2]</td>\n";
                            echo "        <td>$row[3]</td>\n";
                            echo "</tr>\n";
                      }
                      echo "</table>"; //Chiude la tabella
                      //Libera la memoria dai risultati
                      mysql_free_result ($ricerca);
               break;
              } //FINE SECONDO IF RICERCA
              //INIZIO TERZO IF RICERCA
              if($trova[option]=="Album"){
                      $ricerca = mysql_db_query("Prove","SELECT * FROM
musica WHERE Album=$testoricerca",$conn);
                      while ($row = mysql_fetch_array ($ricerca)) {
                            echo "<tr>\n";
                            echo "        <td>$row[0]</td>\n";
                            echo "        <td>$row[1]</td>\n";
                            echo "        <td>$row[2]</td>\n";
                            echo "        <td>$row[3]</td>\n";
                            echo "</tr>\n";
                      }
                      echo "</table>"; //Chiude la tabella
                      //Libera la memoria dai risultati
                      mysql_free_result ($ricerca);
              break;
              } //FINE TERZO IF
In pratica funziona solo se $trova[option] =="Anno", cioè se ricerco un
numero, se invece cerco una stringa nulla da fare.
La righe a cui mi segna l'errore sono queste:
while ($row = mysql_fetch_array ($ricerca))
e
mysql_free_result ($ricerca);
Spero in qualche suggerimento ;)
Marco

[cut]
Ho risolto, avevo dimenticato le virgolette ' ' ;)
Marco