Ir para conteúdo

POWERED BY:

Arquivado

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

vinicius015

[Resolvido] Menu com loop

Recommended Posts

Paz Galera, alguém poderia me orientar como fazer este menu com loop...

 

exemplo:
ID----CATEGORIA-----------PID
1-----Eletronicos----------0
2-----Resina---------------0
3-----Madeira--------------0
4-----Outros---------------0
5-----Carrinho de Mão------2
6-----Outros2--------------4

Como se pode ver seria assim...

 

Listar como categoria os resultados que tem o PID como "0" e listar os resultados que tem o campo PID com o número ID de uma categoria direcionada a ele.

 

No caso ficaria assim:

 

Eletronicos

Resina

- Carrinho de Mão

Madeira

Outros

- Outros2

 

Desde já agradeço a todos que ajudarem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um modo de fazer que veio na minha cabeça é esse

 

<a href="">Eletronicos</a>
<a href="">Resina</a>
<?php
$busca = mysql_query("SELECT * FROM tabela WHERE PID = '2'");
while ($reg = mysql_fetch_array($busca)){
 echo "<a href=''>".$reg["categoria"]."</a>";
}
?>
<a href="">Madeira</a>
<a href="">Outros</a>
<?php
$busca = mysql_query("SELECT * FROM tabela WHERE PID = '6'");
while ($reg = mysql_fetch_array($busca)){
 echo "<a href=''>".$reg["categoria"]."</a>";
}
?>

sei lah , talves isso te ajude :D/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Gremio rs

 

Então, pensie neste modo também, mas o ruim é que terei que criar depois manualmente cada consulta pra cada categoria, o que seria melhor um loop, estou procurando no forum, mas ainda não achei.. acredito q tenha, depois vou disponibilizar o sistema q estou fazendo acredito que ira ajudar mtas pessoas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não costumo usar essa modelagem..

 

<?php
	$mysqli = new mysqli('localhost', 'root', '123', 'ajax');
	
	$sql = "SELECT f.id, f.nome, p.nome AS nome_filho, p.pid 
		FROM categoria f 
		LEFT JOIN categoria p 
		ON f.id = p.pid";
		
	$query = $mysqli->query( $sql );
	
	$li='<ul>'."\n";
	while( $dados = $query->fetch_object() )
	{
		$li .= "\t".'<li>'.$dados->nome;
		if( $dados->nome_filho )
			$li .= "\n\t\t".'<ul>'."\n\t\t\t".'<li>'.$dados->nome_filho.'</li>'."\n\t\t".'</ul>'."\n\t";

		$li .= '</li>'."\n";		
	}
	
	echo $li.'</ul>';

sql

--
-- Estrutura da tabela `categoria`
--

CREATE TABLE IF NOT EXISTS `categoria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `pid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

--
-- Extraindo dados da tabela `categoria`
--

INSERT INTO `categoria` (`id`, `nome`, `pid`) VALUES
(1, 'Eletronicos', 0),
(2, 'Resina', 0),
(3, 'Madeira', 0),
(4, 'Outros', 0),
(5, 'Carrinho de Mão', 2),
(6, 'Outros2', 4),
(7, 'mais um', 4);
o problema da consulta+loop acima, é só que está gerando duplicatas da categoria pai.

 

já volto.

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

