Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Remazela

PHP - pagina perde foco

Recommended Posts

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

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

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.10382746_1432615410377769_84056740512302Conforme 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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.