Jump to content


Dividir Em Colunas


  • Faça o login para participar
7 replies to this topic

#1 Visitante - Felipe

Visitante - Felipe
  • Visitantes

Posted 10/09/2003, 02:06

Olá pessoal,

Consegui um script para dividir em colunas:

$hostname = "localhost"; 
    $username = "root"; 
    $password = "senha"; 
    $dbname   = "cadastro"; 

    MYSQL_CONNECT($hostname, $username, $password) OR DIE("Nao pude conectar"); 
    @mysql_select_db( "$dbname") or die( "Nao pude selecionar o banco de dados"); 

    $query = "select nomes from usuarios"; 
    $result = MYSQL_QUERY($query); 


    if(!isset($colunas)) $colunas = 3; 

    $i=1; 
    while ($row = mysql_fetch_array($result)){ 
        $data[$i] = $row["nome"]; 
        $i++; 
    } 

    $usado = array();; 

    $salto = intval(count($data)/$colunas); 

    $test  = $colunas * $salto; 
    $total = count($data); 


    if ($test < $total){ 
        while( ($colunas * $salto) < $total ){ $salto++; } 
    }                                                              
    function printtd($ponto){ 
        global $data,$usado, $salto, $colunas; 
        for($c = 0; $c < $colunas; $c++ ){ 
            if(!empty($data[$ponto])) print "\t<td>$data[$ponto] ($ponto)</td>\n"; 
            $ponto +=  $salto; 
            $usado[$ponto] = $ponto;; 
        } 
    } 
    ?> 

<table> 
<tr> 
    <? 

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

        if(empty($usado[$j])){ 
            printtd($j); 
            print "\n</tr>\n<tr>\n"; 
        } 
    } 

    $resto = $j % $colunas; 
    if( $resto != 0) print "\n</tr>"; 

    ?> 

</table>

Só que ele exibe o codigo html assim:

<tr><td>1 nome </td><td>20 nome</td></tr>
<tr><td>2 nome </td><td>21 nome</td></tr>

e eu gostaria que o codigo html ficase assim:

<tr>
    <td width="50%">1 nome<br>2 nome</td>
    <td width="50%">3 nome<br>4 nome</td>
  </tr>

onde devo alterar e qual a alteração que devo fazer???

#2 sensuais

sensuais

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 10/09/2003, 12:26

Ve se isso te ajuda:

while($row=mysql_fecth_row($sql)){
// adicione uma nova variavel assim:

$novavariavel++;

ai você fazr o table

<table>
<tr>
<td>aqui dentro vai os dados </td>
if($novavariavel==2){
echo"</tr>";
}else{
}
// feche o while
}
?>
</table>



#3 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 10/09/2003, 12:27

Oi, Felipe!

Diga o q vc quer, na verdade. Tipo... Foram encontrados 20 nomes. Como vc quer q eles fiquem organizados na tela?

Explique q eu faço pra vc o código aki. Esse aí tá muuuuito zoneado!

Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.

#4 Visitante - Felipe

Visitante - Felipe
  • Visitantes

Posted 10/09/2003, 12:45

Olá Thales Medeiros,
É o seguinte, o codigo separa em varias colunas e eu gostaria que ficase em apenas duas colunas, tipo:

1 Nome | 20 Nome
2 Nome | 21 Nome

gostaria que o codigo html que ele gera ficasse assim:

<tr>
<td width="50%">1 Nome <br> 2 Nome</td>
<td width="50%">20 Nome <br> 21 Nome</td>
</tr>

E não desta forma:

<tr><td>1 nome </td><td>20 nome</td></tr>
<tr><td>2 nome </td><td>21 nome</td></tr>

Meu problema é só a forma como ele gera o html.
Será que tem como arrumar???

#5 Visitante - Felipe

Visitante - Felipe
  • Visitantes

Posted 10/09/2003, 13:11

Desculpe estar postando novamente, só que achei dois exemplos que eu gostaria de mostar.

Eu gostaria que o script ficasse assim. Ex.:

http://cifraclub.ter...tra.php?letra=D

Só que meu script esta gerando assim. Ex.:

http://www.supercifr...ras.php?letra=D

sei que é a mesma coisa só que o 1° exemplo gera um codigo html diferente do 2° exmplo, tem como fazer com que o script gere um html como no 1° exemplo???

#6 Visitante - Felipe

Visitante - Felipe
  • Visitantes

Posted 11/09/2003, 09:05

Olá pessoal,

eu só gostaria de saber o script é muito tosco "ruim" ou não tem como alterar para que fique como no 1° exemplo???

#7 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 11/09/2003, 19:14

Oi, Felipe! Blz?

Bem... Foi mal pela demora, mas meu tempo está sempre curto. :)

Lá vamos nós...

Não digo q o código está muito "tosco", pois pelo jeito, ele pelo menos funciona. Não como vc quer, mas funciona. Contudo ele está bem confuso, então eu prefiro fazer um novo. Não é difícil. Se vc dar uma olhada, até poderá entender o q farei.

Antes vou citar uma coisa... No código q vc postou tem uma opção de dividir por qts colunas vc quiser. Então eu farei o mesmo. Não posso falar q o código está confuso e fazer um código pior, né?! Mas se forem sempre duas colunas, me avise, pois o código vai ficar ainda menor. Vamos lá:

$host = "host";
$usuariobd = "usuario";
$senhabd = "senha";
$banco = "nomebanco";

$con = mysql_connect($host, $usuariobd, $senhabd) or die("Não pude conectar.");
mysql_select_db($banco, $con) or die("Banco inexistente.");
$busca = mysql_query("SELECT nome FROM usuarios", $con);

if (!isset($colunas)) $colunas=2; //prefiro 2 colunas por padrão. :)

$registros = mysql_num_rows($busca);

if($registros%$colunas==0) $linhas = $registros/$colunas;
else $linhas = intval($registros/$colunas) + 1;

//aqui eu verifiquei se a divisão do número de registros pelo número de colunas
//não deixará algum resto. Por exemplo: 23 registros pra 2 colunas faz com q tenha
//1 registro como resto da divisão, então neste caso eu faço as primeiras colunas terem mais
//registros que a última. caso contrário, se forem 22 registros para 2 colunas, a divisão
//não sobra resto, então o número de linhas será exatamente $registros/$colunas.
//
//Na prática fica:
//23 registros para $colunas = 2
//primeira coluna com 12 registros e segunda com 11
//22 registros para $colunas = 2
//primeira e segunda colunas com 11 registros

$larguracoluna = intval(100 / $colunas);

$i=1;
while ($col = mysql_fetch_array($busca)) {
   if ($i==1) echo "<table><tr><td width=$larguracoluna%>";
   elseif ($i%$linhas==1) echo "</td><td width=$larguracoluna% valign=top>\r\n";
   else echo "<br>";
   echo "$i $col[0]\r\n";
   $i++;
}
echo "</table>";

Se vc quiser definir o número de colunas, basta escrever na URL a variável $coluna. Por exemplo: se o arquivo q tem este código aí chama-se lista.php, basta chamá-lo num link deste jeito: "lista.php?colunas=4". Deste jeito serão 4 colunas. Ok?

Acho q deu certo! :) Se quiser, pode tirar todas aquelas linhas começadas por //, para deixar seu código mais curto.

Se tiver alguma dúvida ou se vc encontrar algum erro, me fale!

Espero ter ajudado...

Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.

#8 Guest

Guest
  • Visitantes

Posted 12/09/2003, 12:22

Muito obrigado Thales Medeiros, ficou ótimo o script, exatamente como eu estava precisando, valeu mesmo.


T+ ;)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq