Ir para conteúdo

POWERED BY:

Arquivado

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

brunosinister

Gerar Tabela Dinamica junto ao MySQL

Recommended Posts

Galera eu estava precisando fazer o seguinte, conforme o resultado dos campos que tenho no meu Banco de dados (nome, data,telefone, endereco) exibir o resultado em uma tabela dinamica do php... porém não sei nem por onde começar, alguém pode me ajudar desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você sabe pelo menos os campos que você irá selecionar ja e um bom começo

 

Exemplo do codigo que utilizo em uma página que lista uma agenda de contatos:

 

O MySQL:

  $sql_string = [color="#FF0000"]"SELECT id, nome, dd, fone, fax, endereco, obs FROM tb_agenda ORDER BY nome LIMIT $begin, $end"[/color]; 
   [color="#FF8C00"]//$begin, $end = variaveis da paginação[/color]

  $sql_string = $db->query($sql_string);

Ai para exibir a tabela

 

<table border="0" align="center" width="650" cellpadding="0" cellspacing="0">
  <tr>
   <td>Nome</td>
   <td>Telefone</td>
   <td>Fax</td>
   <td>Endereço</td>
   <td>Observações</td>
  </tr>
[color="#FF0000"]<?[/color] [color="#2E8B57"]if[/color]([color="#4169E1"]mysql_num_rows[/color]($sql_string)==0){ [color="#0000FF"]echo[/color] [color="#FF0000"]"<tr><td colspan='5' align='center'>Nenhum registro encontrado</td></tr>"[/color]; }
[color="#2E8B57"]else[/color]{
 [color="#2E8B57"]while[/color]($campo = [color="#0000FF"]mysql_fetch_assoc[/color]($sql_string)){  [color="#FF0000"]?>[/color]

  <tr>
   <td> [color="#FF0000"]<?[/color] [color="#0000FF"]echo[/color] $campo[[color="#FF0000"]'nome'[/color]]; [color="#FF0000"]?>[/color]</td>
   <td> [color="#FF0000"]<?[/color] [color="#0000FF"]echo[/color] $campo[[color="#FF0000"]'fone'[/color]]; [color="#FF0000"]?>[/color]</td>
   <td> [color="#FF0000"]<?[/color] [color="#0000FF"]echo[/color] $campo[[color="#FF0000"]'fax'[/color]]; [color="#FF0000"]?>[/color]</td>
   <td> [color="#FF0000"]<?[/color] [color="#0000FF"]echo[/color] $campo[[color="#FF0000"]'endereco'[/color]]; [color="#FF0000"]?>[/color]</td>
   <td> [color="#FF0000"]<?[/color] [color="#0000FF"]echo[/color] $campo[[color="#FF0000"]'obs'[/color]]; [color="#FF0000"]?>[/color]</td>
  </tr>

[color="#FF0000"]<? [/color]		 }   [color="#FF8C00"]//fecha o while [/color] 
		   } [color="#FF8C00"]//fecha else[/color]
[color="#FF0000"]?>[/color]

</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw a Dica cara, na verdade eu já tenho a consulta pronta, é feita atraves do seguinte JOIN

$consulta = "select * from participantes 
				 LEFT OUTER JOIN participa ON participantes.matr_participante= participa.fk_matr_participante
				 LEFT OUTER JOIN eventos ON participa.fk_cod_evento = eventos.cod_evento
				 where (participantes.matr_participante = participa.fk_matr_participante )and
				 (eventos.cod_evento = participa.fk_cod_evento)";

o que não estou sabendo é exibir os campos dentro de uma tabela ou até mesmo fazer uma paginação já que serão muitos registros nessa consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na tabela recomendo que crie uma toda em HTML com os campos que você sabe que vai exibir depois é ir adicionando linha por linha com um While (como no meu exemplo), não posso ser + especifico pois não sei quais e quantos campos você esta selecionando e quais serão exibidos.

 

Na paginação:

 

Eu costumo exibir o numero de páginas com links e não so os botões Proxima/Anterior:

 

//1º eu faço a mesma query da paginação porém so selecionando os index das tabelas (para acelerar a consulta)

//nesta linha eu pego o valor total de registros

$total = $db->mysql_num_rows($db->query("SELECT codigo FROM tabela WHERE descricao LIKE UPPER('$descri')"));

 

//eu defino uma variavel chamada Registros Por Página (RPP)

$rpp = 18;

 

//Se não tiver valor BEGIN (inicio) é a 1º pagina (=0) se tiver algum valor (GET['BEGIN']) é outra página

if(isset($_GET['begin'])){ $begin=intval($_GET['begin']); } else {$begin=0;}

 

//se o total de registros for maior que o numero de registros que eu exibo por página

