[PHP] Problema paginazione motore di ricerca

Discussione in 'PHP' iniziata da Achille610@, 24 Giugno 2017.

  1. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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']) < && $_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'], 0100);
      
    $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: 24 Giugno 2017
  2. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Nessuno sa dirmi dove sta l'errore :(
     
  3. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  4. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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)
     
  5. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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: 27 Giugno 2017
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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'], 0100);
                  
    $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
    ?>
     
  7. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  9. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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
     
  10. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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?
     
  11. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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
     
  12. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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']);
     
  13. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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'], 0100);
                  
    $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
     
  14. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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: 2 Luglio 2017
  15. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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: 29 Giugno 2017
  16. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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?
     
  17. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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
     
  18. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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'] ";
     
  19. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.695
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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;/
     
  20. Achille610@

    Achille610@ Nuovo Utente

    Registrato:
    18 Aprile 2017
    Messaggi:
    49
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    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"
     
Sto caricando...

Condividi questa Pagina