Sou novo em php e não consigo mostrar resultado na tela

PHP

04/05/2018

Tenho no banco três tabelas: cliente, pizza, adcional quero trazer atraves do id_cliente a pizza e o adcional referente a pizza na mesma linha.
Tipo: Pizza: Mussarela Adcional: Queijo, Presunto
Ao pesquisar achei a função "GROUP_CONCAT" ao executar no phpmyadim o comando mysql esta ok mas não consigo fazer ele aparecer na tela com codigo php corretamente, pois ele imprimi so a pizza mas não mostra o adcional, ja no phpmyadmin o mysql roda certo.

codigo php que uso:

$pesquisa	=	mysql_query ("SELECT pizza, GROUP_CONCAT(adcional SEPARATOR ',') FROM comercio.pizza INNER JOIN comercio.adcional WHERE pizza.id_cliente = adcional.id_cliente = '1' GROUP BY pizza");
if (!$pesquisa){
print "Erro ao pesquisar no banco !!!!!";
}
while ($a = mysql_fetch_assoc($pesquisa)){
$pizza			=		$a['pizza'];
$adcional		=		$a['adcional'];


print "Pizza: $pizza - Adcional: $adcional <br>";
}


E sendo assim ele imprime:
Pizza: Mussarela Adcional:
Ou seja não imprime o adcional.

Porem se eu coloco assim:
$pesquisa	=	mysql_query ("SELECT pizza, adcional GROUP_CONCAT(adcional SEPARATOR ',') FROM comercio.pizza INNER JOIN comercio.adcional WHERE pizza.id_cliente = adcional.id_cliente = '1' GROUP BY pizza");
if (!$pesquisa){
print "Erro ao pesquisar no banco !!!!!";
}
while ($a = mysql_fetch_assoc($pesquisa)){
$pizza			=		$a['pizza'];
$adcional		=		$a['adcional'];


print "Pizza: $pizza - Adcional: $adcional <br>";
}

Ele imprime:
Pizza: Mussarela Adcional: queijo
Ou seja so imprime um dos adcionais.
Resumindo o meu problema e no PHP, como imprimir o resultado do Mysql.

Alguém por favor poderia me socorrer?
Marcio

Marcio

Curtidas 0

Melhor post

Fabio Albuquerque

Fabio Albuquerque

05/05/2018

Altere a 1a linha:
$pesquisa = mysql_query ("SELECT pizza, GROUP_CONCAT(adcional SEPARATOR ',') FROM comercio.pizza INNER JOIN comercio.adcional WHERE pizza.id_cliente = adcional.id_cliente = '1' GROUP BY pizza");

Para:

$pesquisa = mysql_query ("SELECT pizza, GROUP_CONCAT(adcional SEPARATOR ',') as adcional FROM comercio.pizza INNER JOIN comercio.adcional WHERE pizza.id_cliente = adcional.id_cliente = '1' GROUP BY pizza");
GOSTEI 1

Mais Respostas

Marlon Gera

Marlon Gera

04/05/2018

Boa noite.

Primeiro, não é mais utilizado o Mysql como parâmetro de conexão com o banco, sugiro que coloque Mysqli ou PDO. (Só uma observação)

Segundo, como está a estrutura do seu banco de dados, teria como postar para uma melhor analise? Pois pelo que percebi o problema não está no PHP e sim na busca a ser feita.
GOSTEI 0
Fernando C

Fernando C

04/05/2018

alem de atualizar p/ mysqli ou PDO, no group_concat use um alias , ex:
GROUP_CONCAT(adcional SEPARATOR ',') adcional2
outros exemplos:
http://www.marcelodeassis.com.br/blog/concatenando-resultados-com-o-group_concat-no-mysql/
GOSTEI 0
Marcio

Marcio

04/05/2018

Eu uso o PhpMyadmin, ao realizar o codigo sql no PhpMyadmin não erro, o erro e como exibir no php que não sei.
Tambem não sei como postar foto aqui, senão postava a foto do PhpMyadmin imprimindo o resultado SQL que sai corretamente.


--
-- Estrutura da tabela `adcional`
--

CREATE TABLE `adcional` (
  `id` int(99) NOT NULL,
  `id_cliente` varchar(99) NOT NULL,
  `adcional` varchar(99) NOT NULL,
  `valor_adcional` varchar(99) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela `adcional`
--

INSERT INTO `adcional` (`id`, `id_cliente`, `adcional`, `valor_adcional`) VALUES
(1, '1', 'queijo', '3.00'),
(2, '1', 'presunto', '3.00');

-- --------------------------------------------------------

--
-- Estrutura da tabela `clientes`
--

CREATE TABLE `clientes` (
  `id` int(99) NOT NULL,
  `nome` varchar(99) NOT NULL,
  `fone` varchar(99) NOT NULL,
  `end` varchar(99) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela `clientes`
--

INSERT INTO `clientes` (`id`, `nome`, `fone`, `end`) VALUES
(1, 'Marcio', '981397979', 'agua santa 131');

-- --------------------------------------------------------

--
-- Estrutura da tabela `pizza`
--

CREATE TABLE `pizza` (
  `id` int(99) NOT NULL,
  `id_cliente` varchar(99) NOT NULL,
  `pizza` varchar(99) NOT NULL,
  `valor_pizza` varchar(99) NOT NULL,
  `qtd_pizza` varchar(99) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela `pizza`
--

INSERT INTO `pizza` (`id`, `id_cliente`, `pizza`, `valor_pizza`, `qtd_pizza`) VALUES
(1, '1', 'calabreza', '30.00', '1');
GOSTEI 0
Isoftware

Isoftware

04/05/2018

Olá também sou novo em php, mas vou tentar ajudar
tenta isso:

$pesquisa = mysql_query ("SELECT pizza, adcional GROUP_CONCAT(adcional SEPARATOR ',') FROM comercio.pizza INNER JOIN comercio.adcional WHERE pizza.id_cliente = adcional.id_cliente = '1' GROUP BY pizza");
if (!$pesquisa){
print "Erro ao pesquisar no banco !!!!!";
}
while ($a = mysql_fetch_array($pesquisa)){
$pizza = $a[0];
$adcional = $a[1];


print "Pizza: $pizza - Adcional: $adcional <br>";

OBS: Não testei.
GOSTEI 0
Marcio

Marcio

04/05/2018

Isoftware

Ele imprime:
Pizza: Mussarela Adcional: queijo
Ou seja so imprime um dos adcionais.
GOSTEI 0
Marcio

Marcio

04/05/2018

Fabiosantosrj muito obrigado pela ajuda.
Deu certíssimo, mais uma vez muito obrigado!!
GOSTEI 0
POSTAR