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.










