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

Colunas Inversas


doulo4ever

Pergunta

Olá, sobre o código abaixo:

$sql = mysql_query("select * from datascomemorativas where mes like 1");

echo "<table border=0 cellpading=0 cellspacing=0 width=100%><tr>";

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

$id_data = @mysql_result($sql,$i,"id_data");
$nome = @mysql_result($sql,$i,"nome");
$dia = @mysql_result($sql,$i,"dia");
$mes = @mysql_result($sql,$i,"mes");
$descricao = @mysql_result($sql,$i,"descricao");

echo "<tr>";
echo "<td><font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;$nome</font></td>";

$i++;

$id_data = @mysql_result($sql,$i,"id_data");
$nome = @mysql_result($sql,$i,"nome");
$dia = @mysql_result($sql,$i,"dia");
$mes = @mysql_result($sql,$i,"mes");
$descricao = @mysql_result($sql,$i,"descricao");

echo "<td><font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;$nome</font></td>";
echo "</tr>";
}

echo "</table>";

Ele está listando os dados da seguinte forma:

1      2

3      4

5      6

....

Como devo customizá-lo para que ordene da seguinte forma:

1      4

2      5

3      6

....

Já tentei um monte de bobera, mas não consigo!

Alguém pode me ajudar? Algum moderador ou usuário? unsure.gif

Obrigado!

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

Você fez o código e não consegue modificar, cara? huh.gif

Quanto a isso você vai ter que aprender alguma coisa do básico pra entender o que está sendo feito. É tão simples que se você entender o que acontece no script você vai saber resolver.

· http://br.php.net/function.mysql-result

· http://br.php.net/manual/pt_BR/language.op...s.increment.php

Link para o comentário
Compartilhar em outros sites

  • 0

O duro é que não faz muito tempo que comecei a mexer e não to manjando do negócio pra valer ainda, to aprendendo bastante coisa nova ainda! Por exemplo...ontém que fui começar a me aventurar a fazer relatórios em PDF!

Eu acho que tem que dividir o total de resultados e listar metade em uma coluna e a outra metade em outra coluna, é isso?

Agradeço muito se alguém puder me ajudar! Sei que tem bastante gente aqui que mexe com isso faz tempo e entende muito bem do negócio! biggrin.gif

Valeu!!!!! smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Entrei lá, mas tá foda de entender direito viu... dry.gif

Pra que serve na verdade aquele "mysql_fetch_array"?

Quando e como usar?

Olha...tentei fazer um negócio aqui:

$sql = mysql_query("select * from datascomemorativas where mes like 2");
$total = mysql_num_rows($sql);
$metade = round($total/2);

echo "<table width='100%' border='0' cellspacing='1' cellpadding='1' style='border-collapse: collapse' bordercolor='#111111'><tr>";
echo "<td width='50%' align='left' valign='top' bgcolor='#BFC5CB'>";

for($i=0;$i<$metade;$i++){

$id_data = @mysql_result($sql,$i,"id_data");
$nome = @mysql_result($sql,$i,"nome");
$dia = @mysql_result($sql,$i,"dia");
$mes = @mysql_result($sql,$i,"mes");
$descricao = @mysql_result($sql,$i,"descricao");

if($nome) {
if($descricao==''){
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;$nome</font><br>";
}else{
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;<a href='index.php?acao=exibe&id_data=$id_data'><u>$nome</u></a></font><br>";
}
}
}
echo "</td>";

echo "<td width='50%' align='left' valign='top' bgcolor='#BFC5CB'>";

for($i=$metade;$i>$metade;$i++){

$id_data = @mysql_result($sql,$i,"id_data");
$nome = @mysql_result($sql,$i,"nome");
$dia = @mysql_result($sql,$i,"dia");
$mes = @mysql_result($sql,$i,"mes");
$descricao = @mysql_result($sql,$i,"descricao");

if($nome) {
if($descricao==''){
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;$nome</font><br>";
}else{
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;<a href='index.php?acao=exibe&id_data=$id_data'><u>$nome</u></a></font><br>";
}
}
}
echo "</td>";

echo "</tr></table>";

Dividi o resultado total e coloquei para listar a primeira metade na primeira coluna, e o restante na outra coluna, a primeira metade listou normalmente, mas a segunda ficou em branco!

