Jump to content


Photo

Listar Resultados Em Ordem Alfabetica


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

#1 tempest

tempest

    12 Horas

  • Usuários
  • 131 posts
  • Sexo:Masculino
  • Localidade:Caçador, SC
  • Interesses:Php, Mysql e interatividade!

Posted 28/06/2008, 22:42

Olá pessoal, tenho um SELECT que lista pelo id as (categorias) desta maneira:


CORSA
VECTRA
CELTA
MERIVA
MONTANA
....
EU queria mostrar estes itens desta maneira:

A
...

B

...

C
CORSA
CELTA
...


e ai, alguem sabe como posso fazer isso? :click:

Edição feita por: tempest, 28/06/2008, 22:43.

Posted Image
Css - Flash - Php?...
<? echo "Compartilhar é uma boa forma de aprender"; ?>

#2 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 29/06/2008, 00:14

ordene pelo titulo da categoria:

ORDER BY titulo ASC

#3 tempest

tempest

    12 Horas

  • Usuários
  • 131 posts
  • Sexo:Masculino
  • Localidade:Caçador, SC
  • Interesses:Php, Mysql e interatividade!

Posted 29/06/2008, 15:00

Olá Marcivone,

ordenou em ordem alfábética certinho,

mas como eu faria pra separar e mostrar as letras? tipo:

A
Ana
Alex
B
Bruna
Barbara
...

