Ir para conteúdo

POWERED BY:

Arquivado

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

gramosiri2

Variável em uma query

Recommended Posts

Oi estou tentando passar um valor através de uma variável em uma query, porém não está mostrando o resultado que eu quero.

 

Aqui eu pego o ultimo id do pedido

<?php
while($row = $consulta_pedido2->fetch_assoc()){
	echo $row['id_pedido'];
}?>

E aqui eu faço a query e passo variável...

$query ="SELECT 
	itempedido.id_itempedido,
	itempedido.valor,
...
FROM itempedido
	INNER JOIN produto ON 
...
     WHERE
	itempedido.pedido_id = '$row'";

No caso onde está a variável $row, se eu colocar o numero do pedido manualmente, me retorno os itens daquele pedido, agora com a variável não está mostrando, alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gramosiri2

 

Experimente usar o código como abaixo:

 

$query ="SELECT 
	itempedido.id_itempedido,
	itempedido.valor,
...
FROM itempedido
	INNER JOIN produto ON 
...
     WHERE
	itempedido.pedido_id = ".$row['id_pedido'];

itempedido.pedido_id = ".$row['id_pedido'];

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei tambem colocar dentro da aspas simples e retornou outro erro

itempedido.pedido_id = '.$row ['id_pedido'] .'";

 

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\teste\db.php on line 84

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gramosiri2

 

O erro está no tipo da variável, no seu Banco de Dados "QUAL É O TIPO DA SUA COLUNA ITEMPEDIDO.PEDIDO_ID?"

 

É CHAR, VARCHAR, INT, FLOAT, DOUBLE?

 

Para te explicar como funciona, se for do TIPO STRING (CHAR ou VARCHAR) declarado no Banco de Dados, então ela deve estar entre aspas sim, mas a sintaxe fica assim.

 

$query ="SELECT 
	itempedido.id_itempedido,
	itempedido.valor,
...
FROM itempedido
	INNER JOIN produto ON 
...
     WHERE
	itempedido.pedido_id = '".$row['id_pedido']."'";

Eu te explico o porque, você ABRIU o conteudo que você vai colocar dentro da variável $QUERY com ASPAS DUPLAS, então TUDO o que estiver dentro de ASPAS DUPLAS é o conteudo da variável $QUERY, quando você quer CONCATENAR com uma variável PHP exeplo $row['id_pedido'], você deve FECHAR as ASPAS DUPLAS e colocar um " . " (PONTO) para dizer que depois do conteudo que está entre ASPAS DUPLAS você está concatenando com uma VARIÁVEL PHP, por isso eu coloquei no primeiro exemplo ".$row ['id_pedido']

 

Isso se a sua COLUNA ID_PEDIDO no Banco de Dados for uma variável NUMÉRICA.

 

AGORA se a sua variável no banco de dados for uma variável do tipo ALPHANUMÉRICA, então devemos colocar dentro da STRING da $QUERY o conteudo entre ASPAS SIMPLES para que o Banco de Dados possa identificar no EXEC SELECT o que é ALPHANUMÉRICO ou NUMÉRICO.

 

Então neste caso fica como o exemplo que lhe passei acima.

 

Abrimos o que vamos colocar dentro da variável $QUERY com ASPAS DUPLAS e ainda dentro das ASPAS DUPLAS colocamos a nossa ASPAS SIMPLES para dizer que o conteudo que vem depois do = é um ALPHANUMÉRICO, então fechamos as ASPAS DUPLAS, concatenamos com a variável PHP com o PONTO e em seguida precisamos concatenar a STRING com a ASPAS SIMPLES para fechar o conteudo da VARIÁVEL, então a diferença é essa.

 

COLUNA ID_PEDIDO = ALPHANUMÉRICO COMANDO.

pedido_id = ".$row['id_pedido'];

 

COLUNA ID_PEDIDO = NUMÉRICA COMANDO.

pedido_id = '".$row['id_pedido']."'";

 

Bom, é isso, só um detalhe que observei, você tem

 

pedido_id e id_pedido na sua tabela?

Esta correto mesmo?

 

Reveja a sua BASE DE DADOS e tente executar o comando diretamente dentro do Banco de Dados e veja qual erro lhe retorna.

 

Se você estiver com dificuldades, poste aqui a estrutura da sua tabela, tipo esta que segue em anexo.

 

image.png.c22183eb868b413669194f0b2beeec12.png

 

Assim podemos montar com precisão o seu comando.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Felipe Guedes Coutinho cara, deu certo do jeito que você mencionou.

Agora sobre sua pergunta, a coluna pedido_id é da tabela itempedido e a coluna id_pedido é da tabela pedido. Isso é para mostrar o último pedido e os itens de pedido selecionados pelo usuário.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gramosiri2

 

Sucesso então.

 

Tranquilo, perguntei porque achei estranho, talvez você deva estudar um pouco sobre "modelo de dados", pois nomenclatura para Banco de Dados é de grande importância, como você que está construindo fica um pouco tranquilo enquanto está desenvolvendo, mas se você deixar de mexer por um periodo, você pode ter que rever o conceito para relembrar as regras, os campos das colunas devem ser intuidivos, tanto para você quanto para qualquer um que não seja você a dar manutenção no sistema.

 

Só uma dica, mas que bom que funcionou.

 

Não esquece de dar um +REP, valeu.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Felipe Guedes Coutinho deu certo, porém se eu tentar inserir algum item ele não insere no banco...

Estou achando que é no while, pois quando tiro ele, insere os elementos no banco normalmente

 

while($row = $consulta_pedido2->fetch_assoc()){
	echo $row['id_pedido']."<br>";

$query ="SELECT 
	itempedido.id_itempedido,
	itempedido.valor,
	itempedido.quantidade,
	itempedido.pedido_id,
	cliente.nome,
	produto.marca,
	produto.unidade,
	produto.preco,
	pedido.observacoes,
    pedido.data_pedido,
    produto.nome
FROM itempedido
	INNER JOIN produto ON 
	 itempedido.produto_id = produto.id_produto
	 INNER JOIN pedido ON 
	 itempedido.pedido_id = pedido.id_pedido
     INNER JOIN cliente ON
     cliente.id_cliente = pedido.cliente_id
     WHERE
	itempedido.pedido_id = '".$row['id_pedido']."'";
}
$consulta_item_pedido = mysqli_query($conexao, $query);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gramosiri2

 

Poste o código completo, pois acho que existe um erro na sua lógica.

 

Um comando não interfere no outro a não ser que você utilize a mesma variável de armazenamento da QUERY para executar, então, para que possa ser feito uma melhor análise, poste o código completo para que seja possível entender o que a sua página faz e achar o erro.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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