[PHP] Problema paginazione motore di ricerca

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
51
Ciao a tutti,
spero che qualcuno possa aiutarmi a capire dove sta l'errore, utilizzo questo motore di ricerca con la paginazione, ma a differenza dei listati che la paginazione mi tiene la provincia orrettamente, in questo caso mi conta tutti i risultati che trova nel db e mi alimenta le pagine ma con i risultati sbagliati.

es se io check tipologia e proivncia nella prima pagina che restituisce da i risultati es bergamo correttamente, ma dalla seconda pagina mi da i risultati es vicenza ecc ecc ....

posto il codice qualcuno può aiutarmi a capire, oppure a cambiare la paginazione visto che ne uso una molto vecchia che avevo trovato sul vostro sito ...

grazie mille in anticipo

funzione cerca_c

PHP:
 <?php
class MySQL{   
    function MySQL()   
    {   
        require_once "db_connect.php";  //metti l'once
    }   
}
$aid = $_POST['aid'];
    $bid = $_POST['bid'];
     $zid = $_POST['zid']; 
$data = new MySQL(); 
if(isset ($_POST['cerca_c'])){
    $_SESSION['cerca_c']=$_POST['cerca_c'];
}
$cerca_a = mysql_escape_string(stripslashes($_SESSION['cerca_c']));
if (strlen($_SESSION['cerca_c']) < 1 && $_SESSION['aid'] == "" && $_SESSION['bid'] == "" && $_SESSION['zid'] == "" ) {
echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}  else{
  $q = "SELECT * FROM mio
     INNER JOIN tipologia ON (mio.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (mio.provinciaid=provincia.id )
     INNER JOIN users ON (pompe.user_id=users.id)
                           WHERE 1=1 DESC ";
if($cerca_a != "") {
$q.= " &&  (id_annunci LIKE '%$cerca_c%' OR cittas LIKE '%$cerca_c%' OR titolo LIKE '%$cerca_c%' OR messaggio LIKE '%$cerca_c%'  )";
}
if($bid != "") {
$q.= " && tipologia.id = '$aid'";
}
if($eid != "") {
$q.= " && provincia.id = '$bid'";
}
 
 
 
     $q = mysql_query($q) or die (mysql_error()) ;
    $count=mysql_num_rows($q);
    if($count == 0){
        echo "Non ci sono risultati con la tua ricerca. Prova a cambiare la parola chiave";
        //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere es. registrati
    }else{
        //visto che ci sono dati inserisci anche la paginazione
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        // identifichiamo la pagina da cui iniziare la numerazione
        $inizio = $p->paginaIniziale($max);
        // troviamo il numero delle pagine che dovrà essere contato
        $pagine = $p->contaPagine($count, $max);
        $lim="LIMIT $inizio, $max";
        $sq_lim=$q.$lim;//ripetere lo stesso codice uguale è sempre cattiva programmazione
        $risultato=mysql_query($sq_lim);
    
        while($row=mysql_fetch_array($q)){ 
        $click_annuncio = $row['click_annuncio'];
$id_annunci = $row['id_annunci'];
$user_id = $row['id'];
 
  $messaggio = substr($row['messaggio'], 0, 100);
  $mq = $row['mq'];
  $tipologia = $row['tipologia'];
  $titolo = $row['titolo'];
     $tipo = $row['tipo'];
   $locali = $row['locali'];
  $username = $row['username'];
  $email = $row['email'];
    $cliente = $row['cliente'];
       $logo_cliente = $row['logo_cliente'];
      
 
   $nome_file = $row['nome_file'];
  $tipo_file = $row['tipo_file'];
  $dati_file = $row['dati_file'];
 
  $nome_file_vero = $row['nome_file_vero'];
  $tipo_file = $row['tipo_file'];
  $dati_file = $row['dati_file'];
 
          
            echo "  <p><a href=\"risultato-onoranze.php?id=$id_annunci\"/><img src='immagini2ricette.php?id_annunci=$id_annunci' name='$nome_file' alt'$nome_file' title='$titolo' class='img-responsive'  /></a></p>";
        echo "<a href=\"risultato-onoranze.php?id=$id_annunci\"/>$titolo</a><br /><br /> ";
        echo "<h5>$messaggio ...</h5><br />";
        

}

        $lista = $p->listaPagine($_GET['p'], $pagine);
        echo "<tr><td colspan=\"3\">";
        echo "$lista . <br>";
          $navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
         echo $navigatore;
        echo "</td></tr>";
        echo"</table></h5>";
    }//fine if-else ci sono dati
}//fine if-else post giusto
?>


paginazione

PHP:
<?php
// definiamo una costante per la pagina corrente
define("SELF", $_SERVER['PHP_SELF']);




// definiamo la classe
class Paging
{
// definiamo la pagina di partenza
function paginaIniziale($max_row)
{
if ((!isset($_GET['p'])) || ($_GET['p'] == "1"))
{
$parti_da = 0;
$_GET['p'] = 1;
}else{
$parti_da = ($_GET['p']-1) * $max_row;
}
return $parti_da;
}

// contiamo le pagine e stabiliamo quanti records devono essere impaginati
function contaPagine($conta, $max_row)
{
$pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1;
return $pgg;
}

// mostriamo l'elenco delle pagine
function listaPagine($p_corrente, $pgg)
{
$listapgg = "";
if (($p_corrente != 1) && ($p_corrente))
{
$listapgg .= " <a href=\"".SELF."?p=1\">Prima pag.</a> ";
}
if (($p_corrente-1) > 0)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."\"><</a> ";
}
for ($i=1; $i<=$pgg; $i++)
{
if ($i == $p_corrente)
{
$listapgg .= "<b>".$i."</b>";
}else{
$listapgg .= "<a href=\"".SELF."?p=".$i."\">".$i."</a>";
}
$listapgg .= " ";
}
if (($p_corrente+1) <= $pgg)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">></a> ";
}
if (($p_corrente != $pgg) && ($pgg != 0))
{
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</a> ";
}
$listapgg .= "</td>\n";
return $listapgg;
}

