Page page by Id

Asked

Viewed 315 times

0

<?php
include("conectar.php");
$id = $_REQUEST['id'];

if ($id == "") 
{
    $id = 1;
}



$sql = mysql_query("SELECT * FROM tb_trabalhador where codigo =".$id." limit 1");

include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o  conteúdo

while ($exibe = mysql_fetch_array($sql)) {
echo "<table>"; 
    echo  "<tr><td>Nome:</td>";
    echo "<td>".$exibe["Nome"]."</td></tr>";

    echo  "<tr><td>Morada:</td>"; echo "<td>";
    if ($exibe['Morada']){ echo $exibe['Morada'];}else{echo 'N/D';} echo "</td></tr>";

    echo "<tr><td>Tipo:</td>";echo"<td>";
    if($exibe['Tipo']){ echo $exibe['Tipo'];}else{echo 'N/D';} echo "</td></tr>";

    echo "<tr><td>Email:</td>"; echo "<td>";
    if($exibe['Email']){ echo $exibe['Email'];}else{echo 'N/D';} echo "</td></tr>";

    echo "<tr><td>Alvara Numero:</td>";echo"<td>";
    if($exibe['AlvaraNumero']){ echo $exibe['AlvaraNumero'];}else{echo 'N/D';} echo "   </td></tr>";

   echo "</table>";
   }
   ?>

The only problem with this code is Undefined index: id.

php pagination.

// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) { 
    echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>&laquo; anterior</b></a>";
} else { 
    echo "<font color=#CCCCCC>&laquo; anterior</font>";
}

// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 
    // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
    if ($pg == ($i_pg-1)) { 
        echo "&nbsp;<span class=pgoff>[$i_pg]</span>&nbsp;";
    } else {
        $i_pg2 = $i_pg-1;
        echo "&nbsp;<a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a>&nbsp;";
    }
}

// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) { 
    echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo &raquo;</b></a>";
} else { 
    echo "<font color=#CCCCCC>próximo &raquo;</font>";
}
   ?>

In this last code I’m having trouble relating the first to the second. And so I left an old code.

EDIT: In the first code will be to show the data and in the second will make the pagination

  • 1

    You have an SQL injection vulnerability in the first query of your first file and several potential XSS injection vulnerabilities.

  • Would not be $sql = mysql_query("SELECT * FROM tb_trabalhador where codigo =".$id." limit 1"); ? but be careful with this type of solution it is totally vulnerable

  • 1

    @Pauloroberto In PHP, "foo$bar" is equivalent to "foo" . $bar. (as opposed to strings with plicas, 'foo$bar', where this substitution does not occur) http://php.net/manual/en/language.operators.string.php

  • Correct. But this is only for personal use on my computer. For me to control certain data.

  • @luiscubal strange.. and when you want to put a string that has the word $id inside it without wanting the value of the variable?

  • 1

    @Pauloroberto Use plicas. 'foo$id' is not converted.

Show 1 more comment

2 answers

2

Changing the answer since the question has been reformulated. First, this variable ID does not exist. It would be a variable for the pagination control. Let’s call it PAGE and it is passed via GET.

// Inclui a conexão
include("conectar.php");

// maxímo de itens por página
$max = 10;   

// Recebe a página 1 por default
// caso receba via GET o parâmetro page, captura ele 
// usando intval() para garantir que vai receber um valor inteiro
$page = 1;   
if(isset($_GET['page']))
{ 
    $page = intval($_GET['page']);
}

// PAGINAÇÃO INÍCIO ******************************************************/

// Para mostrar a paginação você precisa saber o TOTAL de resultados para sua busca
// Define query e executa, sempre vai obter apenas um resultado
$query = "SELECT COUNT(*) AS total FROM tabela ORDER BY campo1";
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);

// descobri o total de páginas usando ceil() que arredonda frações pra cima
// a variavel $max é a mesma definida no exemplo anterior
$totalPages =  ceil($row['total'] / $max);   

