[PHP] Problema paginazione motore di ricerca

ciao
appunto non dovrebbe essere 0 ma in questo caso 1
cambiando pagina var_dump($lim); cosa risulta?

scusa mi confondevo è 0
 
Ultima modifica:
Ciao,
mettendo il var_dump($lim) che mi hai detto mi da questo ...

string(10) "LIMIT 0, 6" 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"
 
Ciao
si lo so anche io la uso nei listati e funziona correttamente :)

ma cosi come l'hai sistemata non so perche non estrae i risultati, ho provato anche a fare modifiche ma niente :(

var_dump($lim);

string(10) "LIMIT 0, 6"
 
Ciao
cambiare cambia, es cerca_c.php?p=2 , ma non vedendo risultati non so se a differenza del primo script postato tiene i risultati giusti o errati.

nb tra l'altro se cambio pagina mi dai messaggio dati inseriti non validi, quindi non penso che mi tenga niente
 
ciao
scusa, ma hai tanti record per poter cambiare pagina, cioè tu metti di visualizzare 6 record per volta ma se hai solo 6 record nella pag 2 non ti visualizza nulla
se hai 7 record nella pag 1 tte ne visualizza 6 e nella 2 il settimo
se dai un occhio a https://www.borgo-italia.it/foto_dautore/foto_autore.php
li sto usando la paginazione che stai usando tu, ma le immagini sono più di 2000 e per qualle cambia pagina (ho un limite 12 pwe pagina)
 
Ciao il limite di 6 l'ho dato perché in alcune pagine ho pochi risultati e in altre tanti, in ogni caso c'è qualcosa nello script che hai rifatto di sbagliato a prescindere.

allora per riassumere in quello vecchio mi uscivano i risultati (6 più paginazione) solo che dalla seconda pagina non teneva i risultati di quella ricerca, ma mi proponeva quelli di altre città.
In quello che hai fatto tu,. oltre a questo errore non escono proprio i risultati, si forma solo la paginazione,

Ho provato anche a ricontrollarlo tutto il tuo, modificare dei pezzi, cercare soluzioni di tutti i tipi ma niente, è come se non interrogasse il db ...
 
ciao
mi sono accorto ora di una cosa
if($cerca_a != "") {
$q.= " && (id_annunci LIKE '%$cerca_c%' OR cittas LIKE '%$cerca_c%' OR titolo LIKE '%$cerca_c%' OR messaggio LIKE '%$cerca_c%' )";
}
da dove salta fuori quel $cerca_a? non dovrebbe essere $cerca_c?
 
