Ir para conteúdo
Fórum Script Brasil
  • 0

Construir Tabela Em Busca Php E Mysql


Edvaldo Pereira

Pergunta

Boa noite amigos!

Eu tenho a seguinte tabela:

CREATE TABLE `vereador` (

`ID_Vereador` int(11) NOT NULL auto_increment,

`Nome` varchar(60) NOT NULL default '',

`Nome_Parlamentar` varchar(60) NOT NULL default '',

`ID_Partido` int(11) NOT NULL default '0',

`ID_Cargo` int(11) NOT NULL default '0',

PRIMARY KEY (`ID_Vereador`)

E preciso exibir os dados dela na seguinte estrutura de uma tabela:

Exemplo:

http://img252.imageshack.us/img252/1677/foto01ak4.th.jpg

Os dados têm que ser mostrados de 3 em três ou seja coloco o while em um só e ele passa para três e depois quebra a linha da tabela para mostrar mais três resultados mais não estou conseguindo.

Segue abaixo o que tenho para ver se vocês conseguem transformar para a forma que preciso. Mais tambem aceito uma nova solução.

Exemplo do que eu consigui:

http://img170.imageshack.us/img170/4849/foto02mo5.th.jpg

<html>

<head>

<title>Lista</title>

</head>

<body bgcolor="#ffffff">

<?php

$conexao = mysql_connect("localhost", "root", "123456");

$db = mysql_select_db("teste");

$sql = "SELECT * FROM vereador ORDER BY Nome";

$resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados");

echo "<table width=760 border=0 cellpadding=1 cellspacing=1>";

echo "<tr bgcolor=\"eaeaea\">";

echo "<th width=40>ID</th>";

echo "<th width=300>Nome</th>";

echo "<th width=100>Parlamentar</th>";

echo "<th width=210>ID Partido</th>";

echo "<th width=50>ID Cargo</th>";

echo "</tr>";

while ($linha=mysql_fetch_array($resultado)) {

$id_vereador = $linha["ID_Vereador"];

$nome = $linha["Nome"];

$parlamentar = $linha["Nome_Parlamentar"];

$id_partido = $linha["ID_Partido"];

$id_cargo = $linha["ID_Cargo"];

echo "<tr>";

echo "<th width=40>$id_vereador<br></th>";

echo "<th width=300 align=\"left\">$nome<br></th>";

echo "<th width=100>$parlamentar<br></th>";

echo "<th width=210>$id_partido</th>";

echo "<th width=50>$id_cargo</th>";

echo "</tr>";

echo "<tr>";

echo "<th colspan=\"5\"><hr width=\"100%\" color=\"c0c0c0\"></th>";

echo "</tr>";

echo "<br>";

}

echo "</table>";

?>

</body>

</html>

Espero que possam me ajudar.

Grato,

Editado por Edvaldo Pereira
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Você vai ter que controlar o <tr>... é ele que quebra a linha na tabela... por exemplo, para criar uma tabela que tenha 3 colunas e 3 linhas e escreva uma frasezinha de um array...

<?php
$palavra = array(Isso ,é, apenas, uma, frase, para, testar, o, script);
$i = 0;
$controle = 1;
$cont = 1;
echo"<table width=\"70%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
while($controle <= 3){
if ($cont == 1){echo "<tr>";}else{}
echo"<td>$palavra[$i]</td>";
if ($cont == 3){echo "</tr>"; $cont = 1; $controle++;}else{$cont++;}
$i++;
}
echo "</table>";
?>

Essa é a idéia básica do que você precisa...

Link para o comentário
Compartilhar em outros sites

  • 0

CARA..FAZ TEMPÃO QUE NÃO MEXO PHP.. MAS VOU TENTAR

<html>

<head>

<title>Lista</title>

</head>

<body bgcolor="#ffffff">

<?php

$conexao = mysql_connect("localhost", "root", "123456");

$db = mysql_select_db("teste");

$sql = "SELECT * FROM vereador ORDER BY Nome";

$resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados");

echo "<table width=760 border=0 cellpadding=1 cellspacing=1>";

echo "<tr bgcolor=\"eaeaea\">";

echo "<th width=40>ID</th>";

echo "<th width=300>Nome</th>";

echo "<th width=100>Parlamentar</th>";

echo "<th width=210>ID Partido</th>";

echo "<th width=50>ID Cargo</th>";

echo "</tr>";

while ($linha=mysql_fetch_array($resultado)) {

$id_vereador = $linha["ID_Vereador"];

$nome = $linha["Nome"];

$parlamentar = $linha["Nome_Parlamentar"];

$id_partido = $linha["ID_Partido"];

$id_cargo = $linha["ID_Cargo"];

echo "<tr>";

echo "<th width=40>$id_vereador<br></th>";

echo "<th width=300 align=\"left\">$nome<br></th>";

echo "<th width=100>$parlamentar<br></th>";

echo "<th width=210>$id_partido</th>";

echo "<th width=50>$id_cargo</th>";

echo "</tr>";

echo "<tr>";

echo "<th colspan=\"5\"><hr width=\"100%\" color=\"c0c0c0\"></th>";

echo "</tr>";

echo "<br>";

$i++;

if ($i = 3)

{

echo "<hr>";

$i = 0;

}

}

echo "</table>";

?>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

  • 0
Você vai ter que controlar o <tr>... é ele que quebra a linha na tabela... por exemplo, para criar uma tabela que tenha 3 colunas e 3 linhas e escreva uma frasezinha de um array...

<?php
$palavra = array(Isso ,é, apenas, uma, frase, para, testar, o, script);
$i = 0;
$controle = 1;
$cont = 1;
echo"<table width=\"70%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
while($controle <= 3){
if ($cont == 1){echo "<tr>";}else{}
echo"<td>$palavra[$i]</td>";
if ($cont == 3){echo "</tr>"; $cont = 1; $controle++;}else{$cont++;}
$i++;
}
echo "</table>";
?>

Essa é a idéia básica do que você precisa...

ESerra você chegou perto do que eu queria. Porém o resultado da sua consulta só mostra os dados 3 colunas e 3 linhas eu preciso disso dentro do while para que ele se ajuste automaticamente para quantos resultados retornarem. Por favor monte a extrutura da tabela em sua máquina e coloque dentro do meu script ou faça um novo com a mesma estrutura da minha tabela.

Muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Foi o que eu disse :excl:

Para fazer isso primeiro pegue a frase e use o explode para dividir os elementos... isso vai gerar um array, dai re-ordene esse array de forma aletatória usando o shuffle... pronto... para imprimir por exemplo 3 elemento em cada linha, mande imprimir o array que você fez em um laço (while, for...) e faça uma variável de controle, para imprimir um <BR> (quebra de linha) a cada 3 elementos do array (use sizeof para saber quantos elementos o array tem).

Link para o comentário
Compartilhar em outros sites

  • 0

Ok... agora que eu fui ver que a primeira coluna é a b c... a segunda d e f... nesse caso não vai precisar do suffle, mas vai precisar criar um algoritmo que primeiro veja quantas linhas vai dar no total.. pegar essas linhas e calcular que elemento vai ser impresso na segunda e terceira coluna (pois a primeira é fácil...)... ou seja, é mais raciocíonio que php... mas nada impossível...

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos supor que você tenha 10 elementos no array, logo você vai ter 4 linhas (10/3 = 4 linhas arredondando pra cima...), nesse caso na primeira linha você vai ter o elemento número 0 4 8, na segunda o 1 5 9 e assim por diante... logo assumindo que os elementos do array sejam: a b c d e f g h i j l a ordem ficaria:

a - e - i

b - f - j

c - g - l

d - h -

Logo ai você vai ter que ter uns três número de controle: 1 para controlar o laço de repetição... o outro para descobrir que elemento do array deve ser impresso e acho que mais um para controlar um if/else dentro do laço... eu faria assim... mas sei lá, tem várias opções...

EDIT:

para a coisa não ficar no ar caso alguém veja esse tópido no futuro vou colocar um exemplo funcional:

<?php
$frase = "a b c d e f g h i j l m n o p que r s t u v x z";
$frase1 = explode(" ", $frase);

$linhas = ceil(sizeof($frase1)/3);
$conta = 0;
$controle = 1;
$controle2 = 0;

while ($conta < sizeof($frase1)){
if ($controle == 1){echo $frase1[$controle2]." - ";
$controle++;
$controle2 = $controle2+$linhas;
}
elseif($controle == 2){echo $frase1[$controle2]." - ";
$controle++;
$controle2 = $controle2+$linhas;
}
elseif($controle == 3){echo $frase1[$controle2];
$controle = 1;
$volta = $linhas*2-1;
$controle2 = $controle2-$volta;
echo "<BR>";
}else{}
$conta++;
}
?>

Obs.: O fórum está convertendo a letra que para a palavra que

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...