// Agora faça o for para imprimir as páginas  
for($i=1 ; $i<=$totalPages; $i++) 
{
    // Imprime separador
    if($i>1)
        echo " | ";

    // Verifica se é a página selecionada usando $page definido no exemplo anterior
    if($i==$page) 
        echo "<b>$page</b>";
    else
        echo "<a href="lista.php?page=$page">$page</a>";
}

// PAGINAÇÃO FIM ********************************************************/

// TABELA DE RESULTADOS INICIO ******************************************/

// Define o limit usado na query
// Exemplo: Pag 1 seria: LIMIT 0, 10 (Começa do resultado 0 e retorna os 10 sequintes)
// Exemplo: Pag 2 seria: LIMIT 10, 10 (Começa do resultado 10 e retorna os 10 sequintes)
$limit = " LIMIT ". ($page-1)*$max .",". $max;

// Define a query e adciona o limit da busca
$query = "SELECT * FROM tb_trabalhador" . $limit;

// Antes você chamava de $sql, mas faz mais sentido chamar de $result
$result = mysql_query($query);

// Seu espaçamento
echo "<br><br>"; 

// [OFF]
// Em outro tópico lhe ensinei uma maneira melhor de fazer isso, pelo visto não usou.
// Parece que o caso é você arrumar um problema pontual e a gente conserta pra você.
// Estamos aqui para ajudar a trazer programadores melhores, então aproveite as dicas
// Não tenha MEDO de tentar, ESTUDE MUITO, corra atrás por você, 
// procure scripts já existentes na internet, edite-os ao seu modo.
// Essas suas dúvidas existem milhares de réplicas no stackoverflow, pt.stackoverflow,
// e em diversos foruns e site. :)

// Mantendo da forma que você fez
while ($exibe = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "<table>"; 
    echo "<tr><td>Nome:</td>";
    echo "<td>".$exibe["Nome"]."</td></tr>";
    echo "<tr><td>Morada:</td>"; echo "<td>";
    if ($exibe['Morada']){ echo $exibe['Morada'];}else{echo 'N/D';} echo "</td></tr>";
    echo "<tr><td>Tipo:</td>";echo"<td>";
    if($exibe['Tipo']){ echo $exibe['Tipo'];}else{echo 'N/D';} echo "</td></tr>";
    echo "<tr><td>Email:</td>"; echo "<td>";
    if($exibe['Email']){ echo $exibe['Email'];}else{echo 'N/D';} echo "</td></tr>";
    echo "<tr><td>Alvara Numero:</td>";echo"<td>";
    if($exibe['AlvaraNumero']){ echo $exibe['AlvaraNumero'];}else{echo 'N/D';} 
    echo "</td></tr>";
    echo "</table>";
}
?>