:(

Edição feita por: tempest, 29/06/2008, 15:01.

Posted Image
Css - Flash - Php?...
<? echo "Compartilhar é uma boa forma de aprender"; ?>

#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 29/06/2008, 15:06

Você coloca num loop e compara coma a letra da linha anterior, se for diferente... mostra!
Mas bem, isso já é linguagem de programação :D
Qual vc está usando pra apresentar os dados? PHP?

#5 tempest

tempest

    12 Horas

  • Usuários
  • 131 posts
  • Sexo:Masculino
  • Localidade:Caçador, SC
  • Interesses:Php, Mysql e interatividade!

Posted 29/06/2008, 15:34

Sim boirock, estou fazendo um php!

segue o code:

<?
include 'conexao.php';

$consulta = mysql_query("SELECT * FROM lista order by nome ASC");
while($nomes = mysql_fetch_array($consulta)){
$nome = $nomes[1];

echo "$nome.<br/>";
}

?>


já pensei em fazer um Select para cada letra, mas ai ficaria com muitos selects né?
alguma ideia? (ok2)

Edição feita por: tempest, 29/06/2008, 15:46.

Posted Image
Css - Flash - Php?...
<? echo "Compartilhar é uma boa forma de aprender"; ?>

#6 X-PHP

X-PHP

    Normal

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

Posted 29/06/2008, 18:49

Olá,

Eu não testei, mas garanto que o caminho é este, ok???

include 'conexao.php';
$alfa="A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z";
$letra = explode(">", $alfa);
for ($x=0; $x< sizeof($letra); $x++) {
echo "<b>$letra[$x]</b><br>";

$consulta = mysql_query("select * from lista LEFT(nome,1) = '$letra[$x]' ORDER BY nome");
while ($col = mysql_fetch_array($consulta)) {
echo $col["nome"].'<br>';
}

}

Abraços e T+

#7 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 29/06/2008, 19:03

Legal a solução do X-PHP, muito bem pensanda :D
A única coisa que eu não gostei é que faz um SELECT pra cada letra... Se 5 usuários acessarem esse script simultaneamente, são 115 SELECTs num curtísimo período de tempo...
Bem, vou dar minha sugestão com um SELECT só! Daí vc vê aí qual se adapta melhor ao seu caso...
include 'conexao.php';

// Inicio a variável
$ultimaLetra = null;

$consulta = mysql_query("SELECT * FROM lista order by nome ASC");
while($nomes = mysql_fetch_array($consulta)){
if (substr($nomes[1],0,1) != $ultimaLetra) {
	echo $ultimaLetra = substr($nomes[1],0,1);
}

echo $nomes[1]."<br/>";
}


#8 lwirkk

lwirkk

    Veterano

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

Posted 29/06/2008, 20:30

Isso dá '-'
Testa esse exemplo separado, e depois testa o de baixo com seu SQL '-'
No segundo exemplo, você precisa editar a parte do WHILE no início de acordo com seu banco de dados, como nome da coluna e etc....

<?
$array=array('Bruna','Ana','Barbara','Alex','Luan','Raffael','Rafaela');
sort($array);
$count=count($array);

for($i=0;$i<$count;$i++){
if($i!=0){
if(substr($array[$i],0,1)==substr($array[$i-1],0,1)){
echo $array[$i].'<br>';
}else{
echo '<strong>'.substr($array[$i],0,1).'</strong><br>';
echo $array[$i].'<br>';
}
}else{
echo '<strong>'.substr($array[$i],0,1).'</strong><br>';
echo $array[$i].'<br>';
}
}

?>


Desculpa aí boirock, dei um CTRL + C na sua variavel da query do SQL huahuauhauha.

<?
$consulta = mysql_query("SELECT * FROM lista order by nome ASC");
while($nomes = mysql_fetch_array($consulta)){
$array[]=$nomes['1'];
}

sort($array);
$count=count($array);

for($i=0;$i<$count;$i++){
if($i!=0){
if(substr($array[$i],0,1)==substr($array[$i-1],0,1)){
echo $array[$i].'<br>';
}else{
echo '<strong>'.substr($array[$i],0,1).'</strong><br>';
echo $array[$i].'<br>';
}
}else{
echo '<strong>'.substr($array[$i],0,1).'</strong><br>';
echo $array[$i].'<br>';
}
}

?>


E tempest, uma dica é que $nomes['1'] é muito mais rápido que $nomes[1]... xD

Até! =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#9 tempest

tempest

    12 Horas

  • Usuários
  • 131 posts
  • Sexo:Masculino
  • Localidade:Caçador, SC
  • Interesses:Php, Mysql e interatividade!

Posted 29/06/2008, 21:27

E ai pessoal, obrigado pela ajuda;

boirock, seu exemplo funcionou perfeitamente, só tive que adaptar os detalhes! obrigado
:click:

lwirkk, vou testar o seu exemplo mais tarde , por enquanto o do boirock está a funcionar como eu queria! :rolleyes:

Abraço;

EDITADO:

há, e obrigado pela dica também, (ok2)

Edição feita por: tempest, 29/06/2008, 21:29.

Posted Image
Css - Flash - Php?...
<? echo "Compartilhar é uma boa forma de aprender"; ?>

#10 lwirkk

lwirkk

    Veterano

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

Posted 29/06/2008, 23:03

Érhh, agora que fui analizar o código do boirock, que vi que o dele é mil vezes mais viável huahuahua, antes fiquei meio na dúvida por causa de uma parte do script que eu não estava entendendo, mas agora está OK! =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#11 X-PHP

X-PHP

    Normal

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

Posted 30/06/2008, 00:05

Olá boirock

Você tem razão, na hora que escrevi esqueci deste fato.

Muito bem bolado o teu sistema, parabéns.


Abraços e T+

Elisandro

#12 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 30/06/2008, 02:19

Legal a solução do X-PHP, muito bem pensanda :D
A única coisa que eu não gostei é que faz um SELECT pra cada letra... Se 5 usuários acessarem esse script simultaneamente, são 115 SELECTs num curtísimo período de tempo...
Bem, vou dar minha sugestão com um SELECT só! Daí vc vê aí qual se adapta melhor ao seu caso...

include 'conexao.php';

// Inicio a variável
$ultimaLetra = null;

$consulta = mysql_query("SELECT * FROM lista order by nome ASC");
while($nomes = mysql_fetch_array($consulta)){
if (substr($nomes[1],0,1) != $ultimaLetra) {
	echo $ultimaLetra = substr($nomes[1],0,1);
}

echo $nomes[1]."<br/>";
}


Só uma observação no seu código boirock, você pode acessar qualquer letra de uma variável da uma forma mais fácil e correta:

<?php

$php="Nice";

echo $php{0}; //Retorna N
echo $php{1}; //Retorna i
echo $php{2}; //Retorna c
echo $php{3}; //Retorna e

//Resultado final, exibe Nice na tela.

?>

Nesse caso aí, pra efeito de ordem alfabética pode ser utilizado $variavel{0} para descobrir a letra pela qual ela se inicia.

Edição feita por: victorhb, 30/06/2008, 02:20.


#13 lwirkk

lwirkk

    Veterano

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

Posted 30/06/2008, 02:43

victorhb, fiz os testes aqui para ver uma diferença significante entre as duas opções, e num é que é mesmo? Do jeito que você citou chega a ser 3 vezes mais rápido em situações com muitas iterações :lol:

Eu sempre tinha pensado que das duas formas eram tanto faz huahua, mas para quem não sabia também, fica aí a dica, que o que o victorhb propôs é mais rápido que usando a função do PHP.... ^^

obs: Fiz o teste com 100 mil iterações somente...
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#14 tempest

tempest

    12 Horas

  • Usuários
  • 131 posts
  • Sexo:Masculino
  • Localidade:Caçador, SC
  • Interesses:Php, Mysql e interatividade!

Posted 30/06/2008, 14:48

Eu sempre tinha pensado que das duas formas eram tanto faz huahua, mas para quem não sabia também, fica aí a dica, que o que o victorhb propôs é mais rápido que usando a função do PHP.... ^^

obs: Fiz o teste com 100 mil iterações somente...


Realmente, foi mais rápido mesmo! :click:

eu nao sabia que existia esse "método", valeu pela dica victorhb!

:lol:
Posted Image
Css - Flash - Php?...
<? echo "Compartilhar é uma boa forma de aprender"; ?>




0 user(s) are reading this topic

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

IPB Skin By Virteq