[PHP] Problema paginazione motore di ricerca

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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)
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
?>
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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?
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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']);
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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:

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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?
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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'] ";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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;/
 

[email protected]

Utente Attivo
18 Apr 2017
75
0
6
47
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
Autore Titolo Forum Risposte Data
M Problema su numerazione paginazione php PHP 6
C problema paginazione php PHP 2
D problema php mysql PHP 1
D problema php mysql PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Problema checkout carrello php PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
M Problema con php per calcolo costo percentuale PHP 7
O Problema Formmail in PHP su Aruba PHP 0
WebmasterFioriniAndrea Chat e php [problema] PHP 3
L [PHP] Problema con Telegram PHP 1
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
A [PHP] Problema query insert [RISOLTO] PHP 14
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
M [PHP] Problema con query select PHP 2
L Problema jQuery validation AJAX (PHP 7) PHP 6
L Problema funzione mail() PHP PHP 3
S [PHP] Problema con istruzione "use" PHP 23
A Problema PHP PHP 1
T [php] problema creazione query select-where PHP 5
M [PHP] problema if PHP 3
L [PHP] Problema su codice o server PHP 5
T [PHP] problema maggiore e minore PHP 4
Cosina [PHP] fwrite problema con le parole accentate PHP 9
M [PHP] Problema search form PHP 3
F [PHP] Problema con number_format PHP 3
L [PHP] problema count messo in una funzione. PHP 1
P [PHP] Progettino CRUD di esercitazione. Problema su $_FILE. PHP 9
trattorino [PHP] problema entrata immagini insert PHP 1
C Apache Cordova problema con php Programmazione 1
trattorino problema raccapricciante php conteggio query PHP 4
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
F [PHP] Problema con array multidimensionale PHP 4
F Problema con pagine login in PHP PHP 2
M [PHP] Problema script ricezione e invio posta... PHP 1
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
L [PHP] Problema Script 'Not Found' PHP 4
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
MattiaBL [PHP] Problema ciclo while PHP 3
dvdscr [PHP] Problema malfunzionamento Wordpress WordPress 13
O [PHP] Problema Button in form PHP 1
C [PHP] problema con un esercizio PHP 2

Discussioni simili