// permettiamo la navigazione per pagine precedenti e successive
function precedenteSuccessiva($p_corrente, $pgg)
{
$impaginazione = "";
if (($p_corrente-1) <= 0)
{
$impaginazione .= "Precedente";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente-1)."\">Pag. precedente</a>";
}
$impaginazione .= " | ";
if (($p_corrente+1) > $pgg)
{
$impaginazione .= "Prossima";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">Prossima pag.</a>";
}
return $impaginazione;
}
}
?>
 
Ultima modifica:
ciao
per verificare per bene dovrei provarla, ma così a occhi mi sembra che ci sia qualcosa che non torni.
tu fai in un punto dello script
PHP:
//.....
}  else{
  $q = "SELECT * FROM mio
     INNER JOIN tipologia ON (mio.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (mio.provinciaid=provincia.id )
     INNER JOIN users ON (pompe.user_id=users.id)
                           WHERE 1=1 DESC ";
    //qui $q è una variabile tipo stringa di valore SELECT ecc....
//e costruisci le varie pzioni
//.....
prosequi facendo la query
PHP:
//...
$q = mysql_query($q) or die (mysql_error()) ;
/*
qui $q diventa una variabile di tipo booeliano con valore
RESOURCE se la query va a buon fine
FALSE se non riesce
*/
//...
definisci il limit e fai il concatenamento
PHP:
//....
$sq_lim=$q.$lim;//dove concateni il contenuto della variabile (diventata) booeliana con i contenuto di una variabile stringa
//....
quindi per prima cosa cambia il nome alle variabili
per seconda cosa passa in sessione e usa le sessioni per i valori di selezione
PHP:
//...
    $_SESSION['aid'] = $_POST['aid'];
    $_SESSION['bid'] = $_POST['bid'];
    $_SESSION['zid'] = $_POST['zid'];
//...
in modo da mantenere il loro valore quando cambi pagina
tra l'altro non vedo, dato che usi le sessioni, alla prima riga la funzione session_start();
poi metti dei var_dump($nome_variabile); per seguire mentre provi i valori che assumono le variabili e verificare che li assumino giusti, una volta a posto i var_dump li togli.
ultimo abbandona le vecchie istruzioni php mysql_funzione obsolete e in via di eliminazione e passa alle nuove mysqli_funzione

p.s.
è la stessa paginazione che uso io nel mio sito
 
Michia Borgo sei un mostro, ho modificato lo script cosi come mi hai detto:

PHP:
$_SESSION['aid'] = $_POST['aid'];
    $_SESSION['bid'] = $_POST['bid'];

e ora sembra funzionare perfettamente :) grazie milleeeeeeeeeeeeeeeee

posso chiederti un'altra piccola cosa, usando questa paginazione se mi si formano 8 pagine trovo sotto 1 2 3 4 5 6 7 8 come posso fare per far si che anche se ci siano 100 pagine ci sia solo 12345 e poi i soliti es (Prima pag. < 1 2 3 4 5
Pag. precedente | Prossima)
 
