Beuleal 4 Denunciar post Postado Julho 27, 2011 Galera, eu tenho um sisteminha que estou querendo brincar com ele, porem esta me dando alguma coisa errada. Eu tenho no bd, duas tabelas: Tabela 1 = id_fabricante, fabricante Tabela 2 = id_produto, produto, id_fabricante Eu gostaria de listar todos os produtos pelo id_fabricante, mas esta me mostrando assim 1 Peça 1 Faca 1 Garfo e gostaria que mostrasse assim: 1 Peça Faca Garfo 2 Toalha Fio Pedra ... Só me digam qual a lógica q vocês usariam... Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 27, 2011 Você quer relacionar essas tabelas ? se SIM, use algum JOIN, também mostre o sql que você esta usando. Compartilhar este post Link para o post Compartilhar em outros sites
elitediego 0 Denunciar post Postado Julho 27, 2011 eu colocaria a clausula distinc no meu sql ou group by dependendo do caso Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Julho 27, 2011 eu faria assim, dependendo da quantidade não utilizaria o group_concat SELECT --selecione `f`.`fabricante`,--nome do fabricante GROUP_CONCAT( `p`.`produto` ) AS prod --e uni os produtos FROM --da `tabela1` f --tabela1 que será chamada simplesmente de f LEFT JOIN --com relacionamento não obrigatório com a `tabela2` p --tabela 2 que será chamada simplesmente de p ON --quando `f`.`id_fabricante` = `p`.`id_fabricante` --os ids forem iguais GROUP BY --e agrupar por `p`.`id_fabricante` --id do fabricante Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 27, 2011 sim eu tenho no meu bd com os dados Tabela 1 = id_fabricante, fabricante | 1 | Dell | 2 | HP Tabela 2 = id_produto, produto, id_fabricante | 1 | Peça | 1 | 2 | Faca | 1 | 3 | Garfo | 1 | 4 | Toalha | 2 | 5 | Fio | 2 | 6 | Pedra | 2 meu código: <div class="tabber"> <? $tabela1 = "fabricante"; $tabela2 = "produtos"; $sql1 = mysql_query("SELECT * FROM $tabela1"); $sql2 = mysql_query("SELECT * FROM $tabela2"); while($pega = mysql_fetch_array($sql1)){ $fabricante = $pega["fabricante"]; $id_fabricante1 = $pega["id_fabricante"]; while($pega2 = mysql_fetch_array($sql2)){ $produto = $pega2["produto"]; $id_fabricante2 = $pega2["id_produto"]; ?> <div class="tabbertab"> <h2><? if ( $id_fabricante1 == $id_fabricante2 ) { echo "$id_fabricante1";} else { echo "id_fabricante1 é diferente";} ?></h2> <p><? if ( $id_fabricante1 == $id_fabricante2 ) { echo "$produto";} else { echo "id_fabricante1 (produto) é diferenteeeeeeeeeeeeeeee";} ?> </p> </div> <? } //fecha while 1 } //fecha while 2 ?> </div> Não conheço esse JOIN nem esse Grup by... Se der pra vcs me ajudarem... Estou recebendo assim: 1 Peça 1 Faca 1 Garfo e gostaria que mostrasse assim: 1 Peça Faca Garfo 2 Toalha Fio Pedra @Victor: Você manda esse comandos no mysql? @Victor: Você manda esse comandos no mysql ou no mysql_query? Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Julho 27, 2011 executa com mysql_query e retira os comentários ou diretamente no banco Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 27, 2011 Olá, pelo que entendi, é isso mesmo mas esta me dando um erro: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in pagina.php on line 368 A linha 368 é a da while. No código ficou assim: $sql = mysql_query("SELECT 'f'.'fabricante', GROUP_CONCAT( 'p'.'produto' ) AS prod FROM 'tabela1' f LEFT JOIN 'tabela2' p ON 'f'.'id_fabricante' = 'p'.'id_fabricante' GROUP BY 'p'.'id_fabricante'"); while($pega = mysql_fetch_array($sql)){ $categoria = $pega["categoria"]; $id_categoria1 = $pega["id_categoria"]; } O que pode ser?? Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Julho 27, 2011 na query use crase `` nos campos e não aspas simples '' tenta assim <?php $query = "SELECT `f`.`fabricante`, GROUP_CONCAT( `p`.`produto` ) AS prod FROM `tabela1` f LEFT JOIN `tabela2` p ON `f`.`id_fabricante` = `p`.`id_fabricante` GROUP BY `p`.`id_fabricante`"; $sql = mysql_query($query) or die(mysql_error());//retorna erro na query while($pega = mysql_fetch_array($sql)){ $categoria = $pega['fabricante']; $id_categoria1 = $pega['prod']; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 28, 2011 Amigo eu fiz isso e deu certo, porem, esta mostrando assim: HP Peça,Faca,Garfo e quero assim HP Peça Faca Garfo OBS: Eu já coloquei <br> e \n e nd ... Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Julho 28, 2011 assim não está retornando tudo o que precisa? while($pega = mysql_fetch_assoc($sql)){ echo "Fabricante: {$pega['fabricante']} Produtos: {$pega['prod']}"; } edit: já era previsto agora substitua as vírgulas pelas tags <br> veja aqui que você vai achar a solução http://php.net/manual/pt_BR/book.strings.php na dúvida é só falar Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 28, 2011 Sim, mas o modo como esta mostrando que esta dificultando... Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 28, 2011 Amigo, consegui sim substituir com o srt_replace(), porem quando o artigo é uma foto, exemplo: HP Peça.jpg Faca.jgg Garfo.jpg Como eu posso fazer ele detectar que na "frase" gerada pelo mysql(peça.jpg,faca.jpg,garfo.jpg) Existe imagem? Eu nao posso colocar <img src=""> pois ele me daria esse resultado <img src="peça.jpg,faca.jpg,garfo.jpg"> ou esse caso eu ja tenha mudado as virgulas para <br>: <img src="peça.jpg<br>faca.jpg<br>garfo.jpg"> Tem como converter em array? Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Julho 28, 2011 tem como transformar a string em array http://www.php.net/manual/pt_BR/function.explode.php Compartilhar este post Link para o post Compartilhar em outros sites
Beuleal 4 Denunciar post Postado Julho 28, 2011 Cara muito obrigado pela força ai! Putz você me ajudou muito! e consegui fazer o que eu queria! Como diria Alborghetti: "Um beijo na tua alma" :huh: Valeu! Compartilhar este post Link para o post Compartilhar em outros sites