Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso jogar uma variável de Volume dentro de um Option ou seja, a pessoa seleciona uma categoria e conforme esta cat. aparece os itens da lista a frente dos itens preciso que mostre o volume, não estou conseguindo fazer com que este volume apareca na frente do titulo.
Variável em php ex: <?php echo $objProduto->volume ?>
<div class="col-sm-3">
<select name="id_produto_temp" class="form-control" id="id_produto_temp" onChange="changeUser(this.value);" required>
<option id="opcoes" value="">Produto </option>
</select>
</div>
< JAVA SCRIPT >
function processXML(obj)
{
//pega a tag cliente
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cliente
if(dataArray.length > 0)
{var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
idOpcao.innerHTML = "Selecione um produto abaixo";
//AQUI PRECISO JOGAR A VARIAVEL VOLUME NA FRENTE DE DESCRIÇÃO, OBS: JA TENTEI COLOCAR novo.text = descricao + volume só que aparece um 3 na frente de todos os textos
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao;
//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}
}
else
{idOpcao.innerHTML = "Nenhuma familia relacionada";
}
}
POR FAVOR ME AJUDEM, AGRADEÇO DESDE JÁ, OBRIGADO.
PERGUNTA A BAIXO !
Bom dia Gabriel, nada resolvido, onde devo colocar ? Estou fazendo assim:
function processXML(obj)
{
//pega a tag cliente
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cliente
if(dataArray.length > 0)
{
//percorre o arquivo XML paara extrair os dados
for(var i = 0 ; i < dataArray.length ; i++)var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = <?= $objProduto->volume; ?>;
idOpcao.innerHTML = "Selecione um produto abaixo";
//cria um novo option dinamicamente
var novo = document.createElement("option");
var volume = <?= $objProduto->volume; ?>;//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}
}
else
{idOpcao.innerHTML = "Nenhuma familia relacionada";
}
}Aonde você deve colocar é você quem deve dizer. Qual é o retorno obtido no seu código? A variável não está recebendo o valor adequado?
Gabriel, deveria ficar na frente da descrição, pois pegara a descrição do produto e o volume a frente da descrição exemplo:
Como deve ficar:
TANQUE - 2.000 L
Como está ficando:
TANQUE - L
O valor da variável não está recendo valor nenhum.
Então a sua variável não possui valor algum. Verifique se está vindo corretamente.
Na parte de cima (HTML/PHP ) Estou usando da mesma forma basicamente e está vindo normal, como mostra o exemplo abaixo.
<tbody>
<?php
foreach($resp_item as $reg_item)
{
$objProduto = new Produto();
$objProduto->id_produto = $reg_item[id_produto];
$objProduto->consultar();
$somatoria = bcadd($somatoria, $reg_item[va_total], 2);
$quantidade = number_format($reg_item[nu_quantidade]);
$quantidade = str_replace(",", ".", $quantidade);
?>
<tr>
<td><?php echo Categoria::pega_categoria($objProduto->id_categoria ); ?></td>
<td><?php echo $objProduto->titulo;?>
<?php
if($reg_des_prod[tp_categoria] != 1)
{
if(!empty($objProduto->volume))
{
echo " - ".$objProduto->volume." L";
}
}
?></td>
<td><?php echo $objProduto->codigo; ?></td>
<td><?php echo $quantidade; ?></td>
<td><?php if($reg_item[va_preco] != "0"){ formata_valor(str_replace(".", "", $reg_item[va_preco])); echo "R$ ".$valor; } ?></td>
<td><?php if($reg_item[va_total] != "0"){ formata_valor(str_replace(".", "", $reg_item[va_total])); echo "R$ ".$valor; } ?></td>
<td><a href="#" onClick="removerPedidoProduto('<?php echo $reg_item[id_pedido_produto]; ?>', '<?php echo $reg_item[id_pedido]; ?>', '<?php echo $objPedido->id_cliente; ?>')" class="btn btn-danger btn-xs" aria-hidden="true"><i class="glyphicon glyphicon-remove"></i></a></td>
</tr>
<?php
}
?>
</tbody>Qual é a sua saída HTML no trecho da impressão da variável?
Pagina de cadastro do produto, e o form para cadastrar o valor do volume.
<div class="form-group">
<label class="col-sm-2 control-label" for="volume">Volume</label>
<div class="col-sm-2">
<input name="volume" type="text" id="volume" class="form-control" value="<?php echo $objProduto->volume; ?>" placeholder="Volume"/>
</div>Eu quero saber a saída HTML (aquilo que aparece no navegador apertando CTRL + U) na parte do javascript aonde você quer imprimir a variável.
Aproveite e olhe se não há algum erro de javascript (CTRL + Shift + J ou no FireBug).
Então Gabriel, se eu coloco com ' apóstrofos ' ele não da error nenhum e não imprimi nenhum valor de volume.
for(var i = 0 ; i < dataArray.length ; i++)
{
var item = dataArray[i];
//contéudo dos campos no arquivo XML
var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '';
idOpcao.innerHTML = "Selecione um produto abaixo";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao + volume;
//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}var volume = '';
Esta assim, sendo que:
var volume = '<?= $objProduto->volume ?>';
Se eu deixo a variável em PHP como um valor sem ' apóstrofos ' ele me da os seguintes erros:
pedido-cadastrar.php?id_pedido=22:321 Uncaught SyntaxError: Unexpected token ;
pedido-cadastrar.php?id_pedido=22:117 Uncaught ReferenceError: Dados is not definedonchange @ pedido-cadastrar.php?id_pedido=22:117
Preciso ver o output do HTML, pois até agora, só tenho suposições.
Amigo desculpe, mas não entendo o que seria o "Output" ?
Eu entendi que você queira visualizar o input do HTML certo ? :
<form name="frmPedidoProduto" class="form-horizontal" action="pedido-cadastrar.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<div class="col-sm-2">
<select name="id_categoria" class="form-control" id="id_categoria" onChange="Dados(this.value);">
<option>Categoria</option>
<?php
$objCategoria = new Categoria();
$resp_cat = $objCategoria->exibir_total(NULL);
foreach($resp_cat as $reg_cat)
{
echo "<option value=\"".$reg_cat[id_categoria]."\"";
if($objPedido->id_categoria == $reg_cat[id_categoria])
{
echo " selected=\"selected\"";
}
echo ">".mb_strtoupper($reg_cat[de_categoria])."</option>\n";
}
?>
</select>
</div>
<div class="col-sm-3">
<select name="id_produto_temp" class="form-control" id="id_produto_temp" onChange="changeUser(this.value);" required>
<option id="opcoes" value="">Produto </option>
</select>
</div>Output do HTML é o código fonte que é enviado para o browser. Você vai lá no browser e apert CTRL + U (na maioria é assim). Eu só quero do trecho do código javascript que não está funcionado.
Vou te passar o JS completo do Ctrl + U :
<script type="text/javascript">
function confere(valor)
{
if(valor == 'OUTRA')
{
$("#transporte_outro").css("display", "block");
$("#transporte_outro_txt").css("display", "block");
}
else
{
$("#transporte_outro").css("display", "none");
$("#transporte_outro_txt").css("display", "none");
}
}
function conferePgto(valor)
{
if(valor == 'OUTRO')
{
$("#pagamento_outro").css("display", "block");
$("#pagamento_txt").css("display", "block");
}
else
{
$("#pagamento_outro").css("display", "none");
$("#pagamento_txt").css("display", "none");
}
}
function removerPedidoProduto(id_pedido_produto, id_pedido, id_cliente)
{
if(confirm("Deseja realmente remover este produto?"))
{
location.href='pedido-remover-produto.php?id_pedido_produto='+id_pedido_produto+'&id_pedido='+id_pedido+'&id_cliente='+id_cliente;
}
}
function Dados(valor)
{
//verifica se o browser tem suporte a ajax
try
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try
{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex)
{
try
{
ajax = new XMLHttpRequest();
}
catch(exc)
{
alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
}
//se tiver suporte ajax
if(ajax)
{
//deixa apenas o elemento 1 no option, os outros são excluídos
document.frmPedidoProduto.id_produto_temp.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "inc/produtos.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function()
{
//enquanto estiver processando...emite a msg de carregando
if(ajax.readyState == 1)
{
idOpcao.innerHTML = "Carregando...!";
}
//após ser processado - chama função processXML que vai varrer os dados
if(ajax.readyState == 4)
{
if(ajax.responseXML)
{
processXML(ajax.responseXML);
}
else
{
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = "Nenhum produto relacionado";
}
}
}
//passa o código do estado escolhido
var params = "id_categoria="+valor;
ajax.send(params);
}
}
function changeUser(valor)
{
document.frmPedidoProduto.id_produto.value = document.frmPedidoProduto.id_produto_temp.value;
}
function processXML(obj)
{
//pega a tag cliente
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cliente
if(dataArray.length > 0)
{
//percorre o arquivo XML paara extrair os dados
for(var i = 0 ; i < dataArray.length ; i++)
{
var item = dataArray[i];
//contéudo dos campos no arquivo XML
var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '';
idOpcao.innerHTML = "Selecione um produto abaixo";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao + volume;
//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}
}idOpcao.innerHTML = "Nenhuma familia relacionada";
}
}
function DadosValor(valor, valor2)ajaxValor = new ActiveXObject("Microsoft.XMLHTTP");
}ajaxValor = new ActiveXObject("Msxml2.XMLHTTP");
}ajaxValor = new XMLHttpRequest();
}alert("Esse browser não tem recursos para uso do Ajax");
ajaxValor = null;
}
}
}document.frmPedidoProduto.valor_produto.value.length = 1;
idOpcaoValor = document.getElementById("valor_produto");
// idOpcaoReciboItem = document.getElementById("valor_item");
ajaxValor.open("POST", "inc/valor.php", true);
ajaxValor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxValor.onreadystatechange = function()idOpcaoValor.value = "Carregando...!";
}
//após ser processado - chama função processXMLValor que vai varrer os dados
if(ajaxValor.readyState == 4)
{
if(ajaxValor.responseXML)
{
processXMLValor(ajaxValor.responseXML);
}idOpcaoValor.value = "";
}
}
}
//passa o código do estado escolhido
var params = "id_produto="+valor+"&condicao="+valor2;
ajaxValor.send(params);
}
}
function processXMLValor(obj)//total de elementos contidos na tag categoria
if(elemento.length > 0)
{
//contéudo dos campos no arquivo XML
var codigo = elemento[0].getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = elemento[0].getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '';
idOpcaoValor.value = descricao;
//idOpcaoReciboItem.value = codigo;
}idOpcaoValor.value = "";
}
}
</script>O código que você desenvolveu, não corresponde ao que está indo para o navegador, veja:
Esse é o código que você colocou a variável para imprimir:
//cria um novo option dinamicamente
var novo = document.createElement("option");
var volume = <?= $objProduto->volume; ?>;O código abaixo é o que tem no seu navegador.
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao + volume;
Está faltando uma linha nele...
Veja bem, eu estou fazendo desta seguinte forma, para que quando pega o volume os produtos que não tirem o valor volume preenchido não aparecerem o volume:
ESTOU USANDO:
function confere(valor)
{
if(valor == 'OUTRA')
{
$("#transporte_outro").css("display", "block");
$("#transporte_outro_txt").css("display", "block");
}$("#transporte_outro").css("display", "none");
$("#transporte_outro_txt").css("display", "none");
}
}
function conferePgto(valor)$("#pagamento_outro").css("display", "block");
$("#pagamento_txt").css("display", "block");
}$("#pagamento_outro").css("display", "none");
$("#pagamento_txt").css("display", "none");
}
}
function removerPedidoProduto(id_pedido_produto, id_pedido, id_cliente)location.href='pedido-remover-produto.php?id_pedido_produto='+id_pedido_produto+'&id_pedido='+id_pedido+'&id_cliente='+id_cliente;
}
}
function Dados(valor)ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{ajax = new ActiveXObject("Msxml2.XMLHTTP");
} ajax = new XMLHttpRequest();
} alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
}
//se tiver suporte ajax
if(ajax)
{document.frmPedidoProduto.id_produto_temp.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "inc/produtos.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() idOpcao.innerHTML = "Carregando...!";
} if(ajax.responseXML)
{
processXML(ajax.responseXML);
}
else
{
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = "Nenhum produto relacionado";
}
}
}var params = "id_categoria="+valor;
ajax.send(params);
}
}
function changeUser(valor)document.frmPedidoProduto.id_produto.value = document.frmPedidoProduto.id_produto_temp.value;
}
function processXML(obj)//pega a tag cliente
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cliente
if(dataArray.length > 0)
{var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '<?php
if($reg_des_prod[tp_categoria] != 1)
{
if(!empty($objProduto->volume))
{
echo " - ".$objProduto->volume." L";
}
}
?>';
idOpcao.innerHTML = "Selecione um produto abaixo";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao + volume;
//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}
}
else
{idOpcao.innerHTML = "Nenhuma familia relacionada";
}
}
function DadosValor(valor, valor2)ajaxValor = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{ajaxValor = new ActiveXObject("Msxml2.XMLHTTP");
} ajaxValor = new XMLHttpRequest();
} alert("Esse browser não tem recursos para uso do Ajax");
ajaxValor = null;
}
}
}
//se tiver suporte ajaxValor
if(ajaxValor)
{document.frmPedidoProduto.valor_produto.value.length = 1;
idOpcaoValor = document.getElementById("valor_produto");
// idOpcaoReciboItem = document.getElementById("valor_item");
ajaxValor.open("POST", "inc/valor.php", true);
ajaxValor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxValor.onreadystatechange = function() idOpcaoValor.value = "Carregando...!";
}
//após ser processado - chama função processXMLValor que vai varrer os dados
if(ajaxValor.readyState == 4)
{
if(ajaxValor.responseXML)
{
processXMLValor(ajaxValor.responseXML);
}
else
{
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcaoValor.value = "";
}
}
}
//passa o código do estado escolhido
var params = "id_produto="+valor+"&condicao="+valor2;
ajaxValor.send(params);
}
}
function processXMLValor(obj)//total de elementos contidos na tag categoria
if(elemento.length > 0)
{
//contéudo dos campos no arquivo XML
var codigo = elemento[0].getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = elemento[0].getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '<?php
if($reg_des_prod[tp_categoria] != 1)
{
if(!empty($objProduto->volume))
{
echo " - ".$objProduto->volume." L";
}
}
?>';
idOpcaoValor.value = descricao;
//idOpcaoReciboItem.value = codigo;
}idOpcaoValor.value = "";
}
}function confere(valor)
{
if(valor == 'OUTRA')
{
$("#transporte_outro").css("display", "block");
$("#transporte_outro_txt").css("display", "block");
}$("#transporte_outro").css("display", "none");
$("#transporte_outro_txt").css("display", "none");
}
}
function conferePgto(valor)$("#pagamento_outro").css("display", "block");
$("#pagamento_txt").css("display", "block");
}$("#pagamento_outro").css("display", "none");
$("#pagamento_txt").css("display", "none");
}
}
function removerPedidoProduto(id_pedido_produto, id_pedido, id_cliente)location.href='pedido-remover-produto.php?id_pedido_produto='+id_pedido_produto+'&id_pedido='+id_pedido+'&id_cliente='+id_cliente;
}
}
function Dados(valor)ajax = new ActiveXObject("Microsoft.XMLHTTP");
}ajax = new ActiveXObject("Msxml2.XMLHTTP");
}ajax = new XMLHttpRequest();
}alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
}document.frmPedidoProduto.id_produto_temp.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "inc/produtos.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function()idOpcao.innerHTML = "Carregando...!";
}processXML(ajax.responseXML);
}idOpcao.innerHTML = "Nenhum produto relacionado";
}
}
}var params = "id_categoria="+valor;
ajax.send(params);
}
}
function changeUser(valor)document.frmPedidoProduto.id_produto.value = document.frmPedidoProduto.id_produto_temp.value;
}
function processXML(obj)//pega a tag cliente
var dataArray = obj.getElementsByTagName("produto");
//total de elementos contidos na tag cliente
if(dataArray.length > 0)
{
//percorre o arquivo XML paara extrair os dados
for(var i = 0 ; i < dataArray.length ; i++)
{
var item = dataArray[i];
//contéudo dos campos no arquivo XML
var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '';
idOpcao.innerHTML = "Selecione um produto abaixo";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao + volume;
//finalmente adiciona o novo elemento
document.frmPedidoProduto.id_produto_temp.options.add(novo);
}
}idOpcao.innerHTML = "Nenhuma familia relacionada";
}
}
function DadosValor(valor, valor2)ajaxValor = new ActiveXObject("Microsoft.XMLHTTP");
}ajaxValor = new ActiveXObject("Msxml2.XMLHTTP");
}ajaxValor = new XMLHttpRequest();
}alert("Esse browser não tem recursos para uso do Ajax");
ajaxValor = null;
}
}
}document.frmPedidoProduto.valor_produto.value.length = 1;
idOpcaoValor = document.getElementById("valor_produto");
// idOpcaoReciboItem = document.getElementById("valor_item");
ajaxValor.open("POST", "inc/valor.php", true);
ajaxValor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxValor.onreadystatechange = function()idOpcaoValor.value = "Carregando...!";
}
//após ser processado - chama função processXMLValor que vai varrer os dados
if(ajaxValor.readyState == 4)
{
if(ajaxValor.responseXML)
{
processXMLValor(ajaxValor.responseXML);
}idOpcaoValor.value = "";
}
}
}
//passa o código do estado escolhido
var params = "id_produto="+valor+"&condicao="+valor2;
ajaxValor.send(params);
}
}
function processXMLValor(obj)//total de elementos contidos na tag categoria
if(elemento.length > 0)
{
//contéudo dos campos no arquivo XML
var codigo = elemento[0].getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = elemento[0].getElementsByTagName("descricao")[0].firstChild.nodeValue;
var volume = '';
idOpcaoValor.value = descricao;
//idOpcaoReciboItem.value = codigo;
}idOpcaoValor.value = "";
}Se o código abaixo não exibe nada, há algo de errado com o seu código.
<?php
if($reg_des_prod[tp_categoria] != 1)
{
if(!empty($objProduto->volume))
{
echo " - ".$objProduto->volume." L";
}
}
?>
Entretanto, por mim, esse código é intestável, pois depende exclusivamente do seu ambiente.
Faço o seguinte, adicione os seguintes códigos abaixo, antes do código acima:
var_dump($reg_des_prod);
var_dump($objProduto);
Poste somente o que sair do código acima (postar muito código só atrapalha).
Gabriel desculpe a demora, então ficaria como ?
Não entendi
Caso for uma string, adicione apóstrofos: