Jump to content


Photo

Ordenar Por Id


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

#1 onlooker

onlooker

    Normal

  • Usuários
  • 102 posts
  • Sexo:Masculino
  • Interesses:Php, MySql, JS...

Posted 06/07/2009, 12:30

Fala Galera!

Bom, ontem estive aqui pedindo uma ajuda quanto a duvida em uma logica de um sistema, consegui solucionar esse meu problema através do scriot criado por Stêffano de Moura e postado em um outro site de scripts em PHP(acho que é contra as regras divulgação com links, ne?)

Pois bem, o script funciona perfeitamente, exceto pela minha necessidade. Ele está ordenando por ID(campo id normal), preciso que ordene por ID_INDEXADO(o campo que armazena o id "pai" no banco). Tentei de algumas formas, mas não consegui. Se alguem puder dar uma força...

mapa.class
<?				  ############################################################################
					#	Por Stêffano de Moura Barbosa Cardoso...duvidas fano_linux@hotmail.com #
					############################################################################
					
 class Dbi {
								//dados do banco
	private $conexao = false;
	private $servidor = "localhost";
	private $usuario = "root";
	private $senha = "123456";
	private $banco = "teste";
	public $tabela = "usuarios2";
		
		function conectaDB(){
			
			$this->linkdb = mysql_connect($this->servidor, $this->usuario, $this->senha); // conexao
			
			if ($this->linkdb) {
				
				$this->conexao = true;  //conexao valida
				
				$this->select_db = mysql_select_db($this->banco); //select o banco
			}
			
			else {
				
				echo"Favor checar sua conexão com os dados.";
			}
		}
		
		function fecha_link() {
			
			$this->fechar = mysql_close($this->linkdb); //fecha conexao
			$this->conexao = false;
		}
	}

	class Mapa extends Dbi {
		
		public $nivel = 0;	// nivel de profundidade
			
		function pai($cod) {
						
			if($this->conexao = true) {
																// query do primeiro item (nivel zero)	
			$this->query_pai = "SELECT id, nome, id_indexado FROM ".$this->tabela." 
										   WHERE id='".$cod."'";
									  
 			$this->exec_query_pai = mysql_query($this->query_pai) or die ("<b><font color='#FF0000'>Erro ao executar a consulta</font></b>");
									
				while($this->map = mysql_fetch_array($this->exec_query_pai)) {
												
				print "<tr><td class='dataTD'>".$this->nivel."</td>";
				print "<td class=dataTD >".$this->map['id']."</td>";
				print "<td class=dataTD >".$this->map['nome']."</td>";
				print "<td class=dataTD >".$this->map['id_indexado']."</td>";

				
				$mapa = new Mapa;
				$mapa->geramapa($this->map['id'], $this->nivel+1); // chama o metodo de gerar a arvore
	 			}			
			}
		}
	
		function geramapa($codigo, $nv) {
								
			if($this->conexao = true) {
												
			$this->query = "SELECT id, nome, id_indexado FROM ".$this->tabela."
									  WHERE id_indexado='".$codigo."'";
									  
 			$this->exec_query = mysql_query($this->query) or die ("erro na query");
		 								
				while($mapeando = mysql_fetch_array($this->exec_query)) {					
								
				print "<tr><td class='dataTD'>".$nv."</td>";
				print "<td class='dataTD' >".$auxbh = $mapeando['id']."</td>";
				print "<td class='dataTD' >".$auxxm = $mapeando['nome']."</td>";
				print "<td class='dataTD' >".$auxxm = $mapeando['id_indexado']."</td>";

				
				$mapa = new Mapa;
				$mapa->geramapa($mapeando['id'], $nv+1); //pega o resultado de sua propria query e continua listando até
terminar. colocando um nivel a mais para cada query, ou cada vez q o metodo se chamar.
				

		 		   }  
		 		   
			}
		}
	}
	
?>

Edição feita por: onlooker, 06/07/2009, 12:35.

"Você só é você quando ninguém está olhando" (Ann Landers)

#2 hooligans

hooligans

    Normal

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

Posted 06/07/2009, 15:26

amigo tu experimentou colocar tipo assim


select * from tabela order by seucampo /// asc crescente desc decrescente


testa colcoando order by e o campo amigo ;)


espero que seja isso a dúvida

#3 onlooker

onlooker

    Normal

  • Usuários
  • 102 posts
  • Sexo:Masculino
  • Interesses:Php, MySql, JS...

Posted 06/07/2009, 15:30

Opa Hooligans, beleza? Na realidade eu já havia tentado sim, mas nao funcionou...
acho que é necessário alterar a função, é ai que to meio perdido hehe
"Você só é você quando ninguém está olhando" (Ann Landers)

#4 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

Posted 06/07/2009, 16:17

essa query que esta assim:

$this->query = "SELECT id, nome, id_indexado FROM ".$this->tabela."
WHERE id_indexado='".$codigo."'";


poderia ficar assim:

$this->query = "SELECT * FROM ".$this->tabela."
WHERE id_indexado='".$codigo."' ORDER BY id";

pois nao e necessario vc especifikar as colunas ja que mais embaixo do codigo vc esta usando o fetch_array!

#5 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 06/07/2009, 20:46

essa query que esta assim:

$this->query = "SELECT id, nome, id_indexado FROM ".$this->tabela."
WHERE id_indexado='".$codigo."'";


poderia ficar assim:

$this->query = "SELECT * FROM ".$this->tabela."
WHERE id_indexado='".$codigo."' ORDER BY id";

pois nao e necessario vc especifikar as colunas ja que mais embaixo do codigo vc esta usando o fetch_array!


:wacko:

Bom...

Veja essa linha.
$this->query_pai = "SELECT id, nome, id_indexado FROM ".$this->tabela."                                            WHERE id='".$cod."'";

Tenta colocar assim:

$this->query_pai = "SELECT id, nome, id_indexado FROM ".$this->tabela."                                            WHERE id='".$cod."' ORDER BY id_indexado";

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





1 user(s) are reading this topic

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

IPB Skin By Virteq