RuiMelo30 0 Report post Posted July 6, 2015 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 46 Report post Posted July 6, 2015 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 0 Report post Posted July 6, 2015 Podes explicar de forma mais simples é que percebo pouco disto 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 0 Report post Posted July 7, 2015 (edited) 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 July 7, 2015 by RuiMelo30 Share this post Link to post Share on other sites
HappyHippyHippo 1,165 Report post Posted July 7, 2015 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 Portugol Plus Share this post Link to post Share on other sites
RuiMelo30 0 Report post Posted July 9, 2015 nao consegui entender.. Share this post Link to post Share on other sites
alexandrebr 0 Report post Posted July 10, 2015 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