Unificar Resultado Consulta Php Mysql [RESOLVIDO]

1. Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 07/03/2017 - 02:59h

Bom dia...

Tenho um banco de dados com uma tabela com as seguintes colunas. Segue:

order_id code value


Cada vez que fecho um pedido ele salva da seguinte forma. Segue:

order_id code value
3787 Subtotal 47,50
3787 Frete 10,02
3787 Total 57,52


Até ai tudo bem. mas na hora de mostrar a consulta eu gostaria que mostrasse assim

Pedido 3837 Valor 47,50 Frete 10,02 Total 57,52

Mais esta sendo mostrado assim:

Pedido 3837 Valor 47,50 Frete Total
Pedido 3837 Valor 10,02 Frete Total
Pedido 3837 Valor 57,52 Frete Total



O que sera que esta errado em meu Codigo nao consegui fazer corretamente. Segue Codigo:

<?php include 'conexao.php' ?>

<?php
$id = $_POST['buscar'];
$query = mysql_query ("SELECT * FROM oc_order
INNER JOIN oc_order_total
ON oc_order.order_id = oc_order_total.order_id
WHERE oc_order.order_id = '$id'");

while($linha = mysql_fetch_array($query)){
$order_id = $linha['order_id'];
$value = $linha['value'];
$value = substr($value,0,-2);

?>

Pedido <b><?php echo $order_id; ?></b>
Valor <b><?php echo number_format($value, 2, ',', '.'); ?></b>
Frete <b></b>
Total <b></b>


<?php }?>


Alguem sabe como se faz?


  


2. MELHOR RESPOSTA

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 13/03/2017 - 06:54h

Opa!
Eu corrigi o código do arquivo result.php tentando alterar o mínimo possível para você não perder a referência com o código anterior; os outros arquivos não foram alterados.
As principais alterações foram:
- Excluí a cláusula 'LIMIT 1' da query, em função da estrutura da tabela, para trazer todos os resultados com a mesma id;
- Alterei os nomes dos campos em função do resultado da consulta ao banco;
- Salvei os valores em variáveis;
- Exibi o resultado após o final do laço 'while';

Está funcionando MAAASSSSS, na MINHA OPINIÃO, há muita coisa que pode ser melhorada, atualizada, modificada, enfim... a começar pela modelagem do banco e pela forma de conexão com o banco, não são bem o que podemos chamar de "melhores práticas", mas como opiniões não resolvem problemas, segue SOLUÇÃO:

<?php include 'conexao.php' ?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>Cadastro de Pedidos</title>
</head>
<body id="conteudo">
<h1 align="center" class="botao">Cadastro de Pedidos</h1>

<form name="searchform" method="post" action="result.php">

Pesquisar Pedido: <input type="text" name="buscar"/>
<input type="submit" value="buscar">
</form>

<?php
$id = $_POST['buscar'];
$select = mysql_query("SELECT * FROM oc_order
INNER JOIN oc_order_total
ON oc_order.order_id = oc_order_total.order_id
WHERE oc_order.order_id = '$id'");

while ($res_select = mysql_fetch_array($select)) {

//oc_order
# Armazena o número do Pedido
$order_id = $res_select['order_id'];
# Armazena o primeiro
$firstname = $res_select['firstname'];
# Armazena o último nome
$lastname = $res_select['lastname'];


//oc_order_total
# Armazena o valor da linha e já formata para exibir
$value = number_format(substr($res_select['value'], 0, -2), 2, ',', '.');

# Armazena o 'code' da linha
$code = $res_select['code'];

# Armazena o valor de acordo com o 'code' da linha
if ($code == 'sub_total') {
$sub_total = $value;
} else if ($code == 'shipping') {
$shipping = $value;
} else { # ENTÃO $code == 'total'
$total = $value;
}
} # FIM while ($linha = mysql_fetch_array($query))
?>

<form id="forml" name="forml" method="post" action="cadastra.php" class="botao">
N° Pedido: <input type="text" name="numero" value="<?php echo $order_id; ?>" size="2">&nbsp;&nbsp;
Cliente: <input type="text" name="nome" value="<?php echo $firstname; ?>&nbsp;<?php echo $lastname; ?>" size="18">&nbsp;&nbsp;
Valor: <input type="text" name="valor" value="<?php echo $sub_total; ?>" size="5">&nbsp;&nbsp;
Frete: <input type="text" name="frete" value="<?php echo $shipping; ?>" size="5">&nbsp;&nbsp;
Total: <input type="text" name="total" value="<?php echo $total; ?>" size="5">&nbsp;&nbsp;
<input type="submit" name="cadastra" id="cadastra" value="Salvar" />
</form>
</body>
</html>



"Apresente soluções! Opiniões não resolvem problemas. (Viniciusalopes)" 


3. Re: Unificar Resultado Consulta Php Mysql

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 07/03/2017 - 12:28h

Oi, o problema é apenas a lógica de programação.

Veja, você não mandou imprimir:


Frete <b></b> <!--Não tem nenhum valor aqui -->
Total <b></b>


Perceba que para cada interação do while você vai ter uma linha da tabela... Sendo assim, é possível pensar que na primeira interação o $linha['value'] é o subtotal, na segunda é o frete e na terceira é o total.


Considere não usar as funções mysql_*, elas estão marcadas como depreciadas já faz bastante tempo e não existem em versões recentes do PHP.


Paulo Dias.
Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


4. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 09/03/2017 - 03:35h

Bom dia..

o problema é que a coluna value esta salvando os 3 valores nele, o subtotal o frete e o total
e eu so sei chamar assim

$value = $linha['value'];


quando eu chamo o $value ele ja traz os tres valores uma em cada linha coforme mostrei acima

como faço para cada opças das 3 aparecer cada um no seu quadrado...

Obrigado


5. SOLUÇÃO

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 10/03/2017 - 15:36h

Opa!
É o seguinte: Armazene os valores em variáveis separadas durante o laço, de acordo com o valor da coluna ['code']. Feito isso, feche o laço 'while' e só depois exiba os valores que armazenou durante o laço.
Mais ou menos assim:
<?php include 'conexao.php' ?>

<?php
$id = $_POST['buscar'];
$query = mysql_query("SELECT * FROM oc_order "
. "INNER JOIN oc_order_total "
. "ON oc_order.order_id = oc_order_total.order_id "
. "WHERE oc_order.order_id = '$id'");

while ($linha = mysql_fetch_array($query)) {

# Armazena o número do Pedido
$pedido = $linha['order_id'];

# Armazena o valor da linha e já formata para exibir
$value = number_format(substr($linha['value'], 0, -2), 2, ',', '.');

# Armazena o 'code' da linha
$code = $linha['code'];

# Armazena o valor de acordo com o 'code' da linha
if ($code == 'Subtotal') {
$subtotal = $value;
} else if ($code == 'Frete') {
$frete = $value;
} else { # ENTÃO $code == 'Total'
$total = $value;
}
} # FIM while ($linha = mysql_fetch_array($query))

# Exibe os valores armazenados durante o laço da consulta
echo "Pedido: <b>{$pedido}</b> Valor: <b>{$subtotal}</b> Frete: <b>{$frete}</b> Total: <b>{$total}</b>";
?>



6. Re: Unificar Resultado Consulta Php Mysql

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 11/03/2017 - 02:39h

Opa boa noite viniciusalopes




com esse codigo que voce postou recebo o seguinte resultado

Pedido: 1515 Valor: Frete: Total: 256,36


preciso que seje assim

Pedido 1515 Valor 246,34 Frete 10,02 Total 256,36


to estudando o codigo pra ver se consigo.

se conseguir poste aqui

obrigado


7. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 11/03/2017 - 14:40h

Opa!
Parece que as variáveis $subtotal e $frete, estão ficando vazias. O if() que armazena o valor de acordo com o 'code' não está encontrando os valores 'Subtotal' e 'Frete' na coluna ['code'].

Execute esse código e poste a saída dele, por favor.
<?php 
include 'conexao.php'

$id = $_POST['buscar'];
$query = mysql_query("SELECT * FROM oc_order "
. "INNER JOIN oc_order_total "
. "ON oc_order.order_id = oc_order_total.order_id "
. "WHERE oc_order.order_id = '$id'");

$linha = mysql_fetch_array($query);
echo var_dump($linha);
?>



8. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 11/03/2017 - 16:33h

Boa tarde....


colocando o codigo que voce postou

<?php
include 'conexao.php'

$id = $_POST['buscar'];
$query = mysql_query("SELECT * FROM oc_order "
. "INNER JOIN oc_order_total "
. "ON oc_order.order_id = oc_order_total.order_id "
. "WHERE oc_order.order_id = '$id'");

$linha = mysql_fetch_array($query);
echo var_dump($linha);
?>


aparece o seguinte erro:

Parse error: syntax error, unexpected '$id' (T_VARIABLE) in teste.php on line 4


nem sei mais o que fazer rsrsrs


9. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 11/03/2017 - 16:45h

asparion escreveu:

Boa tarde....


colocando o codigo que voce postou
aparece o seguinte erro:

Parse error: syntax error, unexpected '$id' (T_VARIABLE) in teste.php on line 4

nem sei mais o que fazer rsrsrs


Foi mal, parceiro... faltou um ponto-e-virgula na linha da include.
Altera aí pra ficar assim e posta o resultado
<?php 
include 'conexao.php'; #<<-- Bendito ponto-e-virgula

$id = $_POST['buscar'];
$query = mysql_query("SELECT * FROM oc_order "
. "INNER JOIN oc_order_total "
. "ON oc_order.order_id = oc_order_total.order_id "
. "WHERE oc_order.order_id = '$id'");

$linha = mysql_fetch_array($query);
echo var_dump($linha);
?>




"Apresente soluções! Opiniões não resolvem problemas. (Viniciusalopes)" 



10. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 12/03/2017 - 03:44h

apareceu erro que encheu a tela...

obrigado pela ajuda desisto

:(


11. Se quiser, eu faço...

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 12/03/2017 - 15:49h

Opa!
Algumas pessoas são contra passar o código pronto, já eu, sou a favor.
Entendo que ler o código funcionando pode auxiliar no aprendizado.
Se quiser, eu faço e te passo o código prontinho.
Você só precisa exportar a tabela que tem esses dados e postar aqui.
Eu monto a solução e te passo (crtl+c => ctrl+v).
;)

"Apresente soluções! Opiniões não resolvem problemas. (Viniciusalopes)" 



12. Re: Unificar Resultado Consulta Php Mysql [RESOLVIDO]

Roberto Costa
asparion

(usa Ubuntu)

Enviado em 13/03/2017 - 02:13h

Bom dia...

Segue:

http://asparion.com.br/relatorio_vendas.rar


Editei o codigo o mais simples possivel, esta assim,

Obrigado....





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts