Ir para conteúdo

POWERED BY:

Arquivado

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

deckards2bibi

[php] com select

Recommended Posts

bom gente é o seguinte

tenho duas tabelas e em uma tem a chave primaria e a outra a estrangeira

oque isso significa

 

que

um usuario X tem varios registros associados a ele.

 

bom com o codigo que eu vou postar aqui, ele simplesmente faz a paginação mas ele nao pega por usuario.

por exemplo eu pesquiso por Marcos e deveria aparece o registros do marcos caso ele tenha mas de 5 registros tenho clica na paginação 2 para aparecer o resto do registro de marcos

mas quando clico na pagina 2 simplesmente ele poe outras pessoas como André

 

acho eu que isso é um select de forma errada.

a parte do codigo que vou deixar de azul e a que eu acho que deve ser mudada

mas ai vem o problema eu nao sei como fazer este select

 

segue o codigo abaixo.

 

include "conexao.php";
$pesquisa = $_POST["txt_pesimportacao"];

$pag = "$_GET[pag]";
if($pag >= '1'){
$pag = $pag;
}else{
$pag = '1';
}

$maximo = '10'; //RESULTADOS POR PÁGINA
$inicio = ($pag * $maximo) - $maximo; 

$sql = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d  WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%' LIMIT $inicio, $maximo");
for($i=0;$i< mysql_num_rows($sql);$i++) {
 $rank = $i+1;
 $linha = mysql_fetch_array($sql);

           if($i % 2 == 0){
?>
 <tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo$linha[numdocumento]; ?></p></td>
   <td><p><?php echo$linha[nomecli]; ?></p></td>
   <td><p><a href="downloadesplanada.php?&id=<?php $linha['id'];?>">ESPLANADA</a></p></td>
</tr>

<?php } } ?>
</table>
<div id="paginacao">
<?php

$sql_res = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d");

$total = mysql_num_rows($sql_res);

$paginas = ceil($total/$maximo);
$links = '2';
echo "<a href='principal.php?link=7&pag=1'>Primeira Página</a>   ";


for ($i = $pag-$links; $i <= $pag-1; $i++){
if ($i <= 0){
}else{
echo"<a href='principal.php?link=7&pag=$i'>$i</a>   ";
       }
}echo "$pag    ";

for($i = $pag +1; $i <= $pag+$links; $i++){
if($i > $paginas){
}else{
echo "<a href='principal.php?link=7&pag=$i'>$i</a>   ";
      }
}
echo "<a href='principal.php?link=7&pag=$paginas'>Última página</a>   ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada sugiro algumas alterações em sua view

Pra mim, a maneira descrita abaixo fica mais difícil de se perder

 

<?php for($i=0;$i< mysql_num_rows($sql);$i++) : ?>
<?php     //
         $rank = $i+1; 
         $linha = mysql_fetch_array($sql); 
?>
<?php     if($i % 2 == 0) : ?>
 <tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo $linha[numdocumento]; ?></p></td>
   <td><p><?php echo $linha[nomecli]; ?></p></td>
   <td><p><a href="downloadesplanada.php?&id=<?php $linha['id'];?>">ESPLANADA</a></p></td>
</tr>
<?php     endif; ?>
<?php endfor; ?>

 

Não vejo erro na instrução sql mas percebi q ao clicar na pág x os dados da pesquisa são perdidos. pois você só passa pag e link como param.

O link você não utilizou então não sei pra q serve e o post[txt_pesimportacao] é perdido.

 

 

como você gera seus links dinamicamente você pode add o txt_pesimportacao na url para a busca

 

<a href='principal.php?link=7&pag=$i&txt_pesimportacao=$pesquisa'>$i</a>

 

na hr de resgatar a pesquisa ela irá vir primeiramente por post clicando nas pag ela virá por get então você deve alterar

 

$pesquisa = isset($_POST["txt_pesimportacao"]) ? $_POST["txt_pesimportacao"]: '';
$pesquisa = isset($_GET["txt_pesimportacao"]) ? $_GET["txt_pesimportacao"]: $pesquisa;

 

o cód acima verifica se foi setado post[pesquisa] e sim seta pesquisa como post[pesquisa] se não seta como ''

a seguir ele verifica se foi setado o get[pesquisa] se sim seta com o valor se não mantem o valor de pesquisa q pode ter sido setado na linha 1

 

não sei se isso vai resolver teu problema mas é isso ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada sugiro algumas alterações em sua view

Pra mim, a maneira descrita abaixo fica mais difícil de se perder

 

<?php for($i=0;$i< mysql_num_rows($sql);$i++) : ?>
<?php     //
         $rank = $i+1; 
         $linha = mysql_fetch_array($sql); 
