Jump to content
RuiMelo30

Duvida php, sistema paginação

Recommended Posts

RuiMelo30

Boas pessoal!

É o seguinte eu tenho aqui um formulario onde efectua uma pesquisa e depois eu pretendo listar com um sistema de paginação integrado só que quando avanço para a segunda página ele perde informaçao adicional que vinha na query (ex: WHERE concelho=$concelho);

Se me poderem ajudar agradecia..

<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="imo"; // Database name// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');// username and password sent from form
$codigoconcelhos=$_POST['cod_concelhos'];
$codigofreguesias=$_POST['cod_freguesias'];
$tiponegocio=$_POST['codTipo'];
$tipoimovel=$_POST['tipoImo'];
$tipologia=$_POST['tipologia'];
$garagem=$_POST['garagem'];
$precomin=$_POST['codlimite'];
$precomax=$_POST['codlimitem'];

$concelhox = mysql_query("SELECT * FROM `concelholi` WHERE `cod_concelhos` = '$codigoconcelhos' LIMIT 1");
$freguesiax = mysql_query("SELECT * FROM `freguesiali` WHERE `cod_freguesias` = '$codigofreguesias' LIMIT 1");
$tiponegociox = mysql_query("SELECT * FROM `tiponegli` WHERE `codTipo` = '$tiponegocio' LIMIT 1");
$tipoimovelx = mysql_query("SELECT * FROM `tipoimoli` WHERE `codTipo` = '$tipoimovel' LIMIT 1");
$tipologiax = mysql_query("SELECT * FROM `tipologiali` WHERE `codTipo` = '$tipologia' LIMIT 1");
$garagemx = mysql_query("SELECT * FROM `garagemli` WHERE `codTipo` = '$garagem' LIMIT 1");
$precominx = mysql_query("SELECT * FROM `limitemin` WHERE `codlimite` = '$precomin' LIMIT 1");
$precomaxx = mysql_query("SELECT * FROM `limitemax` WHERE `codlimitem` = '$precomax' LIMIT 1");

    $concelhoy = mysql_fetch_array($concelhox);
    $freguesiay = mysql_fetch_array($freguesiax);
    $tiponegocioy = mysql_fetch_array($tiponegociox);
    $tipoimovely = mysql_fetch_array($tipoimovelx);
    $tipologiay = mysql_fetch_array($tipologiax);
    $garagemy = mysql_fetch_array($garagemx);
    $precominy = mysql_fetch_array($precominx);
    $precomaxy = mysql_fetch_array($precomaxx);

$concelhow = $concelhoy['Nome'];
$freguesiaw = $freguesiay['Nome'];
$tiponegociow = $tiponegocioy['Tipo'];
$tipoimovelw = $tipoimovely['Tipo'];
$tipologiaw = $tipologiay['Tipo'];
$garagemw = $garagemy['Tipo'];
$precominw = $precominy['min'];
$precomaxw = $precomaxy['max'];

$concelhop = $concelhow;
$freguesiap = $freguesiaw;
$tiponegociop = $tiponegociow;
$tipoimovelp = $tipoimovelw;
$tipologiap = $tipologiaw;
$garagemp = $garagemw;
$precominp = $precominw;
$precomaxp = $precomaxw;



echo "Concelho:",$concelhop,"<br><br>Freguesia:",$freguesiap,"<br><br>Tipo de Negócio:",$tiponegociop,"<br><br>Tipo de Imóvel:",$tipoimovelp,"<br><br>Tipologia de Imóvel:",$tipologiap,"<br><br>Garagem:",$garagemp,"<br><br>Preço minimo:",$precominp,"<br><br>Preço máximo:",$precomaxp;
?><body>
<header>
    <div class="header-inner">
        <a href="index.php" id="logo"><img src="img/logo.png" width="50%" height="50%" alt="NOME"></a>

        <div id="nav">
        <ul>
            <li><a href="index.php">Início</a></li>
                <li><a href="browse.php?browse=1" id="current">Imóveis</a></li>
                <li><a href="agents.html">Agentes</a></li>
                <li><a href="news.php?news=1">Destaques</a></li>
                <li><a href="contact.php">Contactos</a></li>
        </ul>
        </div>
    </div><!-- /header-inner -->
</header>
<div id="wrapper">
    <div class="two_thirds">
        <h1>Propriedades dos Imóveis</h1>         <ul class="listing-nav">
        <li>Modo de Vista: </li>
        <li><a href="#" class="listing-grid">Default View</a></li>
        <li><a href="#" class="listing-full">Compare</a></li>
        </ul>

        <ul class="listing">
        <?php
            $con=mysqli_connect("localhost","root","","imo");
            $pagina = (isset($_GET['search']))? $_GET['search'] : 1;
            if (mysqli_connect_errno()) {
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            }
            mysql_query("SET NAMES 'utf8'");
            mysql_query('SET character_set_connection=utf8');
            mysql_query('SET character_set_client=utf8');
            mysql_query('SET character_set_results=utf8');



$qrystring = "SELECT * FROM propriedade where id>0 "; // Just create a filed -'status' in the table with datatype enum and make it default 'Y' for all records
if($concelhow)
$qrystring .= " AND concelho = '$concelhop' ";

if($freguesiaw)
$qrystring .= " AND freguesia = '$freguesiap' ";

if($tiponegociow)
$qrystring .= " AND tipoNeg = '$tiponegociop' ";

