Menegat 0 Denunciar post Postado Janeiro 26, 2010 Ola pessoal, pesquisei bastante no forum sobre meu problemas e so achei uam solução para a consulta ao banco, e não para o que eu preciso, que seria a hora que eu mostro os dados na tela. Bom ai vai: eu tenho duas tabelas uma: -> categorias --->campos -----> Id (id da categoria) -----> categoria_nome (nome da categoria) e -> subcat --->campos -----> IdS (id da sub categoria) -----> IdC (id da categoria) -----> subcat_nome (nome da subcat) bom, minha consulta é a seguinte: $sql = mysql_query("select * from categorias order by categorias_nome asc"); $sql5 = mysql_query("select * from subcat "); e a parte do codigo reposnsavel a mostrar isso ao usuario é essa: <table width="100%" border="0" cellpadding="0" cellspacing="0"> <?php if(mysql_num_rows($sql) > 0){ while($row1 = mysql_fetch_array($sql)){ ?> <tr> <td width="1%"><img src="ff.gif" width="4" height="7"></td> <td colspan="3"><a href="produtos.php?categorias_id=<?php echo $row1["Id"]; ?>"class="fonte_data"><strong><?php echo $row1["categorias_nome"]; ?></strong></a></td> </tr> <?php if (mysql_num_rows($sql5) > 0){ while($row5 = mysql_fetch_array($sql5) and $row5["Id"] = $row5["IdC"]){ ?> <tr> <td width="3%" align="right"><img src="ff.gif" width="4" height="7"></td> <td width="95%" ><a href="produtos.php?subcat_id=<?php echo $row5["IdS"]; ?>"class="fonte_data"><strong><?php echo $row5["subcat_nome"]; ?></strong></a></td> </tr> <?php } //while } //if } } else { ?> <tr> <td colspan="4" class="fonte_data"><b><?php echo "Nenhuma Categoria Cadastrada."; ?></b></td> </tr> <?php } //else ?> </table> Mas ele mostra primeiro todas as subcategorias e dopois todas as categorias, ao invez de uma categoria e suas respectivas subcategorias e assim por diante..... alguem sabe onde esta o erro e como posso consertar isso, pois tenho muita experiencia com php/sql; Desde ja agradeço as dicas e apoios.. Att. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 26, 2010 Faça uma coisa desse tipo: $sql = "SELECT categorias.Id, categoria_nome, IdC, subcat_nome FROM categorias INNER JOIN subcat ON categorias.Id = subcat.IdC "; $query = mysql_query( $sql ); $li = '<ul>'; while $dados = mysql_fetch_assoc( $query ) ) { if( $dados['categoria_nome']!=$categoria_nome ) { if( !empty( $categoria_nome ) ) $li .= '</ul></li>'; $categoria_nome = $dados['categoria_nome']; $li .= '<li><h6>'.$dados['categoria_nome'].'</h6><ul>'."\n"; } $li .= '<li>'.$dados['subcat_nome'].'</li>'."\n"; } $li .= '</ul>'."\n".'</li></ul>'; echo $li; Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 Opa, vlw ai bruno ele funciono direitinho, aparecendo categorias e subcategorias, mas ele não aparece as categorias que não tenham uma subcategoria. Não sei se fui claro, mas assim do jeito que voce me passou funcionou mas mostra somente as categorias que tenham subcategorias e as respectivas subcategorias. Para mudar isso eu fação um outro teste logo a baixo ou so mudo os teste na sql? E so corrigindo o Primeito post, eu quis dizer que não tenho experiencia com php, ao contrario do que escrevi, a falta de uma palavra muda tudo. xD agradeço.. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 26, 2010 Para exibir as categorias que não tem categorias, troque o INNER JOIN por LEFT OUTER JOIN. Outra forma de fazer isto é utilizar somente uma tabela, relacionando recursivamente à mesma. link E tem também uma classe do João Batista que faz isto. http://forum.imasters.com.br/index.php?/topic/378975-menu-em-php-com-mysql/page__view__findpost__p__1469159 Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 Opa, Funcionou tudo certinho...... agradeço a ajuda de voces, algo tão simples eu compiqui na hora de fazer.... mas a falta de pratica e conhecimento imfluenciam, mas agradeço novmente.. So gostaria de tirar mais uam ultima duvida... se eu usar os isso em uma table eu posso? sem alterar o funcionamento a operação?? Vlw Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 26, 2010 Sim, pode.. mas falando em HTML.. faz sentido usar table? é semântico ? me pareceu uma listagem de itens, por isso fiz com a tag HTML de lista.. <ul>, <li>.. talvez até um <ol> ficasse mais semântico ai no caso. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 POde ate ser, mas como vou usar links para as categorias e subcategorias não sei como ira aparecer depois, pois ainda n tive tempo de testas.... e no lugar das imagens do <li> eu usaria uma outra umagem de uma seta... vlw a ajuda Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 26, 2010 Ai é CSS puro cara.. faz um: #cat { list-style: none; }//retira os marcadores default da lista .. $query = mysql_query( $sql ); $li = '<ul id="cat">'; e aplica um background da imagem que você quer.. ul#cat li { background: url('seta.jpg') no-repeat left center; padding-left: 20px; /* aqui você coloca o valor da largura da imagem */ } alguma dúvida ? qual ? Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 OK, so mais uma coisa, do jeito que esta ele esta colocando um marcador pra cada categoriga, mesmo ela não tento uma subcategoria, teria como tirar isso? para aparecer os marcadores so qndo à presença de uma subcategoria?? vlw Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 Ai é CSS puro cara.. faz um: #cat { list-style: none; }//retira os marcadores default da lista .. $query = mysql_query( $sql ); $li = '<ul id="cat">'; e aplica um background da imagem que você quer.. ul#cat li { background: url('seta.jpg') no-repeat left center; padding-left: 20px; /* aqui você coloca o valor da largura da imagem */ } alguma dúvida ? qual ? Eu queria ver como uso a pocao <a> no codigo para linkar com os produtos respctivoas as subcategorias estou fazendo assim $li .= '<li><a href="produtos.php?subcat_id='.$dados['IdS']. '" >'.$dados['subcat_nome'].'</a></li>'."\n"; mas n esta voltando o valor do IdS.......estou fazendo certo?? vlw Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 26, 2010 Como assim? oque você tá mandando é um: $_GET['subcat_id'] Qnto à tua dúvida de CSS eu não entendi bem.. as categorias tem marcadores? ou só as subs? Se você quer retirar os marcadores das categorias sem subs, você terá que fazer um count nos registros de subs de cada categoria, e se for igual à zero, você coloca uma classe CSS especial, para retirar o marcador. Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 26, 2010 ok, a duvida em questão das css eu consegui resolver... mas agora a duvida eh a seguinte...... o nome da subcategoria sera um link, assim como os das categorias, pra quando for cliacadas apbrir uma pagina com os produtos referentes. /*eu tententi implementar o link dessa forma*/ $li .= '<li><a href="produtos.php?subcat_id='.$dados['IdS'].'" >'.$dados['subcat_nome'].'</a></li>'."\n"; assim, ele passa o por paremetro o id da subcategoria pra quando chegar na pagina produtos ele saber quais produtos mostrar em referencia ao Id..... da forma que eu coloquei acima, ele envia os parametros para a pagina produtos, mas o parametro subcat_id vai sem valor para poder consultar..... n sei se me entedenram?? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 26, 2010 você lembrou de selecionar esse campo lá no SELECT?? $sql = "SELECT categorias.Id, categoria_nome, IdC, subcat_nome, IdS FROM categorias INNER JOIN subcat ON categorias.Id = subcat.IdC "; ? Compartilhar este post Link para o post Compartilhar em outros sites
Menegat 0 Denunciar post Postado Janeiro 27, 2010 Pois é, eu esta selecionado o campo errado na query.... agora esta funcionado tudo,.... vlw a ajuda de todos.... e mais uma vez agradeço pelo imasters existir... BrigadooOO Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Janeiro 27, 2010 Muito bom o script...testei aqui, só não entendi mto bem alguém poderia me explicar como faço para usá-lo com tabelas? não estou conseguindo... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 27, 2010 Qual script? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Janeiro 27, 2010 esse código Faça uma coisa desse tipo: $sql = "SELECT categorias.Id, categoria_nome, IdC, subcat_nome FROM categorias INNER JOIN subcat ON categorias.Id = subcat.IdC "; $query = mysql_query( $sql ); $li = '<ul>'; while $dados = mysql_fetch_assoc( $query ) ) { if( $dados['categoria_nome']!=$categoria_nome ) { if( !empty( $categoria_nome ) ) $li .= '</ul></li>'; $categoria_nome = $dados['categoria_nome']; $li .= '<li><h6>'.$dados['categoria_nome'].'</h6><ul>'."\n"; } $li .= '<li>'.$dados['subcat_nome'].'</li>'."\n"; } $li .= '</ul>'."\n".'</li></ul>'; echo $li; Compartilhar este post Link para o post Compartilhar em outros sites