$busca = mysql_query("SELECT * FROM tabela");
while ($reg = mysql_fetch_array($busca)){
$id = $reg["id"]; 
echo "<a href=''>".$reg["categoria"]."</a>";
if ($id == '2'){
 $busca = mysql_query("SELECT * FROM tabela WHERE PID = '2'");
 while ($reg = mysql_fetch_array($busca)){
  echo " - <a href=''>".$reg["categoria"]."</a>";
}else{
if ($id == '4'){
 $busca = mysql_query("SELECT * FROM tabela WHERE PID = '4'");
 while ($reg = mysql_fetch_array($busca)){
  echo " - <a href=''>".$reg["categoria"]."</a>";
}
}
}

?>


ve se esse te ajuda manow

Compartilhar este post


Link para o post
Compartilhar em outros sites

nos posts #2 e #5 você precisa saber previamente quais categorias possuem filhos.. isso acho que vai ser muito dificil na prática.

 

dá uma olhada em #4

http://forum.imasters.com.br/index.php?/topic/404498-menu-com-loop/page__view__findpost__p__1586359

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, é para uma única tabela.

Confira o SQL de criação, e o loop.. é com apenas uma unica tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
//william bruno

        $mysqli = new mysqli('cpmy0003.servidorwebfacil.com', 'topnight_space', '2002', 'topnight_test');

        $sql = "SELECT id, categoria, pid FROM tabela_categorias";

        $query = $mysqli->query( $sql );

        $li='<ul>'."\n";
        while( $dados = $query->fetch_object() )
        {
                $li .= "\t".'<li>'.$dados->categoria;
                if( $dados->pid = 0)
                        $li .= "\n\t\t".'<ul>'."\n\t\t\t".'<li>'.$dados->categoria.'</li>'."\n\t\t".'</ul>'."\n\t";

                $li .= '</li>'."\n";
        }

        echo $li.'</ul>';
        
?>

me baseei em cima do do William, ele abriu as opções, só que assim...

 

* Eletronicos

* Resina

* Madeira

* Outros

* Carrinho de Mão

* Outros2

 

todos os resultados, na linha 14 ainda fiz o parametro = 0 para ver se aparece, mas nao deu...

 

alguma luz?

 

E se eu retiro o "= 0"

 

Ele mostra assim...

 

* Eletronicos

* Resina

* Madeira

* Outros

* Carrinho de Mão

o Carrinho de Mão

* Outros2

o Outros2

 

Que teoricamente estaria certo, só que ele duplicando as subcategorias dentro delas mesmas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se eu retiro o "= 0"

 

Ele mostra assim...

 

* Eletronicos

* Resina

* Madeira

* Outros

* Carrinho de Mão

o Carrinho de Mão

* Outros2

o Outros2

 

Que teoricamente estaria certo, só que ele duplicando as subcategorias dentro delas mesmas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Presta atenção na consulta:

$sql = "SELECT f.id, f.nome, p.nome AS nome_filho, p.pid 
                FROM categoria f 
                LEFT JOIN categoria p 
                ON f.id = p.pid";
sem o JOIN nada disso faz sentido...

 

e você nunca conseguirá fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paz, tentei por aquele e não consegui, acabei me complicando, pedi ajuda a um amigo que tanto nakele quanto nesse não tivemos sucesso =/

 

ESTA DANDO ESTE ERRO: Fatal error: Call to a member function fetch_object() on a non-object in /home/topnight/public_html/space/categorias/will.php on line 11

 

alguem poderia ajudar?

 

 

<?php

        $mysqli = new mysqli('cpmy0003.servidorwebfacil.com', 'topnight_space', '2002', 'topnight_test');

       $sql = "SELECT if(pid=0,concat(id,’‘,pid),concat(pid,’‘,id) ) Order, id, CATEGORIA, pid FROM tabela_categorias order by 1";

        $query = $mysqli->query( $sql );

        $li='<ul>'."\n";
        while( $dados = $query->fetch_object() )
        {
                $li .= "\t".'<li>'.$dados->categoria;
                if( $dados->categoria)
                        $li .= "\n\t\t".'<ul>'."\n\t\t\t".'<li>'.$dados->categoria.'</li>'."\n\t\t".'</ul>'."\n\t";

                $li .= '</li>'."\n";
        }

        echo $li.'</ul>';
        
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will, cara eu prestei, represtei atenção nessa consulta, mas pelo q eu vejo eu nao vejo rs

 

o q tenho impressão é que são de 2 tabelas... "categoria f" e "categoria p", não seria isso?

 

$sql = "SELECT f.id, f.nome, p.nome AS nome_filho, p.pid 
                FROM categoria f 
                LEFT JOIN categoria p 
                ON f.id = p.pid";

desculpa encher ai vcs... é q eu perciso mesmo =/

 

vlw ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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