A tese tá certa? Ou não tem nada a ver?

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo, quando fazemos uma consulta no mysql ou em algum banco, os resultados vêm em arrays!? É isso?

A diferença entre o for e o foreach é que o for dá pra escolher a partir de que ponto queremos começar a exibir as arrays, ou tem mais coisas?

Se puder dar uma iluminada melhor, agradeço muito! smile.gif

...sobre a ordenação das colunas...dá pra fazer do jeito que estou tentando ali? ou tem jeito mais fácil?

Link para o comentário
Compartilhar em outros sites

  • 0

A questão não é a ordenação das colunas, cara

A questão é que você pegou um script e não sabe nem o que ele faz! Essa é a questão!

Tipo, quando fazemos uma consulta no mysql ou em algum banco, os resultados vêm em arrays!? É isso?

E isso aí...

A diferença entre o for e o foreach é que o for dá pra escolher a partir de que ponto queremos começar a exibir as arrays, ou tem mais coisas?

Não, cara, não é isso, não. Você está querendo correr sem saber andar, cara. Se você não conhece o for, falta lógica de programação aí. Falta o feijão com arroz.

· http://br.php.net/manual/pt_BR/control-structures.for.php

· http://br.php.net/manual/pt_BR/control-str...res.foreach.php

Dá uma lida... se tiver alguma dúvida sobre eles, poste aí... smile.gif

E um while? Você sabe o que faz um while? Um if e um else você sabé né?

Link para o comentário
Compartilhar em outros sites

  • 0

Sei que dá pra listar os dados com while também!

Mexer com if e else eu to sabendo sim!

Olha, tava dando uma olhada, fiz dessa forma:

$sql = mysql_query("select * from datascomemorativas where mes like 2");
$total = mysql_num_rows($sql);
$metade = round($total/2);

echo "<table width='100%' border='0' cellspacing='1' cellpadding='1' style='border-collapse: collapse' bordercolor='#111111'><tr>";
echo "<td width='50%' align='left' valign='top' bgcolor='#BFC5CB'>";

for($i=0;;$i++){

$id_data = @mysql_result($sql,$i,"id_data");
$nome = @mysql_result($sql,$i,"nome");
$dia = @mysql_result($sql,$i,"dia");
$mes = @mysql_result($sql,$i,"mes");
$descricao = @mysql_result($sql,$i,"descricao");

if($i>$metade){
break;
}else{
if($nome){
if($descricao==''){
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;$nome</font><br>";
}else{
echo "<font face=Verdana size=1>&nbsp;$dia&nbsp;&middot;&nbsp;<a href='index.php?acao=exibe&id_data=$id_data'><u>$nome</u></a></font><br>";
}}
}

}

echo "</td></tr></table>";