no troppo in fretta facendo cosi restituisce sempre e solo un post :(

PHP:
$_SESSION['aid'] = $_POST['aid'];
     $_SESSION['bid'] = $_POST['bid'];
$data = new MySQL();  
if(isset ($_POST['cerca_c'])){
    $_SESSION['cerca_c']=$_POST['cerca_c'];


per quanto riguarda session start sono all-inizio della pagina cosi:

PHP:
<?php
 if(!isset($_SESSION)){session_start ();}
 if(isset ($_POST['aid'])){   
    $_SESSION['aid']=$_POST['aid'];
} 
if(isset ($_POST['bid'])){   
    $_SESSION['bid']=$_POST['bid'];
} 


 ?>


che poi cosa strana il primo listato me lo prende giusto dalla seconda mi prende sempre sbagliato .. Abbi pazienza ma sono un autodidatta quindi non capisco proprio tutto al volo :)
 
Ultima modifica:
ciao
ho provato a corregere, devi provarlo e eventualmente dirmi dove da errore e che errore
leggi i commenti
PHP:
<?php
session_start();
//a cosa ti serve fare una classe?
require_once "db_connect.php";  //metti l'once
$_SESSION['aid'] = trim($_POST['aid']);
$_SESSION['bid'] = trim($_POST['bid']);
$_SESSION['zid'] = trim($_POST['zid']);

if(isset ($_POST['cerca_c'])){
    $_SESSION['cerca_c']=trim(mysql_escape_string(stripslashes($_POST['cerca_c'])));
}
if (empty($_SESSION['cerca_c']) && empty($_SESSION['aid']) && empty($_SESSION['bid']) && empty($_SESSION['zid'])) {
    echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}  else{
  //il DESC aggiungilo per ultimo
  $q = "SELECT * FROM mio
     INNER JOIN tipologia ON (mio.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (mio.provinciaid=provincia.id )
     INNER JOIN users ON (pompe.user_id=users.id)
                           WHERE 1=1 ";
    if($_SESSION['cerca_c']!= "") {
        $q.= " AND  (id_annunci LIKE '%".$_SESSION['cerca_c']."%' OR cittas LIKE '%".$_SESSION['cerca_c'].".%' OR titolo LIKE '%".$_SESSION['cerca_c']."%' OR messaggio LIKE '%".$_SESSION['cerca_c']."' )";
    }
    //if($bid != "") { ?? perche se non vuoto bid dai poi aid? secondo me dovrebbe essere
    if($_SESSION['aid'] != "") {
        $q.= " AND tipologia.id = '".$_SESSION['aid']."'";
    }
    //if($eid != "") { cosa è $eid?, poi come sopra
    if($_SESSION['bid'] != "") {
        $q.= " AND provincia.id = '".$_SESSION['bid']."'";
    }
    //poi cosa è quel zid? non vedo dove lo utilizzi
     $q.=" DESC";
    var_dump($q);//verifica che la query sia scritta giusta, poi lo togli
    $ris = mysql_query($q) or die (mysql_error()) ;
    $count=mysql_num_rows($ris);
    if($count == 0){
        echo "Non ci sono risultati con la tua ricerca. Prova a cambiare la parola chiave";
        //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere es. registrati
    }else{
        //visto che ci sono dati inserisci anche la paginazione
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        // identifichiamo la pagina da cui iniziare la numerazione
        $inizio = $p->paginaIniziale($max);
        // troviamo il numero delle pagine che dovrà essere contato
        $pagine = $p->contaPagine($count, $max);
        $lim="LIMIT $inizio, $max";
        $sq_lim=$q.$lim;//ripetere lo stesso codice uguale è sempre cattiva programmazione
        $risultato=mysql_query($sq_lim);
        while($row=mysql_fetch_array($q)){
            $click_annuncio = $row['click_annuncio'];
            $id_annunci = $row['id_annunci'];
            $user_id = $row['id'];
              $messaggio = substr($row['messaggio'], 0, 100);
              $mq = $row['mq'];
              $tipologia = $row['tipologia'];
              $titolo = $row['titolo'];
             $tipo = $row['tipo'];
               $locali = $row['locali'];
              $username = $row['username'];
              $email = $row['email'];
            $cliente = $row['cliente'];
               $logo_cliente = $row['logo_cliente'];
            $nome_file = $row['nome_file'];
            $tipo_file = $row['tipo_file'];
            $dati_file = $row['dati_file'];
            $nome_file_vero = $row['nome_file_vero'];
            $tipo_file = $row['tipo_file'];
            $dati_file = $row['dati_file'];         
            echo "  <p><a href=\"risultato-onoranze.php?id=$id_annunci\"/><img src='immagini2ricette.php?id_annunci=$id_annunci' name='$nome_file' alt'$nome_file' title='$titolo' class='img-responsive'  /></a></p>";
            echo "<a href=\"risultato-onoranze.php?id=$id_annunci\"/>$titolo</a><br /><br /> ";
            echo "<h5>$messaggio ...</h5><br />";
        }
        $lista = $p->listaPagine($_GET['p'], $pagine);
        echo "<tr><td colspan=\"3\">";
        echo "$lista . <br>";
        $navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
        echo $navigatore;
        echo "</td></tr>";
        echo"</table></h5>";
    }//fine if-else ci sono dati
}//fine if-else post giusto
?>
 
Ciao grazie mille per la risposta, sempre gentilissimo, allora copiando e incollando il tuo script cosi come è mi da il seguente errore:

string(285) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '48' DESC" You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DESC' at line 5
 
ciao
hai ragione (è il caldo) DESC da solo non vuol dire nulla, devi dirgli per cosa ordinare
modifica
PHP:
$q.=" DESC";
in
PHP:
$q.=" ORDER BY tipologia.id DESC";

ho messo tipologia.id a caso, ma lo sai tu secondo cosa ordinare
 
ciao, allora ho messo ovviamente lcid cosi:

$q.="ORDER BY id_annunci DESC";

ma mi crea la paginazione ma non mi estrae i risultati

il var_dump mi restituisce questo

string(373) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND (id_annunci LIKE '%milano%' OR cittas LIKE '%milano.%' OR titolo LIKE '%milano%' OR messaggio LIKE '%milano' )ORDER BY id_annunci DESC" 1 .
Precedente | Prossima
 
ciao
a parte lo spazio tra ) e ORDER non vedo altri errori,
quello che non capisco è quell'id_annunci che nella query metti ...AND (id_annunci LIKE '%milano%' OR...
cioe è o non è un id? se è un id generalmente dovrebbe essere un numero intero autoincrement
sei sicuro?
 
Ciao si certo,
ti allego la foto della riga del db

la cosa strana è che prima mi dava i risultati della prima pagina della paginazione corretta, e dalla seconda errore.

Ora non mi restituisce il risultato, ma li conta come se ci fossero anche la paginazione

Schermata 2017-06-28 alle 17.16.54.png Schermata 2017-06-28 alle 17.16.54.png
Schermata 2017-06-28 alle 17.16.54.png
 
ciao, ho sistemato cosi e l'id lo prende corretto ti posto anche il var_dump, pero come vedi mi alimenta le pagine mi conta i risultati ma non me li stampa, altra cosa se vado a pagina 2 in alto mi mette cerca_c.php?p=2 e mi dice dati inseriti non validi



$q.=" ORDER BY id_annunci = $id_annunci DESC ";

string(312) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '48' ORDER BY id_annunci = 195 DESC " 1 2 3 4> Ultima pag. .
Precedente | Prossima pag.

tra l'altro visto che sessioni z non esisteva era una vecchia prova ho provato ad aggiungere anche questo

$_SESSION['id_annunci'] = trim($_POST['id_annunci']);
 
ti riposto tutto il codice perche ora il var_dump mi da di nuovo errore dbmaria

PHP:
<?php
session_start();
//a cosa ti serve fare una classe?
require_once "db_connect.php";  //metti l'once
$_SESSION['aid'] = trim($_POST['aid']);
$_SESSION['bid'] = trim($_POST['bid']);

if(isset ($_POST['cerca_c'])){
    $_SESSION['cerca_c']=trim(mysql_escape_string(stripslashes($_POST['cerca_c'])));
}
if (empty($_SESSION['cerca_c']) && empty($_SESSION['aid']) && empty($_SESSION['bid']) && empty($_SESSION['zid'])) {
    echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}  else{
  //il DESC aggiungilo per ultimo
  $q = "SELECT * FROM pompe
     INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id )
     INNER JOIN provincia ON (pompe.provinciaid=provincia.id )
     INNER JOIN users ON (pompe.user_id=users.id)
                           WHERE 1=1 ";
    if($_SESSION['cerca_c']!= "") {
        $q.= " AND  (id_annunci LIKE '%".$_SESSION['cerca_c']."%' OR cittas LIKE '%".$_SESSION['cerca_c'].".%' OR titolo LIKE '%".$_SESSION['cerca_c']."%' OR messaggio LIKE '%".$_SESSION['cerca_c']."' )";
    }
    //if($bid != "") { ?? perche se non vuoto bid dai poi aid? secondo me dovrebbe essere
    if($_SESSION['aid'] != "") {
        $q.= " AND tipologia.id = '".$_SESSION['aid']."'";
    }
    //if($eid != "") { cosa è $eid?, poi come sopra
    if($_SESSION['bid'] != "") {
        $q.= " AND provincia.id = '".$_SESSION['bid']."'";
    }
    //poi cosa è quel zid? non vedo dove lo utilizzi
     $q.=" ORDER BY id_annunci = $id_annunci DESC ";
     var_dump($q);//verifica che la query sia scritta giusta, poi lo togli
    $ris = mysql_query($q) or die (mysql_error()) ;
    $count=mysql_num_rows($ris);
    if($count == 0){
        echo "Non ci sono risultati con la tua ricerca. Prova a cambiare la parola chiave";
        //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere es. registrati
    }else{
        //visto che ci sono dati inserisci anche la paginazione
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        // identifichiamo la pagina da cui iniziare la numerazione
        $inizio = $p->paginaIniziale($max);
        // troviamo il numero delle pagine che dovrà essere contato
        $pagine = $p->contaPagine($count, $max);
        $lim="LIMIT $inizio, $max";
        $sq_lim=$q.$lim;//ripetere lo stesso codice uguale è sempre cattiva programmazione
        $risultato=mysql_query($sq_lim);
        while($row=mysql_fetch_array($q)){
            $click_annuncio = $row['click_annuncio'];
            $id_annunci = $row['id_annunci'];
            $user_id = $row['id'];
              $messaggio = substr($row['messaggio'], 0, 100);
              $mq = $row['mq'];
              $tipologia = $row['tipologia'];
              $titolo = $row['titolo'];
             $tipo = $row['tipo'];
               $locali = $row['locali'];
              $username = $row['username'];
              $email = $row['email'];
            $cliente = $row['cliente'];
               $logo_cliente = $row['logo_cliente'];
            $nome_file = $row['nome_file'];
            $tipo_file = $row['tipo_file'];
            $dati_file = $row['dati_file'];
            $nome_file_vero = $row['nome_file_vero'];
            $tipo_file = $row['tipo_file'];
            $dati_file = $row['dati_file'];        
            echo "  <p><a href=\"risultato-onoranze.php?id=$id_annunci\"/><img src='immagini2ricette.php?id_annunci=$id_annunci' name='$nome_file' alt'$nome_file' title='$titolo' class='img-responsive'  /></a></p>";
            echo "<a href=\"risultato-onoranze.php?id=$id_annunci\"/>$titolo</a><br /><br /> ";
            echo "<h5>$messaggio ...</h5><br />";
        }
        $lista = $p->listaPagine($_GET['p'], $pagine);
        echo "<tr><td colspan=\"3\">";
        echo "$lista . <br>";
        $navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
        echo $navigatore;
        echo "</td></tr>";
        echo"</table></h5>";
    }//fine if-else ci sono dati
}//fine if-else post giusto
?>