ciao
ho trovato un minuto e ho provato a risistemare il tutto, però non avendo tuo db e tabelle non posso provarlo
leggi i commenti, prova e sappimi dire
PHP:
<?php
session_start();
//intanto proviamo a passre a mysqli che comunque è meglio, mysql in via di estinzione
//tu metterai i tuoi dati $host ecc...
$conn = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
//ripuliamo anche i vari post compreso cerca_c
$aid = trim($_POST['aid']);//questo è un id numero intero?
$bid = trim($_POST['bid']);//questo è un id numero intero?
$zid = trim($_POST['zid']);//questo è un id numero intero? questo poi non lo usi?
$cerca_c=trim($_POST['cerca_c']);
if(empty($aid) && empty($bid) && empty($zid) && empty($cerca_c)){
    echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}else{
    //passiamo in sessione quelli non vuoti
    if(!empty($aid)){$_SESSION['aid']=$aid;}
    if(!empty($bid)){$_SESSION['bid']=$bid;}
    if(!empty($zid)){$_SESSION['zid']=$zid;}
    if(!empty($cerca_c)){$_SESSION['cerca_c']=mysql_escape_string(stripslashes($cerca_c));}
    echo "<pre>";//serve per meglio vedere i var_dump poi <pre> </pre> e var_dump li toglerai
    var_dump($_SESSION);//verifica che dai vari $_POST le  $_SESSION si creino giuste
    //costruiamo la prima query, qui il DESC non ti serve mettiamolo alla fine, comunque manca l'ORDER BY pinco
    $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 ";
    var_dump($q);  
    if(isset($_SESSION['cerca_c'])){
        $q.=" AND id_annunci LIKE '%".$_SESSION['cerca_c']."%' ";//?? un id id_annunci ?? cerca_c non è una stringa?
        $q.=" OR cittas LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR titolo LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR messaggio LIKE '%".$_SESSION['cerca_c']."%' ";
    }
    var_dump($q);
    if(isset($_SESSION['aid'])){
        $q.=" AND tipologia.id = ".$_SESSION['aid']." ";//se numero intero no apici
    }
    if(isset($_SESSION['bid'])){
        $q.=" AND provincia.id = ".$_SESSION['bid']." ";//se numero intero no apici
    }
    var_dump($q);
    $ris_1=mysqli_query($conn,$q);
    $count=mysql_num_rows($ris_1);
    if($count<1){
        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{
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        $inizio = $p->paginaIniziale($max);
        $pagine = $p->contaPagine($count, $max);
        $lim=" LIMIT $inizio, $max ";//metti sempre gli spazi
        $sq_lim=$q.$lim." ORDER BY non_so DESC";//al posto di non_so devi mettere quello che ti interessa es. mio.tipologiaid
        var_dump($sq_lim);
        $ris_2=mysqli_query($conn,$sq_lim);
        while($row=mysqli_fetch_assoc($ris_2)){
            //e qui tutto il tuo ambaradan di stampa
            //ATTENTO però
            // verifica che nella $row tu non debba mettere anche il nome della tabella esempio
            //$click_annuncio = $row['mio.click_annuncio'];
        }
        $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>";
    }
    echo "</pre>";
}
?>
 
ciao,
letto sistemato e fatto tutto ma restituisce pagina bianca :(

PHP:
<?php
session_start();
require_once "db_connect.php";
$conn = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
//ripuliamo anche i vari post compreso cerca_c
$aid = trim($_POST['aid']);//questo è un id numero intero?
$bid = trim($_POST['bid']);//questo è un id numero intero?
//hai ragione è un refuso
$cerca_c=trim($_POST['cerca_c']);
if(empty($aid) && empty($bid) && empty($zid) && empty($cerca_c)){
    echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}else{
    //passiamo in sessione quelli non vuoti
    if(!empty($aid)){$_SESSION['aid']=$aid;}
    if(!empty($bid)){$_SESSION['bid']=$bid;}
    if(!empty($cerca_c)){$_SESSION['cerca_c']=mysql_escape_string(stripslashes($cerca_c));}
    echo "<pre>";//serve per meglio vedere i var_dump poi <pre> </pre> e var_dump li toglerai
    var_dump($_SESSION);//verifica che dai vari $_POST le  $_SESSION si creino giuste
    //costruiamo la prima query, qui il DESC non ti serve mettiamolo alla fine, comunque manca l'ORDER BY pinco
    $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 ";
    var_dump($q);  
    if(isset($_SESSION['cerca_c'])){
        $q.=" AND id_annunci LIKE '%".$_SESSION['cerca_c']."%' ";//?? un id id_annunci ?? cerca_c non è una stringa?
        $q.=" OR cittas LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR titolo LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR messaggio LIKE '%".$_SESSION['cerca_c']."%' ";
    }
    var_dump($q);
    if(isset($_SESSION['aid'])){
        $q.=" AND tipologia.id = ".$_SESSION['aid']." ";//se numero intero no apici
    }
    if(isset($_SESSION['bid'])){
        $q.=" AND provincia.id = ".$_SESSION['bid']." ";//se numero intero no apici
    }
    var_dump($q);
    $ris_1=mysqli_query($conn,$q);
    $count=mysql_num_rows($ris_1);
    if($count<1){
        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{
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        $inizio = $p->paginaIniziale($max);
        $pagine = $p->contaPagine($count, $max);
        $lim=" LIMIT $inizio, $max ";//metti sempre gli spazi
        $sq_lim=$q.$lim." ORDER BY pompe.provinciaid DESC";//al posto di non_so devi mettere quello che ti interessa es. mio.tipologiaid
        var_dump($sq_lim);
        $ris_2=mysqli_query($conn,$sq_lim);
        while($row=mysqli_fetch_assoc($ris_2)){
            $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>";
    }
    echo "</pre>";
}
?>

ti metto anche il db se può aiutarti

PHP:
Tpologia

CREATE TABLE `tipologia` (
  `id` int(11) NOT NULL,
  `tipologia` varchar(200) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dump dei dati per la tabella `tipologia`
--

INSERT INTO `tipologia` (`id`, `tipologia`) VALUES
(3, 'pompe');


provincia

CREATE TABLE `provincia` (
  `id` int(20) NOT NULL,
  `provincia` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dump dei dati per la tabella `provincia`
--

INSERT INTO `provincia` (`id`, `provincia`) VALUES
(1, '--Abruzzo--'),
(2, 'Chieti'),
(3, 'L-Aquila'),
(4, 'Pescara'),
(5, 'Teramo'),
(6, '--Basilicata--'),
(7, 'Matera'),
(8, 'Potenza'),

Pompe

CREATE TABLE `pompe` (
  `id_annunci` int(20) NOT NULL,
  `titolo` varchar(300) NOT NULL,
  `messaggio` text NOT NULL,
  `cittas` varchar(250) NOT NULL,
  `via` varchar(200) NOT NULL,
  `tria` varchar(250) NOT NULL,
  `caps` varchar(200) NOT NULL,
  `telefonos` varchar(250) NOT NULL,
  `nome_file2` varchar(400) NOT NULL,
  `tipo_file2` varchar(400) NOT NULL,
  `dati_file2` longblob NOT NULL,
  `sitoweb` varchar(200) NOT NULL,
  `mobile` varchar(200) NOT NULL,
  `fax` varchar(200) NOT NULL,
  `mail` varchar(200) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_id` int(11) NOT NULL,
  `click_annuncio` int(11) NOT NULL,
  `regioneid` int(11) NOT NULL,
  `tipologiaid` int(11) NOT NULL,
  `provinciaid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
ciao
scusa una cosa, ma ai vari id non hai dato primarykey e autoincrement?
poi,e li è colpa mia che mi è sfuggito, quando crei la query devi dirgli dove prendere i valori, es.
PHP:
//...
 if(isset($_SESSION['cerca_c'])){
        $q.=" AND pompe.id_annunci LIKE '%".$_SESSION['cerca_c']."%' ";//?? un id id_annunci ?? cerca_c non è una stringa?
        $q.=" OR  pompe.cittas LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.titolo LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.messaggio LIKE '%".$_SESSION['cerca_c']."%' ";
    }
//....
analogamente in tutti gli altri casi

comunque ora do un occhio meglio alle tabelle
 
ciao
per le tabelle esempio
Codice:
CREATE TABLE tipologia(
   id int(11) NOT NULL AUTO_INCREMENT,
   tipologia varchar(200) NOT NULL,
   PRIMARY KEY (id )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
a questa tabella corrisponde l'insert
Codice:
INSERT INTO tipologia(tipologia) VALUES('$tipologia')
l'id non è da mettere perche ci pensa mysql a inserirlo e incrementarlo
 
Ciao si in tutte le tabelle ho dato primarykey e autoincrement

non so se ho capito bene, ma la tabella tipologia e provincia mi servono solo per la join o meglio per inserire l'id corrispondente nell'annuncio, ma l'insert vero e proprio è nella tabella pompe.

Spero di aver capito bene la tua domanda :) appena posso inserisco:

PHP:
if(isset($_SESSION['cerca_c'])){
        $q.=" AND pompe.id_annunci LIKE '%".$_SESSION['cerca_c']."%' ";//?? un id id_annunci ?? cerca_c non è una stringa?
        $q.=" OR  pompe.cittas LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.titolo LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.messaggio LIKE '%".$_SESSION['cerca_c']."%' ";
    }

e ti so dire che mi restituisce... naturalmente per ora grazie mille
 
niente sempre pagina bianca :(

PHP:
<?php
session_start();
require_once "db_connect.php";
$conn = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
//ripuliamo anche i vari post compreso cerca_c
$aid = trim($_POST['aid']);//questo è un id numero intero?
$bid = trim($_POST['bid']);//questo è un id numero intero?
//hai ragione è un refuso
$cerca_c=trim($_POST['cerca_c']);
if(empty($aid) && empty($bid) && empty($zid) && empty($cerca_c)){
    echo "dati inseriti non validi";
    //e qui il ritorno alla pagina di inserimento o a quella che ti fa più piacere
}else{
    //passiamo in sessione quelli non vuoti
    if(!empty($aid)){$_SESSION['aid']=$aid;}
    if(!empty($bid)){$_SESSION['bid']=$bid;}
    if(!empty($cerca_c)){$_SESSION['cerca_c']=mysql_escape_string(stripslashes($cerca_c));}
    echo "<pre>";//serve per meglio vedere i var_dump poi <pre> </pre> e var_dump li toglerai
    var_dump($_SESSION);//verifica che dai vari $_POST le  $_SESSION si creino giuste
    //costruiamo la prima query, qui il DESC non ti serve mettiamolo alla fine, comunque manca l'ORDER BY pinco
    $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 ";
    var_dump($q);  
   if(isset($_SESSION['cerca_c'])){
        $q.=" AND pompe.id_annunci LIKE '%".$_SESSION['cerca_c']."%' ";//?? un id id_annunci ?? cerca_c non è una stringa?
        $q.=" OR  pompe.cittas LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.titolo LIKE '%".$_SESSION['cerca_c']."%' ";
        $q.=" OR  pompe.messaggio LIKE '%".$_SESSION['cerca_c']."%' ";
    }
    var_dump($q);
    if(isset($_SESSION['aid'])){
        $q.=" AND tipologia.id = ".$_SESSION['aid']." ";//se numero intero no apici
    }
    if(isset($_SESSION['bid'])){
        $q.=" AND provincia.id = ".$_SESSION['bid']." ";//se numero intero no apici
    }
    var_dump($q);
    $ris_1=mysqli_query($conn,$q);
    $count=mysql_num_rows($ris_1);
    if($count<1){
        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{
        require_once "paginazione.php";//metti l'once
        $p = new Paging;
        $max = 6;
        $inizio = $p->paginaIniziale($max);
        $pagine = $p->contaPagine($count, $max);
        $lim=" LIMIT $inizio, $max ";//metti sempre gli spazi
        $sq_lim=$q.$lim." ORDER BY pompe.provinciaid DESC";//al posto di non_so devi mettere quello che ti interessa es. mio.tipologiaid
        var_dump($sq_lim);
        $ris_2=mysqli_query($conn,$sq_lim);
        while($row=mysqli_fetch_assoc($ris_2)){
            $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>";
    }
    echo "</pre>";
}
?>
 
ciao
accorto adesso
tu nella query usi ...(pompe.user_id=users.id)...
ma non vedo la tabella user
se la tabella non esiste ti darà sempre pagina bianca
comunque ora provo a modificarti la query
intanto hai messo anche nel while il tiferimento alla tabella? esempio
Codice:
$id_annunci = $row['pompe.id_annunci'];
 
Ciao la tabella users c'è non te l'ho messa nel precedente post.
PHP:
ho aggiunto anche:

$id_annunci = $row['pompe.id_annunci'];

Ma niente sempre pagina bianca :(
 

Discussioni simili