Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181

    Problema ricerca interno database

    Visto che nell'altro topic(che comunque trattava un altro problema) non riesco più rispondere(???) ne apro un altro...

    Codice PHP:
    <?php

    $ricerca
    =$_POST['savename'];
    $query="SELECT * FROM savegamedata WHERE(MATCH(savename) AGAINST('$ricerca'))";
    $res=mysql_query($query);
    if(
    $res && mysql_num_rows($res)>0){
        echo
    "<table>";
        echo 
    "<tr><td>Name</td><td>Description</td><td>Region</td><td>DLC</td><td>Trophies</td><td>Trophies Complete(%)</td><td>Uploader</td><td>Link</td></tr>";
         while(
    $row=mysql_fetch_assoc($res)){
            echo
    "<tr>";
            echo 
    "<td>".$row['savename']."</td>";
            echo 
    "<td>".$row['description']."</td>";
            echo 
    "<td>".$row['region']." </td> ";
            echo 
    "<td>".$row['dlc']." </td> ";
            echo 
    "<td>".$row['trof']." </td> ";
            echo 
    "<td>".$row['trofei']." </td> ";
            echo 
    "<td>".$row['username']." </td> ";
            echo 
    "<td>[url='".$row[']Download[/url]</td>" ;
            echo"</tr>";
         }
         echo"</table>";
    } else
         echo "No results";
    ?>
    Devo fare una ricerca nel database,i risultati dovrebbero

  2. #2
    dovrebbero???
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Si scusate,ma ho qualche problemi...la ricerca dovrebbe effettuare una ricerca multipla nel database,nel senso che se cerco 'pino' e ce ne sono 20,me li fa vedere tutti e 20...

    Ecco la struttura della tabella:
    codice:
    CREATE TABLE `savegamedata` (
      `id` bigint(20) NOT NULL auto_increment,
      `md5_id` varchar(255) collate latin1_general_ci NOT NULL default '',
      `savename` varchar(100) collate latin1_general_ci NOT NULL default '',
      `username` varchar(16) collate latin1_general_ci NOT NULL default '',
      `description` varchar(255) collate latin1_general_ci NOT NULL default '',
      `region` varchar(20) collate latin1_general_ci NOT NULL default '',
      `pathsave` varchar(255) collate latin1_general_ci NOT NULL default '',
      `dlc` varchar(3) collate latin1_general_ci NOT NULL default '',
      `trof` varchar(3) collate latin1_general_ci NOT NULL default '',
      `trofei` int (100)  default '0',
      `date` date NOT NULL default '0000-00-00',
      PRIMARY KEY  (`id`),
      FULLTEXT KEY (savename)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=55 ;
    Serve un numero minimo di righe perchè avvenga la ricerca?

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    dove sta mysql_select_db? e la connessione?

    c'è già la condizione se non ci sono risultati.. ti scrive No results..

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    l'avevo tagliato fuori...
    Codice PHP:
    <?php

    define 
    ("DB_HOST""localhost:3306"); // set database host
    define ("DB_USER""ciao"); // set database user
    define ("DB_PASS","cip"); // set database password
    define ("DB_NAME","oxoc_savegame"); // set database name
    $link mysql_connect(DB_HOSTDB_USERDB_PASS) or die("Couldn't make connection.");
    $db mysql_select_db(DB_NAME$link) or die("Couldn't select database");

    $ricerca$_POST['gamename'];
    $query="SELECT * FROM `savegamedata` WHERE MATCH(savename) AGAINST('$ricerca')";
    $res=mysql_query("SELECT * FROM savegamedata WHERE MATCH(savename) AGAINST('$ricerca')",$link);
    if(
    $res && mysql_num_rows($res)>0){
        echo
    '<html><head></head><body background="images/bgpagina.jpg">';
        echo
    "<table>";
        echo 
    "<tr><td>Name</td><td>Description</td><td>Region</td><td>DLC</td><td>Trophies</td><td>Trophies Complete(%)</td><td>Uploader</td><td>Link</td></tr>";
         while(
    $row=mysql_fetch_assoc($res)){
            echo
    "<tr>";
            echo 
    "<td>".$row['savename']."</td>";
            echo 
    "<td>".$row['description']."</td>";
            echo 
    "<td>".$row['region']." </td> ";
        echo 
    "<td>".$row['dlc']." </td> ";
        echo 
    "<td>".$row['trof']." </td> ";
        echo 
    "<td>".$row['trofei']." </td> ";
        echo 
    "<td>".$row['username']." </td> ";
        echo 
    "<td>[url='".$row[']Download[/url]</td>" ;
        echo"</tr>";
         }
         echo"</table>";
         echo'
    </body></html>';
    } else{
         echo'
    <html><head></head><body background="images/bgpagina.jpg">';
         echo "No results";
         echo'
    </body></html>';
         }



    ?>
    Il problema è che nel database c'è un risultato,ma non lo stampa...
    Comunque al database si connette...

  7. #7
    Fatti stampare la query con

    Codice PHP:
    die($query); 
    e controlla che il valore di $ricerca sia passato correttamente.

    Poi prova la query direttamente su un client MySQL (se ce l'hai) e controlla che dia effettivamente dei risultati.

    Controlla anche il corretto 'escape' della stringa presa tramite $_POST.

    Inoltre, assicurati di abilitare la visualizzazione di tutti gli errori (E_ALL).

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Con questo codice funziona,ma stampa e quindi credo trovi un solo risultato:
    Codice PHP:
    $res=mysql_query("SELECT *FROM `savegamedata`WHERE `savename` LIKE '$ricerca'",$link); 
    Invece con quaesto non mi trova nulla e non stampa nulla:
    Codice PHP:
    $res=mysql_query("SELECT *FROM `savegamedata`WHERE MATCH `savename` AGAINST '$ricerca' ",$link); 
    Messaggio della ricerca:
    codice:
    "Dead Space"
    No resultsSELECT *FROM `savegamedata` WHERE MATCH `savename` AGAINST 'Dead Space'
    Messaggio Upload:
    codice:
    Savename: "Dead Space"
    Uploader: prova
    Upload: deadspace.rar
    Type: application/octet-stream
    Size: 0.01953125 Kb
    Stored in: /tmp/phpOzykbq(temp folder)
    Stored in: sgfoldup/prova/deadspace.rar
    Per sicurezza,è giusto il modo che ho usato per stampare tutti i risultati in una tabella?

  9. #9
    Originariamente inviato da Dheed
    Invece con quaesto non mi trova nulla e non stampa nulla:
    Codice PHP:
    $res=mysql_query("SELECT *FROM `savegamedata`WHERE MATCH `savename` AGAINST '$ricerca' ",$link); 
    Non conoscevo ancora l'istruzione MATCH/AGAINST.
    Però leggendo la prima pagina che ho trovato leggo che
    "[..] è possibile solo a condizione che sia stato creato un full-text index. [..]"

    Mi chiedo se tu abbia creato l'indice. Non so che altri suggerimenti darti.

    Messaggio Upload:
    codice:
    Savename: "Dead Space"
    Uploader: prova
    Upload: deadspace.rar
    Type: application/octet-stream
    Size: 0.01953125 Kb
    Stored in: /tmp/phpOzykbq(temp folder)
    Stored in: sgfoldup/prova/deadspace.rar
    Per sicurezza,è giusto il modo che ho usato per stampare tutti i risultati in una tabella?
    Per la stampa, sì, mi pare che vada bene in linea di massima.
    Puoi eventualmente aggiungere dei controlli, in base al tipo di dato che ti arriva o controllare se il campo è vuoto. E magari applicare le funzioni per reimpostare il testo per l'HTML (se non hai già lavorato bene con le codifiche di pagina, PHP e database).
    Ma sono sottigliezze.

  10. #10
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    il campo fulltext c'era.. anche a me dava quell'"errore".. cioè non trovava nulla..
    devi aggiungere IN BOOLEAN MODE:
    cioè:
    Codice PHP:
    $res=mysql_query("SELECT * FROM savegamedata WHERE MATCH(savename) AGAINST('$ricerca' IN BOOLEAN MODE )",$link); 

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.