var_dump

string(309) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '12' ORDER BY id_annunci = DESC " You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DESC' at line 5
 
ciao
no
$q.=" ORDER BY id_annunci = $id_annunci DESC ";
ma
$q.=" ORDER BY id_annunci DESC ";
es.
PHP:
 $q.= " AND tipologia.id =  $_SESSION['aid'] ";
 
Ultima modifica:
Fatto ma sempre solito problema :(

Var_dump

string(305) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '2' ORDER BY id_annunci DESC " 1 .

se lo tolgo

1 2 3 4 > Ultima pag. .
Precedente | Prossima pag.

mi alimenta la paginazione ma non mi stampa i risultati ... pagina bianca
 
Ultima modifica:
ciao
metti un var_dump anche qui
PHP:
//.....
        $sq_lim=$q.$lim;//ripetere lo stesso codice uguale è sempre cattiva programmazione
        var_dump($sq_lim);
        $risultato=mysql_query($sq_lim);
        while($row=mysql_fetch_array($q)){
            //.....
        }
//....
e verifica cosa ti riporta, guarda in particolare la parte LIMIT 5, 6 (messo dei numeri a caso)

poi cosa è quell'1. alla fine del out del precedente var_dump?
string(305) "SELECT * FROM ...... BY id_annunci DESC " 1 .
è un tuo errore di copy/paste o quello che ti riporta effettivamente il var_dump?
se è quello che ti riporta da dove salta fuori?
 
Ciao grazie mille come al solito.

ho messo il var_dump di seguito quello che mi restituisce

string(316) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '48' ORDER BY id_annunci DESC LIMIT 0, 6" 1 23 4 > Ultima pag. .
Precedente | Prossima pag.

quel 1 che vedevi, è il numero della paginazione
 
ciao
smbrerebbe scritta giusta (quasi) quindi dovrebbe funzionare
l'unica cosa, se
tipologia.id e provincia.id sono numerici togli gli apici
...AND tipologia.id = 3 AND provincia.id = 48 ...
es.
PHP:
 $q.= " AND tipologia.id = $_SESSION['aid'] ";
 
ciao
ops, me ne accorgo adesso
DESC LIMIT 0, 6
non dovrebbe essere 0 ma 1 all'inizio e altro numero quandi cambi pagina
verifica che il numero di recor di partenza venga cone deve venire
metti un var_dump
PHP:
var_dump($inizio);
$lim="LIMIT $inizio, $max";
//e per verifica
var_dump($lim);
        $sq_lim=$q.$lim;/
 
Ciao
ti posto di seguito quello che restituisce con il varo_dump var_dump($lim);

string(10) "LIMIT 0, 6" string(315) "SELECT * FROM pompe INNER JOIN tipologia ON (pompe.tipologiaid=tipologia.id ) INNER JOIN provincia ON (pompe.provinciaid=provincia.id ) INNER JOIN users ON (pompe.user_id=users.id) WHERE 1=1 AND tipologia.id = '3' AND provincia.id = '2' ORDER BY id_annunci DESC LIMIT 0, 6"
 

Discussioni simili