Remazela 6 Denunciar post Postado Maio 21, 2015 Caros amigos Por favor, me perdoa por recorrer novamente ao auxílio dos amigos. Estou com outro problema de paginação. Quando escolho um anúncio de um determinado cliente, por exemplo: cliente nº.5 - teve (7) anúncios e quero mostrar na tela perde o foco. Quando escolho o cliente fica assim o endereço: a 1ª pag) http://localhost/imobil/index.php?pg=cliente&cliente=5 Quando passo para a 2ª pag, fica assim: http://localhost/imobil/index.php?pg=cliente&%275%27;pag=0 -> perdeu o foco. Como faço para que o sistema entenda que tem de focar e paginar o cliente escolhido ? Abaixo postei meu código fonte: <?php //Conexão com o Banco de Dados include"Connections/config.php"; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '2'; //RESULTADOS POR PÁGINA P/ TESTE $inicio = ($pag * $maximo) - $maximo; $cliente = $_GET['cliente']; $dataVal = date('Y-m-d H:m:s'); $sql = 'SELECT * FROM imoveis WHERE imovelTermino >= :dataVal AND clienteId = :clienteId ORDER BY imovelId DESC'; try{ $query = $conecta->prepare($sql); $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR); $query->bindValue(':clienteId',$cliente,PDO::PARAM_STR); $query->execute(); $resultado = $query->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexception $error_imovels){ echo 'Erro ao selecionar os imoves!'; } ?> <div id="pagina"> <h1>Categoria</h1> <table width="100%" border="0" cellpadding="3" cellspacing="2" bordercolor="#666666";> <tr style="color:#005789; font-variant:small-caps; font:14px 'Trebuchet MS', Arial, Helvetica, sans-serif;"> <td height="30" align="center" bgcolor="#E0E0E0"><strong>Ilustração:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Tipo:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Operação:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Dormitórios:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Data do Anúncio:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Acessar:</strong></td> </tr> <?php foreach($resultado as $res){ $imovelID = $res['imovelId']; $tipo = $res['imovelTipo']; $negocio = $res['imovelNegocio']; $valor = $res['imovelValor']; $thumb = $res['imovelThumb']; $titulo = $res['imovelTitulo']; $dormitorios = $res['imovelComodos']; $data = $res['imovelCadastro']; echo '<tr>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><img src="timthumb.php?src=midias/'.$thumb.'&h=60&w=100&zc=1" alt="'.$titulo.'" title="'.$titulo.'" border="0" /></a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$tipo.'</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><strong>'.$negocio.'</strong></a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$dormitorios.' Domitórios</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.date('d/m/Y',strtotime($data)).'</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'" class="veja_mais">Veja Mais</a></td>'; echo '</tr>'; } ?> </table> <div class="paginator"> <?php $sql_res = $conecta->prepare("SELECT clienteId FROM imoveis where clienteId = :clienteId;"); $sql_res->bindParam(':cliente', $_GET['cliente'], PDO::PARAM_STR); $total = $sql_res->fetch(PDO::FETCH_ASSOC); $paginas = ceil($total / $maximo); $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR //aqui quero que foque no cliente escolhido echo "<a href=\"index.php?pg=cliente&'$cliente';pag=1\">Primeira Página</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ //aqui quero que foque no cliente escolhido echo"<a href=\"index.php?pg=cliente&'$cliente';pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ //aqui quero que foque no cliente escolhido echo "<a href=\"index.php?pg=cliente&'$cliente';pag=$i\">$i</a> "; } } //aqui quero que foque no cliente escolhido echo "<a href=\"index.php?pg=cliente&'$cliente';pag=$paginas\">Última página</a> "; ?> </div><!--paginator--> </div><!--fecha pagina--> Grato a todos. Atenciosamente, Renato Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Maio 21, 2015 Retire aspas simples do endereço <a href=\"index.php?pg=cliente&{$cliente}&pag=$i\">$i</a> Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Maio 23, 2015 Caros amigos Desculpa novamente em recorrer a ajuda de vocês, infelizmente ainda continuo com problema de paginação. Abaixo coloquei a imagem do problema com a paginação.Conforme descrito na imagem não entendo porque está perdendo o foco do cliente, quando seleciono mais anúncio do Cliente (ex.: cliente nº.5) quando clico na primeira ou última página perde o foco e não mostra mais nada, mesmo quando tem mais anúncios. Abaixo o código fonte.: <?php //Conexão com o Banco de Dados include"Connections/config.php"; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '5'; //RESULTADOS POR PÁGINA P/ TESTE $inicio = ($pag * $maximo) - $maximo; $cliente = $_GET['cliente']; $dataVal = date('Y-m-d H:m:s'); $sql = 'SELECT * FROM imoveis WHERE imovelTermino >= :dataVal AND clienteId = :clienteId ORDER BY imovelId DESC LIMIT '.$inicio.','.$maximo; try{ $query = $conecta->prepare($sql); $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR); $query->bindValue(':clienteId',$cliente,PDO::PARAM_STR); $query->execute(); $resultado = $query->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexception $error_imovels){ echo 'Erro ao selecionar os imoves!'; } ?> <div id="pagina"> <h1>Categoria</h1> <table width="100%" border="0" cellpadding="3" cellspacing="2" bordercolor="#666666";> <tr style="color:#005789; font-variant:small-caps; font:14px 'Trebuchet MS', Arial, Helvetica, sans-serif;"> <td height="30" align="center" bgcolor="#E0E0E0"><strong>Ilustração:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Tipo:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Operação:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Dormitórios:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Data do Anúncio:</strong></td> <td align="center" bgcolor="#E0E0E0"><strong>Acessar:</strong></td> </tr> <?php foreach($resultado as $res){ $imovelID = $res['imovelId']; $tipo = $res['imovelTipo']; $negocio = $res['imovelNegocio']; $valor = $res['imovelValor']; $thumb = $res['imovelThumb']; $titulo = $res['imovelTitulo']; $dormitorios = $res['imovelComodos']; $data = $res['imovelCadastro']; echo '<tr>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><img src="timthumb.php?src=midias/'.$thumb.'&h=60&w=100&zc=1" alt="'.$titulo.'" title="'.$titulo.'" border="0" /></a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$tipo.'</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><strong>'.$negocio.'</strong></a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$dormitorios.' Domitórios</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.date('d/m/Y',strtotime($data)).'</a></td>'; echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'" class="veja_mais">Veja Mais</a></td>'; echo '</tr>'; } ?> </table> <div class="paginator"> <?php //Faço a conexão com o Banco de Dados para saber quantos dados Buscou. $sql_res = $conecta->query("SELECT * FROM imoveis WHERE clienteId = ':clienteId' ORDER BY imovelTermino ASC") or die(mysql_error()); $total = $sql_res->rowCount(); $paginas = ceil($total / $maximo); $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR echo "<a href=\"index.php?pg=cliente&($cliente);pag=1\">Primeira Página</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ echo"<a href=\"index.php?pg=cliente&($cliente);pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ echo "<a href=\"index.php?pg=cliente&($cliente);pag=$i\">$i</a> "; } } echo "<a href=\"index.php?pg=cliente&($cliente);pag=$paginas\">Última página</a> "; ?> </div><!--paginator--> </div><!--fecha pagina--> Caros amigos, como consigo resolver este problema ? Grato a todos. Atenciosamente, Renato Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Maio 23, 2015 Olhe na URL e você verá que o modo como passa o ID do cliente é errado... por exemplo: echo "<a href=\"index.php?pg=cliente&($cliente);pag=1\">Primeira Página</a> "; Deveria ser: echo "<a href=\"index.php?pg=cliente&cliente=$cliente&pag=1\">Primeira Página</a> "; Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Maio 23, 2015 Caros amigos, por favor me perdoa novamente por recorrer aos vossos auxílios. Infelizmente trabalhar com PHP+PDO dá um grande problema com INSERTE, UPDATE e DELETE vai muito bem, mas com o SELECT Santo Deus. Agora estou com o seguinte problema, após pesquisa no banco para contagem de quando dados tem um determinado cliente, o sistema me trás apenas 1 (um), mesmo tendo mais de um registro do mesmo cliente. Por exemplo: o Cliente nº 5 tem 7 (sete) registro no banco. Código abaixo: <div class="paginator"> <?php //Faço a conexão com o Banco de Dados para saber quantos dados Buscou. $sql_res = $conecta->prepare("SELECT * FROM imoveis where clienteId = :clienteId"); $sql_res->bindParam(':cliente', $_GET['cliente'], PDO::PARAM_STR); $totais = $sql_res->fetch(PDO::FETCH_ASSOC); $total = count($totais); $paginas = ceil($total / $maximo); echo 'Total = '.$total; //Traz apenas 1. echo '<br/>'; echo 'Maximo = '.$maximo; //Traz o máximo de dados na tela, exemplo: 5. echo '<br/>'; echo 'Paginas = '.$paginas; //Resultado da divisão do Total (1) / Máximo (2) = 0,5 (ceil aproxima para 1) $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR echo "<a href=\"index.php?pg=cliente&=$cliente;pag=1\">Primeira Página</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ echo"<a href=\"index.php?pg=cliente&=$cliente;pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ echo "<a href=\"index.php?pg=cliente&=$cliente;pag=$i\">$i</a> "; } } echo "<a href=\"index.php?pg=cliente&=$cliente;pag=$paginas\">Última página</a> "; ?> </div><!--paginator--> Caros amigos onde estou errando, por favor me ajude. Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Maio 24, 2015 Primeiro, se você utilizou o prepare tem que ter o execute, segundo, quer a quantidade total de linhas? Existe o rowCount para isto. Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Maio 24, 2015 Caro amigo Edgar Fiz conforme sua dica ficando assim: //Faço a conexão com o Banco de Dados para saber quantos dados Buscou. $sql_res = $conecta->prepare("SELECT * FROM imoveis where clienteId = :clienteId"); $sql_res->bindParam(':cliente', $_POST['cliente'], PDO::PARAM_STR); $sql_res->execute(); //Linha 81 $totais = $sql_res->fetch(PDO::FETCH_ASSOC); $total = rowCount($totais); $paginas = ceil($total / $maximo); $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR Deu o seguinte erro: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\imobil\nav\cliente.php:81 Stack trace: #0 C:\xampp\htdocs\imobil\nav\cliente.php(81): PDOStatement->execute() #1 C:\xampp\htdocs\imobil\index.php(14): include('C:\xampp\htdocs...') #2 {main} thrown inC:\xampp\htdocs\imobil\nav\cliente.php on line 81. Não entendi este erro, porque aconteceu ? Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Maio 24, 2015 Na realidade o correto é você SEMPRE ler o manual... a ideia básica de um manual é te dar suporte e te mostrar como usar... //Faço a conexão com o Banco de Dados para saber quantos dados Buscou. $sql_res = $conecta->prepare("SELECT * FROM imoveis where clienteId = :clienteId"); $sql_res->bindParam(':cliente', $_POST['cliente'], PDO::PARAM_STR); $sql_res->execute(); //Linha 81 //$totais = $sql_res->fetch(PDO::FETCH_ASSOC); $total = $sql_res->rowCount(); $paginas = ceil($total / $maximo); $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR http://php.net/manual/pt_BR/pdostatement.rowcount.php Caso $total não esteja retornando nada o problema estará na consulta, ai utilize errorInfo para ver o que é: http://php.net/manual/pt_BR/pdo.errorinfo.php Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Maio 24, 2015 Caro amigo Edgar Já li, reli o manual mencionado pelo o amigo, mas infelizmente tentei de todas formas e continua com o erro. Alterei as seguintes linhas: /* //Linhas substituídas $sql_res = $conecta->prepare("SELECT * FROM imoveis where clienteId = :clienteId"); $sql_res->bindParam(':cliente', $_POST['cliente'], PDO::PARAM_STR); $totais = $sql_res->fetch(PDO::FETCH_ASSOC); $total = Count($totais); */ //Faço a conexão com o Banco de Dados. $con = mysql_connect("localhost", "root", ""); mysql_select_db("imobil", $con); $sql_res = mysql_query("SELECT * FROM imoveis WHERE clienteId = '$cliente' ORDER BY imovelTermino ASC"); $total = mysql_num_rows($sql_res); $paginas = ceil($total / $maximo); Agora trás a quantidade de dados buscado no Banco, mas quando quero paginar, infelizmente perde o foco e não mostra os dados buscado do Cliente. Estou tentando de várias formas mostrar as quantidade de dados buscado por cada cliente, mas não estou tendo sucesso. Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites