Ir para conteúdo

Arquivado

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

Elson Lima

Numerar a consulta de acordo com o ID

Recommended Posts

Ola Pessoal!!

 

Estou fazendo uma consulta no banco de dados usando o seguinte sql:

$sql = mysql_query("SELECT * FROM inscricao WHERE id_evento='$evento' AND id_sub != '0' AND id_cat != '0' ORDER BY id_sub ASC, id_cobranca ASC") or die(mysql_error());
$conta = mysql_num_rows($sql);
$i = 0;
while($ver = mysql_fetch_array($sql)){
// aqui dentro o resultado
}

Nos meus resultados aparece assim:

 

| ordem | ID | Atleta | Categoria

| 1/150 | 1254 | Nome do atleta | categoria 1

| 2/150 | 1220 | Nome do atleta | categoria 1

| 3/150 | 1500 | Nome do atleta | categoria 2

| 4/150 | 1321 | Nome do atleta | categoria 3

 

Neste caso uso a variável $i pra incrementar a order "1/150, 2/150 ..."

 

O problema é que preciso que este increment seja de acordo com o ID ex:

 

| ordem | ID | Atleta | Categoria

| 2/150 | 1254 | Nome do atleta | categoria 1

| 1/150 | 1220 | Nome do atleta | categoria 1

| 4/150 | 1500 | Nome do atleta | categoria 2

| 3/150 | 1321 | Nome do atleta | categoria 3

 

Creio que isso possa ser feito direto no SELECT. Alguem pode ajudar?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só ordenar pelo ID

 

 

SELECT ... ORDER BY id ASC;

 

assim o contador vai contar do menor pro maior

 

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Berlado.

Mas assim ele vai ficar por ordem de id. se reparar meu select, vai ver que ele ordena usando dois atributos:

ORDER BY id_sub ASC, id_cobranca ASC

Eu preciso que ele conte os registros de va numerando de acordo com o numero do id, sem importar a ordem que eles estejam. Pois a ordenação é feita pela categoria.

 

E como se tivesse contando a ordem do id. ex: id 2500 = 5º registro. 2480 = 3º registro, 2490 = 4º registro e assim por diante.

 

90% dos servidores ainda trabalham com php 5.2, eu atualmente trabalho com 5.4. Trabalho tbem com "mysqli ", mas isso não vem ao caso. Odeio PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse id que tem na sua descrião, com os valores: 1254, 1220, 1500, 1321... são qual id? Ordene por ele e imprima a "ordem" como estava fazendo. Foi a dica que o Beraldo deu ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso te dar uma sugestão meio maluca.... Vc cria uma função que acesse cada elemento do seu vetor(resultado da consulta e ordene esses ids em um vetor auxiliar. Depois vc numera esse vetor auxiliar. Feito isso, vc roda novamente o seu vetor principal e verifica qual id é compativel com o vetor auxiliar, ai imprime o vetor principal e a numeração salva no vetor auxiliar.... uuufaa .... :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mldiogo87
      Bom dia,
       
      Ao realizar uma consulta no banco de dados, via PDO, ele retornará X resultados:
       
      Ex.:
       
      $dados = $conex->prepare('SELECT f.id AS idfoto, f.caminho, f.lugar, f.usuario AS usuarioid, f.legenda, f.ranking, f.tag, l.nome AS nomelugar, u.nome AS nomeusuario FROM fotos AS f INNER JOIN lugar AS l ON f.lugar = l.id INNER JOIN usuarios AS u ON f.usuario = u.id WHERE l.nome LIKE :filtro ORDER BY f.id DESC Limit 50'); $dados->bindValue(':filtro', '%'.$filtro.'%'); $dados->execute(); if ($dados->rowCount() > 0) { while ($linha = $dados->fetch(PDO::FETCH_OBJ)) { echo ' '.$linha->nomelugar.''; } } Suponhamos que nessa consulta, o MySql tenha retornado 8 registros. Ok. Minha necessidade seria que antes da "$linha->nomelugar." exibisse a numeração correspondente a essa consulta. Ex.:
       
      $numeroconsulta + $linha->nomelugar., como no exemplo foi 8 registros ficará assim:
       
      1 + $linha->nomelugar
      2 + $linha->nomelugar
      ....
      8 + $linha->nomelugar
       
      Se, em outra consulta, retorna 10 registros:
      1 + $linha->nomelugar.
      ...
      10 + $linha->nomelugar.
       
      Alguém tem alguma luz para eu pesquisar algo nesse sentido ?
       
      Grato,
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.