?>
<?php     if($i % 2 == 0) : ?>
 <tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo $linha[numdocumento]; ?></p></td>
   <td><p><?php echo $linha[nomecli]; ?></p></td>
   <td><p><a href="downloadesplanada.php?&id=<?php $linha['id'];?>">ESPLANADA</a></p></td>
</tr>
<?php     endif; ?>
<?php endfor; ?>

 

Não vejo erro na instrução sql mas percebi q ao clicar na pág x os dados da pesquisa são perdidos. pois você só passa pag e link como param.

O link você não utilizou então não sei pra q serve e o post[txt_pesimportacao] é perdido.

 

 

como você gera seus links dinamicamente você pode add o txt_pesimportacao na url para a busca

 

<a href='principal.php?link=7&pag=$i&txt_pesimportacao=$pesquisa'>$i</a>

 

na hr de resgatar a pesquisa ela irá vir primeiramente por post clicando nas pag ela virá por get então você deve alterar

 

$pesquisa = isset($_POST["txt_pesimportacao"]) ? $_POST["txt_pesimportacao"]: '';
$pesquisa = isset($_GET["txt_pesimportacao"]) ? $_GET["txt_pesimportacao"]: $pesquisa;

 

o cód acima verifica se foi setado post[pesquisa] e sim seta pesquisa como post[pesquisa] se não seta como ''

a seguir ele verifica se foi setado o get[pesquisa] se sim seta com o valor se não mantem o valor de pesquisa q pode ter sido setado na linha 1

 

não sei se isso vai resolver teu problema mas é isso ae

 

 

de qualquer forma vlw pela ajuda to fazendo umas coisinhas e ja devo testar isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada sugiro algumas alterações em sua view

Pra mim, a maneira descrita abaixo fica mais difícil de se perder

 

<?php for($i=0;$i< mysql_num_rows($sql);$i++) : ?>
<?php     //
         $rank = $i+1; 
         $linha = mysql_fetch_array($sql); 
?>
<?php     if($i % 2 == 0) : ?>
 <tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo $linha[numdocumento]; ?></p></td>
   <td><p><?php echo $linha[nomecli]; ?></p></td>
   <td><p><a href="downloadesplanada.php?&id=<?php $linha['id'];?>">ESPLANADA</a></p></td>
</tr>
<?php     endif; ?>
<?php endfor; ?>

 

Não vejo erro na instrução sql mas percebi q ao clicar na pág x os dados da pesquisa são perdidos. pois você só passa pag e link como param.

O link você não utilizou então não sei pra q serve e o post[txt_pesimportacao] é perdido.

 

 

como você gera seus links dinamicamente você pode add o txt_pesimportacao na url para a busca

 

<a href='principal.php?link=7&pag=$i&txt_pesimportacao=$pesquisa'>$i</a>

 

na hr de resgatar a pesquisa ela irá vir primeiramente por post clicando nas pag ela virá por get então você deve alterar

 

$pesquisa = isset($_POST["txt_pesimportacao"]) ? $_POST["txt_pesimportacao"]: '';
$pesquisa = isset($_GET["txt_pesimportacao"]) ? $_GET["txt_pesimportacao"]: $pesquisa;

 

o cód acima verifica se foi setado post[pesquisa] e sim seta pesquisa como post[pesquisa] se não seta como ''

a seguir ele verifica se foi setado o get[pesquisa] se sim seta com o valor se não mantem o valor de pesquisa q pode ter sido setado na linha 1

 

não sei se isso vai resolver teu problema mas é isso ae

 

fala meu caro realmente oque você falou fez todo sentido

mudando um pouco o codigo tive sucesso

quando passa pra proxima pagina

so que ocorre um pequeno problema

 

por exempo

tenho dois registro

1 da maria e 1 do roberto

a maria possui 5 registros

mas quando pesquiso aparece apenas os 4 assim falta 1 registro.

e do roberto sao 7 registro mas so aparecem 6

 

sera que tu tem como me ajuda nesse assunto

simplesmente eu queria que apaerecesse todos os registros cadastrados independente se eles se repetem

pq tem registro repetido

 

segue o codigo alterado que ja esta funcionando a paginação

 

<table width="638" border="1" cellspacing="5" cellpadding="10">

 <tr>
   <td width="110"><p>Cod.Arremesa</p></td>
   <td width="120"><p>Nº Documento</p></td>
   <td width="114"><p>Nome</p></td>
   <td width="94"><p>Download</p></td>
 </tr>

<?php
include "conexao.php";
//$pesquisa = $_POST["txt_pesimportacao"];
$pesquisa = isset($_POST["txt_pesimportacao"]) ? $_POST["txt_pesimportacao"]: '';
$pesquisa = isset($_GET["txt_pesimportacao"]) ? $_GET["txt_pesimportacao"]: $pesquisa;