if($tipoimovelw)
$qrystring .= " AND tipoImo = '$tipoimovelp' ";

if($tipologiaw)
$qrystring .= " AND tipologia = '$tipologiap' ";

if($garagemw)
$qrystring .= " AND garagem = '$garagemp' ";    

if($precominw)
$qrystring .= " AND preco >= '$precominp' ";

if($precomaxw)
$qrystring .= " AND garagem <= '$precomaxp' ";    

$produtos = mysql_query($qrystring);            
$total = mysql_num_rows($produtos);            
$registros = 2;
$numPaginas = ceil($total/$registros);
$inicio = ($registros*$pagina)-$registros;
$qrystring .= " limit $inicio,$registros ";
$abc=$qrystring;
$produtos = mysql_query($qrystring);
    $total = mysql_num_rows($produtos);
while ($produto = mysql_fetch_array($produtos)) {
    $ids = $produto['ID'];

    echo $ids,$concelhop;

?>

            <br><br><br>

            <?php


$imagem = ("SELECT * FROM img WHERE img_idprop = '$ids' LIMIT 1");

{
                                    $res = mysql_query( $imagem );
                                    while ($row2 = mysql_fetch_assoc($res)) { ?>





                                            <p> </p>
                <li class="one_half last ">
                    <a><img src="<?php echo $row2['img_path']?>" alt="" >
                            <h2>

                    <h3>
                        <?php

                            echo $produto['concelho'];
                            echo', ';
                            echo $produto['freguesia'];

                        ?>
                    </h3>

                    <span class="tipoNeg"> Negócio: <?php echo $produto['tipoNeg'];?> </span>
                    <span class=""> ---> €<?php echo $produto['preco'];?> </span>                    
                    <ul class="listing-info">
                        <li> Tipo: <?php echo $produto['tipoImo'];?> </li>
                        <li> Tipologia: <?php echo $produto['tipologia'];?> </li>
                        <li> Garagem: <?php echo $produto['garagem'];?> </li>
                    </ul>
                    <p><?php echo $produto['descricao'];?> </p>                                            
                    <button onclick="window.location.href='property.php?ID=<?php echo $produto['ID'];?>'" >Ver Imóvel </button>
                    </a>
                </li>

        <?php    
                                    }
}
}

        mysqli_close($con);

Share this post


Link to post
Share on other sites
ribeiro55

Resumidamente, os links da paginação têm de enviar novamente esses campos, juntamente com o offset para o LIMIT.

Deverás utilizar inputs do tipo hidden e envolver a paginação num form.

Isto assumindo que não estamos a falar de uma paginação assíncrona (não analisei o teu código com minúcia)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
RuiMelo30

Podes explicar de forma mais simples é que percebo pouco disto :D

Acho que percebia a ideia mas nao sei como fazer...este site é para aqui para o estágio e está quase finalizado..

Share this post


Link to post
Share on other sites
RuiMelo30

O que só esta a falhar é por exemplo ele na primeira pagina apresenta correctamente..

"SELECT * FROM propriedade where id>0 "; ....  " AND concelho = '$concelhop' "; .... .= " limit $inicio,$registros ";

na segunda é que já nao aparece a condição where..

Edited by RuiMelo30

Share this post


Link to post
Share on other sites
HappyHippyHippo

isso é um erro muito normal das pessoas que estão a aprender e ainda não se depararam com uma solução mais elegante do que estár a concatenar elemento do SQL à medida que vão aparecendo.

o que deverias fazer será seguir esta filosofia:

$filters = array();

if ($need_new_filter)
 $filters[] = $field." ".$op." ".$value; // ex: $filters[] = " legume = '".$batatas."'";

// ... inserir repetidamente na lista de filtros

$sql = "select ...";
if (count($filters))
 $sql .= ' where '.implode(' and ', $filters);

// executar o SQL ...

nota : não compliquei o código para o caso do uso de prepared statements, por isso deverás conseguir adoptar mais facilmente o que te foi apresentado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alexandrebr

Olá RuiMelo, segue abaixo um exemplo, ta bem detalhado. Se tiveres dúvida, entre em contato comigo que te ajudo. Abraço

//conexão com o banco de dados

mysql_connect("localhost","root","");

mysql_select_db("banco_teste" );

//verifica a página atual caso seja informada na URL, senão atribui como 1ª página

$pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

//seleciona todos os itens da tabela

$cmd = "select * from produtos";

$produtos = mysql_query($cmd);

//conta o total de itens

$total = mysql_num_rows($produtos);

//seta a quantidade de itens por página, neste caso, 2 itens

$registros = 2;

//calcula o número de páginas arredondando o resultado para cima

$numPaginas = ceil($total/$registros);

//variavel para calcular o início da visualização com base na página atual

$inicio = ($registros*$pagina)-$registros;

//seleciona os itens por página

$cmd = "select * from produtos limit $inicio,$registros";

$produtos = mysql_query($cmd);

$total = mysql_num_rows($produtos);

//exibe os produtos selecionados

while ($produto = mysql_fetch_array($produtos)) {

echo $produto['id']." - ";

echo $produto['nome']." - ";

echo $produto['descricao']." - ";

echo "R$ ".$produto['valor']."<br />";

}

//exibe a paginação

for($i = 1; $i < $numPaginas + 1; $i++) {

echo "<a href='paginacao.php?pagina=$i'>".$i."</a> ";

}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.