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

04/05/2018

0

PHP

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

Responder

Post mais votado

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");

Fabio Albuquerque

Fabio Albuquerque
Responder

Mais Posts

04/05/2018

Marlon Gera

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.
Responder

05/05/2018

Fernando C

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/
Responder

05/05/2018

Marcio

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');
Responder

05/05/2018

Isoftware

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.
Responder

05/05/2018

Marcio

Isoftware

Ele imprime:
Pizza: Mussarela Adcional: queijo
Ou seja so imprime um dos adcionais.
Responder

06/05/2018

Marcio

Fabiosantosrj muito obrigado pela ajuda.
Deu certíssimo, mais uma vez muito obrigado!!
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar