Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    messaggio negativo di ricerca.

    Ciao a tutti,
    dal titolo non penso si capisca molto ma non sapevo come scriverlo.

    In pratica ho un form con un input di testo e un tasto cerca che, in base (ovviamente) a cosa scrivo mi effettua una query di ricerca sul mio database mysql. Fino a quì tutto a posto.
    E questo è il codice di esempio:
    index.php
    Codice PHP:
    <form action="index.php?page=search" method="post">
        <input type="text" name="ricerca"><input type="submit" name="cerca">
    </form>
    <hr>
    <?php
        
    if($page=="search") include 'search.php';
    ?>
    search.php
    Codice PHP:
    <?
    $query
    ="SELECT titolo FROM guida WHERE titolo LIKE '%$_POST[ricerca]%'";
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    $i=0;
    while (
    $i<$num){    
        
    $n=mysql_result($risultati,$i,"titolo");
        echo 
    "$n";
        
    $i++;
    }
    ?>
    Bene, come detto prima, quì funziona tutto.
    La mia domanda è: come faccio a far apparire il messaggio "la ricerca non soddisfa nessun risultato", nel caso in cui la parola inserita non è presente nel database??

    Spero di essere stato abbastanza chiaro. Un saluto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Codice PHP:
    $query="SELECT titolo FROM guida WHERE titolo LIKE '%$_POST[ricerca]%'"
    $risultati=mysql_query($query); 
    $num=mysql_numrows($risultati); 
    $i=0
    if (
    $num>0) {
      while (
    $i<$num){     
          
    $n=mysql_result($risultati,$i,"titolo"); 
          echo 
    "$n"
          
    $i++; 
      };
    } else {
      print 
    'Nessun risultato';
    }; 
    p.s. sconsiglio fortissimamente di generare la query come hai fatto senza filtrare il dato passato dal form con un escaping!!

  3. #3
    Ti ringrazio vivamente per l'aiuto, era così semplice e non c'ero arrivato....
    Per quanto riguarda l'escape questo va bene?
    Codice PHP:
    $ricerca=$_POST['ricerca'];
    $query="SELECT titolo FROM guida WHERE titolo LIKE '%".mysql_real_escape_string($ricerca)."%'"
    O mi consigli qualcos' altro?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    va benissimo... potresti scrivere così:

    Codice PHP:
    $ricerca=mysql_real_escape_string($_POST['ricerca']);
    $query="SELECT titolo FROM guida WHERE titolo LIKE '%$ricerca%'"

  5. #5
    Di nuovo grazie mille =D. Sei un genio xD

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    thankx!

  7. #7
    Volevo fare un altra domanda, come posso far si che in questa pagina posso vedere soltanto i primi 20 risultati e a fine pagina mettere pagina successiva? Perchè penso che non devo agire sulla query mettendo LIMIT 0,20 perchè mi mostrerebbe soltanto i primi 20 senza la possibilità di avanzare poi con le pagine...

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi mettere la clausola LIMIT dove però il record di partenza - che puoi anche settare con la clausola OFFEST - lo leggi da una variabile che passerai con il link... inizialmente sarà "0" o cmq non lo imposti, successivamente quando crei i link per le varie pagine lo passi nell'url come parametro

  9. #9
    hmmm sono sicuro che sia piu difficile a parole che a farlo... Non c'ho capito molto... Non è che avresti un esempio? Se non disturbo....

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Codice PHP:
    $num 20;
    $offset abs(intval(mysql_real_escape_string((isset($_GET['offset']))?($_GET['offset']):(0))));
    $ricerca=mysql_real_escape_string($_POST['ricerca']); 
    $query="SELECT titolo FROM guida WHERE titolo LIKE '%$ricerca%' LIMIT $num OFFSET $offset"
    Quando generi i link della paginazione richiama la stessa pagina, ma aggiungendo in coda il parametro offset, p.es.:
    Codice PHP:
    $tot mysql_num_rows($result); // $result è la resource della query
    $numpag = ...; //
    // ... calcola i link da realizzare e fai un loop
    print '[url="...link...?offset=$x"]...[/url]'// $x è una var. del loop 

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.