Ir para conteúdo

POWERED BY:

Arquivado

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

Beuleal

[Resolvido] Consulta MYSQL

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

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