$pag = "$_GET[pag]";
if($pag >= '1'){
$pag = $pag;
}else{
$pag = '1';
}
/* if($pag == ""){
$pag = 1;
}
$maximo = 8;
$inicio = $pagina - 1;
$inicio = $maximo * $inicio; */

$maximo = '5'; //RESULTADOS POR PÁGINA
$inicio = ($pag * $maximo) - $maximo; 

$sql = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d  WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%' LIMIT $inicio, $maximo");
for($i=0;$i< mysql_num_rows($sql);$i++) {
 $rank = $i+1;
 $linha = mysql_fetch_array($sql);

           if($i % 2 == 0){
?>
 <tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo$linha[numdocumento]; ?></p></td>
   <td><p><?php echo$linha[nomecli]; ?></p></td>
   <td><p><a href="downloaddoc.php?&id=<?php echo $linha[id];?>">Download</a></p></td>
</tr>

<?php } } ?>
</table>
<div id="paginacao">
<?php
$sql_res = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%'");
$total = mysql_num_rows($sql_res);
$paginas = ceil($total/$maximo);
$links = '2';
echo "<a href='principal.php?link=7&pag=1&txt_pesimportacao=$pesquisa'>Primeira Página</a>   ";


for ($i = $pag-$links; $i <= $pag-1; $i++){
if ($i <= 0){
}else{
echo"<a href='principal.php?link=7&pag=$i&txt_pesimportacao=$pesquisa'>$i</a>   ";
       }
}echo "$pag    ";

for($i = $pag +1; $i <= $pag+$links; $i++){
if($i > $paginas){
}else{
echo "<a href='principal.php?link=7&pag=$i&txt_pesimportacao=$pesquisa'>$i</a>   ";
      }
}
echo "<a href='principal.php?link=7&pag=$paginas&txt_pesimportacao=$pesquisa'>Última página</a>   ";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q é só arrumar o for

 

for($i=0;$i<= mysql_num_rows($sql);$i++)

 

sera que o for

eu troquei pensando que seria ele tbem mas nao alterou em nada

continua a msm

reposta

 

$sql = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d  WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%' LIMIT $inicio, $maximo");
for($i=0;$i <= mysql_num_rows($sql);$i++) {
 $rank = $i+1;
 $linha = mysql_fetch_array($sql);

           if($i % 2 == 0

 

fala meu caro eu nao entendi muito bem o que significa esse script

mas é um pouco parecido com um que fiz esse foi um amigo que me ajudou e adaptei no codigo

 

$pag = "$_GET[pag]";
if($pag >= '1'){
$pag = $pag;
}else{
$pag = '1';
}


$maximo = '1'; //RESULTADOS POR PÁGINA
$inicio = ($pag * $maximo) - $maximo; 

 

mas eu percebi o seguinte quando coloco o $maxumo = '1';

simplesmente ele mostra todos os resultados que estao na tabela

mas é claro ele so aparece um resultado de cada vez

 

sabe me dizer mas ou menos o pq

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da um echo na qtd de resultados do sql pra garantir q a busca esteja retornando a qtd certa de resultados se não retornar a quantia certa é pq tem alguma coisa errada na instrução

 

//...
$sql = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d  WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%' LIMIT $inicio, $maximo");
?>
<php while($linha = mysql_fetch_array($sql)) : ?>
<tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo$linha[numdocumento]; ?></p></td>
   <td><p><?php echo$linha[nomecli]; ?></p></td>
   <td>
    <p>
      <a href="downloaddoc.php?&id=<?php echo $linha[id];?>">Download</a>
    </p>
   </td>
</tr>
<?php endwhile; ?>

 

tenta isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da um echo na qtd de resultados do sql pra garantir q a busca esteja retornando a qtd certa de resultados se não retornar a quantia certa é pq tem alguma coisa errada na instrução

 

//...
$sql = mysql_query("SELECT c.*, d.* FROM contascli c, dadoscli d  WHERE c.codcli = d.codcli and d.nomecli LIKE '$pesquisa%' LIMIT $inicio, $maximo");
?>
<php while($linha = mysql_fetch_array($sql)) : ?>
<tr>
   <td><p><?php echo $linha[codarremesa]; ?></p></td>
   <td><p><?php echo$linha[numdocumento]; ?></p></td>
   <td><p><?php echo$linha[nomecli]; ?></p></td>
   <td>
    <p>
      <a href="downloaddoc.php?&id=<?php echo $linha[id];?>">Download</a>
    </p>
   </td>
</tr>
<?php endwhile; ?>

 

tenta isso

 

 

meu caro quando coloquei na variavel $maximo para pagina 1 resultado por vez

ele simplesmente mostra todos os resultados achei estranho isto

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.