// TABELA DE RESULTADOS FIM *********************************************/
  • A query in the pagination. now run the query and show the results? I already show the results in the first code. this second code would be to define the pagination

  • In your first code you receive an ID and show only one item. As if it were the page ver.php? id=3 (example). The page that lists the results would be something like list.php? page=2 that would list all the results. I will edit and exemplify the 'brain' that I thought you already know.

  • 1

    while ($displays = mysql_fetch_array($sql)) { echo "<table>"; In the first code I have the query and the table that shows

  • Looking at the other topics made by you I noticed that I always try to answer but are never clear enough. Try to be more objective and try to do as well. Use the php site documentation, it’s very good, one of the best documentations I’ve ever seen.

  • I’ll edit it, hold on. And remember that in your posts always evaluate the best comment, this contributes a lot to the members of the Stackoverflow PT community.

1

Boas, Thanks from now on for the help of @Thiagobarradas I’ll leave the code here complete with the solution.

<?php
include("conectar.php");

$quantidade = 1;
$pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1;
$inicio = ($quantidade * $pagina)-$quantidade;  
$sql = "Select * From tb_trabalhador order by id asc LIMIT $inicio, $quantidade";
$qr = mysql_query($sql) or die (mysql_error());
 while($exibe = mysql_fetch_array($qr)){
 echo "<table>"; 
 echo  "<tr><td>Nome:</td>";
 echo "<td>".$exibe["Nome"]."</td></tr>";

 echo  "<tr><td>Morada:</td>"; echo "<td>";
 if ($exibe['Morada']){ echo $exibe['Morada'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Tipo:</td>";echo"<td>";
 if($exibe['Tipo']){ echo $exibe['Tipo'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Email:</td>"; echo "<td>";
 if($exibe['Email']){ echo $exibe['Email'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Alvara Numero:</td>";echo"<td>";
  if($exibe['AlvaraNumero']){ echo $exibe['AlvaraNumero'];}else{echo 'N/D';} echo "</td>   </tr>";

  echo "<tr><td>Alvara Validade:</td>";echo"<td>";
  if($exibe['AlvaraValidade']){ echo $exibe['AlvaraValidade'];}else{echo 'N/D';} echo "</td></tr>";

  echo "<tr><td>Alvara Anexo:</td>";echo"<td>";
  echo '<a href="download_anexo.php?AlvarAnexo=' . $exibe['AlvaraNumero']. '">Abrir anexo</a>';

  echo "<tr><td>Seguro de Acidente Numero:</td>";echo"<td>";
  if($exibe['AcidenteNumero']){ echo $exibe['AcidenteNumero'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Seguro de Acidente Validade:</td>";echo"<td>";
 if($exibe['AcidenteValidade']){ echo $exibe['AcidenteValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Seguro de Responsabilidade Civil Numero:</td>";echo"<td>";
 if($exibe['SeguroNumero']){ echo $exibe['SeguroNumero'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Seguro de Responsabilidade Civil Validade:</td>";echo"<td>";
 if($exibe['SeguroValidade']){ echo $exibe['SeguroValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Declaração de Não Divida as Financas Validade:</td>";echo"<td>";
 if($exibe['FinancasValidade']){ echo $exibe['FinancasValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Declaração de Não Divida a Segurança Social Validade</td>";echo"<td>";
 if($exibe['SocialValidade']){ echo $exibe['SocialValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Declaração de Remuneração de Validade:</td>";echo"<td>";
 if($exibe['RemuneracaoValidade']){ echo $exibe['RemuneracaoValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Credencial Entidade Instalador Numero:</td>";echo"<td>";
 if($exibe['InstaladorNumero']){ echo $exibe['InstaladorNumero'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Credencial Entidade Instalador Validade:</td>";echo"<td>";
 if($exibe['InstaladorValidade']){ echo $exibe['InstaladorValidade'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Credencial Entidade Montadora Numero:</td>";echo"<td>";
 if($exibe['MontadorNumero']){ echo $exibe['MontadorNumero'];}else{echo 'N/D';} echo "</td></tr>";

 echo "<tr><td>Credencial Entidade Montadora Validade:</td>";echo"<td>";
 if($exibe['MontadorValidade']){ echo $exibe['MontadorValidade'];}else{echo 'N/D';} echo "</td></tr>";

echo "</table>";
 } 

  $sqltotal = "SELECT id FROM tb_trabalhador";
  $qrtotal = mysql_query($sqltotal) or die (mysql_error());
  $numtotal = mysql_num_rows($qrtotal);
  $totalpagina = ceil($numtotal/$quantidade);

  echo '<a href="?pagina=1">Primeira página</a>';

   for($i = 1; $i <= $totalpagina; $i++){
  if($i == $pagina)
   echo $i;
else
  echo "<a href=\"?pagina=$i\">$i</a>"; 
  }

 echo '<a href=\"?pagina=$totalPagina\">Ultima página</a>';
  ?>    
  • You must enter this text: "Tenho so uma duvida. $sql = "Select * From tb_trabalhador order by id asc LIMIT $inicio, $quantidade"; Nessa linha se eu quiser colocar mais tb cujo o Id seja o mesmo como faço? Obrigado" as a comment, and not added to the body of the answer.

  • 1

    I have just one question. $sql = "Select * From tb_worker order by id asc LIMIT $start, $quantity"; On this line if I want to put more tb whose id is the same as I do? Thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.