Grazie mille boots per la risposta. Si, scusami hai ragione. Ti mostro la pagina completa così cerchiamo di risolvere la situazione.
codice:
<?
// CODICE: Connessione al database

$pag = $_GET["pag"];
    if (isset($pag) == false || is_numeric($pag) == false || $pag < 1)
    {
        $pag = 1;
    }
$fine = 10;
$inizio = ($pag - 1) * $fine;

//Di seguito sono specificate le query

$select = 'SELECT DISTINCT id, text';
$from = ' FROM table';
$where = ' WHERE 1=1';
$order = ' ORDER BY id DESC';
$limit = " LIMIT " . $inizio . ", " . $fine;

//Qui assegno la condizione proveniente da un altro file: search.php 

$search = $_POST['search'];
if ($search != '') {
	$where .= " AND text LIKE '%$search%' ";
}

//Assegno ad una variabile il valore del risultato del search

$query = @mysql_query($select . $from . $where . $order . $limit);
	if (!$query) {
		exit ('

Error retrieving data from database!</p>'.'Error: ' . mysql_error() . '</p>');
		}

//Forse è qui l'ERRORE?

$quanti = mysql_num_rows($query);
for($x=0; $x<$quanti; $x++) {
$row = mysql_fetch_row($query);


//CODICE: items da stampare a video


}
$query2 = mysql_query($select . $from . $where . $order);
$quanti2 = mysql_num_rows($query);
$intero = ceil($quanti2 / $fine);

?>


Pagina <?echo $pag;?> di <?echo $intero;?></p>
<?
    for($x=1; $x<$intero+1; $x++)
    {
        if ($x == $pag)
        {
?>
<?echo $x;?>  |
<?
        }
        else
        {
?>
<?echo $x;?> |
<?

        } //Chiusura else
    } //Chiusura for
?>
Il problema in questo caso specifico è il seguente: mi mostra il i risultati esatti, sia in termini di pagine che di items ma nel momento in cui vado a CAMBIARE PAGINA i risultati elencati sono quelli di TUTTO il database e le pagine sono piu che raddoppiate (per ovvi motivi).

Non chiedo di farmi da debugger, non mi permetterei mai. In prima cosa vorrei capire dove è che sbaglio, non riesco proprio a capirlo!