Utilizei de outra forma o laço for! com a expressão do meio vazia! daí utilizei if($i>$metade){ para exibir somente até a metade dos resultados em uma coluna, dá uma olhada lá! tá certo dessa forma?

Agora preciso dar um jeito de mostrar o resto na outra coluna!

É por aí mesmo?

Link para o comentário
Compartilhar em outros sites

  • 0

Não... porque você não faz aquela verificação direto no for? o for foi feito justamente pra isso! mellow.gif

A 2ª expressão diz ao for quando parar. Por isso eu acho que você precisa entender antes de continuar. Fazer remendos sem saber o que se está fazendo, cara, não é legal!

Vamos começar do início?

Nem o for, nem o while tem necessariamente alguma coisa a ver com o MySQL, eles servem pra se criar loops. Por esse motivos eles são utilizados para buscar os dados que vêm do MySQL. Se você não enteder como funcionam as arrays e como funcionam essas estruturas básicas de comando, cara, você vai ficar meio boiando...

Então deixe o seu script de lado por um instante e mantenha o foco em aprender essas 2 coisas:

· estruturas de controle (for, while, foreach, switch, etc)

· utilização de arrays (o que são, como adicionar itens, como remover itens, como fazer um loop que mostre todos os elementos de uma array)

Vamos ao while:

While em inglês quer dizer "enquanto". Sempre tente traduzir essas coisas, elas são meio autoexplicativas na maioria das vezes... smile.gif

- Certo, Error, então o que o while faz?

O while executa todo o código dentro de "{}" enquanto a expressão dentro de "()" for verdadeira.

- Hã? blink.gif

É o seguinte, veja o exemplo:

$i = 0; // setando o valor inicial de $i como 0

while($i < 10){ //enquanto $i for menor que 10, execute:

echo $i . "<br \>"; // exibe $i

$i++; // aumenta o valor de $i em 1

}

Isso vai gerar:

0

1

2

3

4

5

6

7

8

9

- E o for? O que é o for? E o foreach?

Calma aí... 1 de cada vez. happy.gif

O for é o irmão mais novo do while, ele é usado em casos mais específicos, mas faz praticamente a mesma coisa que o while. Em português, for significa "para" (certo, esse não é tão autoexplicativo... rolleyes.gif ).

Então o for tem 3 parâmetros, que são, respectivamente:

• O estado inicial: Aqui você seta como as variáveis e outras coisas vão estar no início do for

• O "enquanto": Aqui é exatamente aquele mesmo parâmetro do while, ele vai executar o código entre as "{}" enquanto essa expressão for verdadeira

• O "a cada loop": Aqui você vai colocar o código que será executado para cada loop que for dado, sempre no final do loop, o for vai executar esse código.

Com essa informação, conseguimos fazer a mesma coisa que fizemos antes com o while, mas de forma mais otimizada:

for($i=0; $i<10; $i++){ // $i começa como 0 e vai acrescentando 1 a cada loop enquanto ele for menor que 10

echo $i . "<br \>"; // exibe $i

}

Vai gerar:

0

1

2

3

4

5

6

7

8

9

- Certo Error e o foreach?

O foreach, bom, pra entender o foreach você precisa entender as arrays primeiro...

E aí, já sabe como elas funcionam?

Link para o comentário
Compartilhar em outros sites

  • 0

De novo você querendo botar a carroça na frente dos bois.

Você tem que aprender lógica de programação antes de tentar programar, cara, não dá pra correr sem saber andar...

Lembra do colégio? Das matrizes?

Arrays são matrizes.

Mas em programação elas funcionam um pouco diferente. É como se elas fossem uma variável que guarda N outras variáveis.

Cada elemento da array tem um nome, um índice.

Então, por exemplo:

$array = array("valor1","indice2"=>"valor2","indice3"=>"valor3","valor4");

$array[5]= 'foobar';

$array['foo'] = 'bar';

Você tem uma array onde:

0 = "valor1" // o indice sempre começa a contar do 0

"indice2" = "valor2" // quando você não põe nada como índice ela dá um índice automático e numérico, quando você especifica o índice, o valor fica atrelado a ele

"indice3" = "valor3"

1 = "valor4" // ele dá o nº 1 pro valor4 porque o 2 e o 3 tiveram os nomes especificados, então ele pega o numérico anterior, soma 1 e esse é o indice daquele valor

5 = "foobar"

"foo" = "bar"

Dá uma boa lida nisso, mas uma boa lida mesmo:

· http://br.php.net/manual/pt_BR/language.types.array.php

Aí em cima explica bastante das arrays.

while ($coluna = @mysql_fetch_array($query)){

Quando a isso, bom...

Quando você põe simplesmente uma variável como condição para terminar um loop ou para um IF, ele vai checar se aquela variável existe, funciona como um isset($foo)

A mesma coisa vale pro while, aquilo ali em cima funciona como um:

"Enquanto $coluna existir..."

Ao mesmo tempo ele dá um valor a ela, então:

"Enquanto $coluna, tendo como valor (@mysql_fetch_array($query)) existir..."

O mesmo princípio é usado em arrays, você coloca um valor que vai aumentando e verifica se a $array[$i] existem, quando o $i passar do último item da array, vai retornar FALSE.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que tá melhor esclarecido pra mim como utilizar esses comandos!

Mas não estou conseguindo listar corretamente em duas colunas, já me conformei com a ordem anterior mesmo!

Afinal trabalho com coisas que não tem nada a ver com programação, mexo com importação de distribuição de produtos, fuço no PHP mais como um robby mesmo, gosto de fuçar em coisas novas, não sou programador profissional e seria muita pretenção tentar saber a fundo todas as funções e aplicações desta linguagem.

Tenho um site aqui na minha cidade sem fins lucrativos e utilizo o PHP apenas para desenvolver algumas coisas pra mim mesmo, o que eu tava precisando no momento era apenas inverter a ordem de aparição dos resultados. Vai ser meio difícil tentar aprender a fundo como fazer isso pois nunca fiz nenhum curso relacionado, por isso estava procurando alguém que pudesse me ajudar apenas com isso.

Mas valeu de qualquer forma, entendo que é melhor explicar o caminho que se aprende melhor, mas eu só queria uma força com isso mesmo, minha intenção não é ser um expert no assunto, somente fazer minhas consultas básicas aqui já tá bom demais pra mim!

falou! smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Vou tentar te explicar...

Isso é bem fácil fazer com o "FOR"

Veja:

for($i=1; $i<=6; $i++)

{

echo $i."<BR>";

}

Agora para fazer do jeito que você quer você vai ter que achar a metade do valor de volta

que o "for" irá fazer.

6 no caso é 3, mais isso você terá que fazer, em código.

$total = 6;

$divide = ($total / 2);

for($i=1; $i<=$divide; $i++)

{

echo $i."<BR>";

}

Ai para achar o valor da segunda coluna é pegar o $divide e somar com $i do loop

que a cada volta será um número diferente, sendo assim você terá o resultado que espera.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha Pessoal, pra quem precisar de um negócio parecido, o código ficou desta forma:

$sql = mysql_query("select * from datascomemorativas where mes like 1");
$total = mysql_num_rows($sql);
$divide = round($total/2);

echo "<table width='100%' border='0' cellspacing='1' cellpadding='1' style='border-collapse: collapse' bordercolor='#111111'><tr>";

for($i=0; $i<$divide; $i++){

$coluna1 = $i;
$coluna2 = ($divide + $i);

$nome1 = @mysql_result($sql,$coluna1,"nome");
$nome2 = @mysql_result($sql,$coluna2,"nome");

echo "<TR>";
echo "<td width='50%' align='left' valign='top' bgcolor='#F0F0F0'>";

echo "$nome1";

echo "</TD><td width='50%' align='left' valign='top' bgcolor='#F0F0F0'>";

echo "$nome2";

echo "</TD>";
echo "</TR>";
}

echo "</TABLE>";

Pelo que vi na busca do fórum, muitas pessoas postaram com essa mesma dúvida e não obtiveram êxito, aí está o código para quem precisar....afinal....O PHP é uma linguagem aberta, não é....muitas pessoas vão aprendendo sobre o assunto pesquisando scripts já prontos para depois ir se aprimorando e desenvolvendo seus prórpios scripts!

Acho que a função do fórum é essa também!!

Até +++ smile.gifsmile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

PHP é uma linguagem aberta sim, todos podem aprender e programar nela. A documentação está toda exposta na internet pra quem quiser aprender.

O que não é grátis é o trabalho dos programadores. Estamos aqui pra ajudar quem está disposto a aprender, estamos gastando o nosso precioso tempo com a maior das boas vontades, explicando e ajudando todos os iniciantes. Se você não trabalha com isso e não tem intenção de aprender, cara, só posso te dizer pra contratar um programador.

Não me entenda mal, não sou mercenário, só acho uma falta de respeito as pessoas virem aqui pedir pra que a gente passe coisas prontas. Se a sua TV estraga, você vai no Técnico eletrônico e pede pra ele consertar de graça? Quando o seu carro apresenta problema você pede pro mecânico fazer de graça?

Então, cara, se você quiser aprender a linguagem, perfeito, como você viu, vou te explicar nos maiores detalhes e te dar a maior atenção do mundo, mas não venha pedir coisa pronta porque eu realmente acho falta de respeito com a gente.

Link para o comentário
Compartilhar em outros sites

  • 0

Error, não era essa minha intenção, desculpe se você se sentiu "usado"! unsure.gif

Na verdade, eu só precisava de uma luz de como listar daquela forma, pois não conheçoa fundo a linguagem, to pegando aos poucos esses macetes.

Valeu pelas explicações.... smile.gif

Sds

Até mais

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,4k
    • Posts
      652,2k
×
×
  • Criar Novo...