if($total > $rpp){

 

//pegando o numero tota de páginas

$npages = intval($total / $rpp);

 

 

//O link para as página será armazenado numa variavel chamada link_pages que

//será usada em qualquer lugar da página após esse codigo

 

//se for a 1º página, não colocar link para página 1 (ja estamos nela)

if($begin==0){$link_pages ="Ir para a página: <font class='currentPage'>[1]</font> ";}

 

//se não for a 1º página linkar para página 1

else{$link_pages ="Ir para a página: <a class='linkPage' href='".$PHP_SELF."?begin=0'>|1|</a> ";}

 

//aki fazemos um loop para exibir o link para as outras páginas

for($i=1;$i<=$npages;$i++){

 

//valor para nova página

$np = intval($rpp*$i);

 

//Se o valor para novapágina for = ao valor atual então estamos nessa página

//(não linkar)

if($begin==$np){$link_pages.=" <font class='currentPage'>[".intval($i+1).]</font> ";}

 

//se não linkar para esta página

else{$link_pages.=" <a class='linkPage' href='".$PHP_SELF."?begin=".$np."'>|".intval($i+1)."|</a> ";}

}//fecha for

 

ai é so ir no lugar que voce queira exibir os links para página e dar um echo $link_pages;

Detalhe importante no final da sua query (original) voce deve adicionar no final da query ..... LIMIT $begin, $rpp" pois só assim você estará paginando mesmo e se quiser exibir o numero total de registro da query ja esta na variavel $total

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara seguindo seu dica eu acho que estou quase conseguindo de uma olhada em meu código

<html>
	<head></head>
		<body>
		 <br><br>
<?php			   

//--- Código para conectar ao banco de dados ------------------------------------
	   //------------ servidor, usuario,senha
	   mysql_connect("localhost","root","") or die ("Sem conexão");
	   //--------------- banco de dados
	   @mysql_select_db("pac") or die ("Sem conexão com o banco");

	   
	   
	   
	   
	   
	   
		 //-----------------consulta de todas as pessoas que participaram de algum evento
				$consulta = "select * from participantes 
				LEFT OUTER JOIN participa ON participantes.matr_participante= participa.fk_matr_participante
				 LEFT OUTER JOIN eventos ON participa.fk_cod_evento = eventos.cod_evento
				 where (participantes.matr_participante = participa.fk_matr_participante )and
				 (eventos.cod_evento = participa.fk_cod_evento)";
				 
				 $total_reg = "10"; //Número de registros por página
				 
	 if(!$pagina) {
$pc = "1";
} else {
$pc = $pagina;
}

$inicio = $pc-1;
$inicio = $inicio*$total_reg;


$limite = mysql_query("$consulta LIMIT $inicio,$total_reg");
$todos = mysql_query("$consulta");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

## vamos criar a visualização ##
while($dados = mysql_fetch_array($limite)) {
$nome = $dados["nome_participante"];
echo "Nome: $nome<br>";
}

$anterior = $pc -1;
$proximo = $pc +1;
if($pc>1) {
echo " <a href='?pagina=$anterior'><- Anterior</a> ";
}
echo "|";
if($pc<$tp) {
echo " <a href='?pagina=$proximo'>Próxima -></a>";
}	 


				 


				 
				 
			
?>
			 
		</body>
</html>
ele exibi o registro porém aparece o seguinte erro :
Notice: Undefined variable: pagina in C:\Arquivos de programas\EasyPHP 2.0b1\www\Pac\consultas.php on line 28

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse tipo de menssagem só aparece por que no seu php_ini está setado como mostrar TODOS os erros (E_ALL) o código funciona mesmo com este elerta de erro + o ideal é sempre tapar essas brechas mesmo

 

O que a informação sugere? Na linha 11 (que deve ser essa) if(!$pagina) ele não sabe o que é a variavel pagina (ela nunca foi criada para ser testada)

 

Sugestão

 

trocar: if(!$pagina) {$pc = "1";} else {$pc = $pagina;}

 

por: if(isset($_GET['pagina'])) {$pc = intval($_GET['pagina']);} else {$pc = "1";}

 

o intval é so pra dar uma segurança a + de so retornar numeros na variavel pagina

e recomendo que mude sua php_ini para register_globals = off (se ja não estiver assim) mas antes leia sobre o assunto!

 

em relação á sua paginação cara eu acho que deve estar funcionando se estiver com algum problema posta e.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você esta pegando algum dado para sua consulta SQL que vem de um formulário então você deverá passar este dado para a proxima página tb

 

exemplo:

 

se você busca um nome que vem de um form ($_POST ou $_GET) deve-se incluir este dado também no link

 

echo " <a href='?pagina=$proximo&nome=$nome'>Próxima -></a>";

 

além disso deve-se mudar algo do tipo

 

$nome = $_POST['nome'] ou $_GET['nome']

 

para

 

$nome = $_REQUEST['nome'];

 

não sei se é esse o seu caso pois na sua query eu não vi nenhum WHERE com php vars

 

Detalhe agora que eu reparei:

 

na sua query ...select * from participantes LEFT OUTER JOIN participa...

não sei se é obrigatorio mas sempre me ensinaram a usar ...select participantes.* from participantes LEFT OUTER JOIN participa...

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.