Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá tudo bem?
Eu precisava de uma ajudinha!
Eu tenho um formulário e queria substituir o valor da tag value por outro da mesma linha do banco de dados.
Eu quero substituir o cód que faz o sistema funcionar pelo nome da linha que a pessoa selecionou.
Imagina-se que:
cod/nome
1 - Laranja
2 - Maça
3 - Feijão
Daí no cód seria:
<form....>
<select ... >
<options value="1>Laranja</option>
Ao clicar no botão de enviar do formulário, eu preciso trocar o valor "1" por "Laranja". Como eu posso fazer isso? Eu preciso de um exemplo básico e pratico para pelo menos tentar adaptar ao meu projeto.
Obrigado :)
Ola William obrigado pelo retorno!
Eu nem sei como fazer isso rapaiz.
É que o sistema em que eu me baseei (PHP + SQL) só funciona corretamente se o campo abrir o cod na tag value.
A estrutura do HTML é essa:
<form action="" method="post" id="" class="">
<select name="" id="">
<option value="">-- Escolha a Quantidades --</option>
//A partir daqui o valor de "value" é inserido via PHP e Banco de Dados, assim com a "Quantidade" selecionada
<option id="" value="" >(Quantidade)</option>
</select>
<button type="submit" class="" >Incluir no Orçamento</button>
</form>
Suponhamos que tudo estivesse em html seria algo assim:
<form action="enviar.php" method="post" id="" class="">
<select name="" id="">
<option value="">-- Escolha a Quantidades --</option>
<option id="" value="1" >(500) Quinhentos</option>
<option id="" value="2" >(1000) Mil</option>
<option id="" value="3" >(2500) Dois e Quinhentos</option>
<option id="" value="4" >(5000) Cinco Mil</option>
</select>
<button type="submit" class="" >Incluir no Orçamento</button>
</form>
Só com o HTML (e o PHP) quando apertamos o botão do Enviar, ele envia o valor do "value". Mas o valor alí é apenas do Cód da quantidade. Se eu colocar a quantidade real alí. Ele não funciona por ser um combo-box.
O pessoal do PHP me deu a dica que preciso fazer um OnChange, mas não sei como fazer isso, embora eu ja tenha pesquisado
Não entendi muito bem.. mais você disse que value não passa? Como assim?
Você pode passar perfeitamente esses nomes no value, tipo:
<options value="Laranja">Laranja</option>
Opa...
Então o que acontece é que é uma listagem combobox. Se não aparece o value da quantidade, não aparece os tamanhos disponíveis para aquela quantidade. Tipo estado cidade. Cada estado tem seu id (código). Se não abre a id (o código) do estado, não carrega as cidades, entendeu?
Na verdade eu troquei um outro sistema que tinha feito achando que com esse não aconteceria isso, mas não teve jeito
Olá!
Eu achei isso aqui que pode ser que me ajude. Digamos que ele até faz o que eu quero, mas não funciona no value do input.
ORIGINAL
<!DOCTYPE html><html><body><p id="demo">Mr Blue has a blue house and a blue car.</p><button onclick="myFunction()">Try it</button><script>function myFunction() { var str = document.getElementById("demo").innerHTML; var res = str.replace(/blue/g, "red"); document.getElementById("demo").innerHTML = res;}</script></body></html>
Adaptada por mim:
<!DOCTYPE html><html><body><input id="demo" value="blue"><button onclick="myFunction()">Try it</button><script>function myFunction() { var str = document.getElementById("demo").innerHTML; var res = str.replace(/blue/g, "red"); document.getElementById("demo").innerHTML = res;}</script></body></html>
Se eu faço uma input text com id "demo" ela não troca ali a palavra assim como acontece na tag <p>. Por que será?Pelo que entendi funciona o combo mas não envia para o orçamento, é isso?
Ou no orçamento aparece a id da quantidade.é isso?
>
Pelo que entendi funciona o combo mas não envia para o orçamento, é isso?
Ou no orçamento aparece a id da quantidade.é isso?
Isso mesmo... no orçamento aparece a id da quantidade
Vc envia post e preenche o campo quant no orç. como?
Tem calculo de valor? é pela id da quant. Ou pelo nome:
Ex: (500)
Desculpa a demora pra responder...
Então, não tem calculo, ele seleciona a linha do banco de dados. Ex.
cod_quantidade/quantidade
1 / 500
2 / 1000
etc
Daí eu puxo os valores com o banco de dados
<option value="<?php echo $cod_quantidade ?>"> == <?php echo $quantidade ?> == </option>Isso no select e como passa pro orç.
Então, aí é que está o problema. No orçamento ele pega o cód daí no orçamento vai o cód e não o valor realmente selecionado.
Eu vou postar aqui o html (com o PHP) e o site para você poder fazer o teste
<select name="quantidade" id="cod_quantidade" class='form-control'>
<option value="">-- Escolha a Quantidades --</option>
<?php
while ( $row5 = mysql_fetch_assoc( $res ) ):
$cod5 = $row5['cod_quantidade'];
$sigla = $row5['sigla']; ?>
<option id="<?php echo $cod5 ?>" value="<?php echo "$cod5"?>" ><?php echo $sigla?></option>
<?php endwhile; ?>
</select>
link do site que usa o sistema: http://dcsdesenvolvimento.com.br/detalhes/adesivos-personalizados-sulfite-campo-mourao/220
O valor que deseja passar, está na variavel "sigla" ?
Caso sim, basta trocar e ficar assim:
<option id="<?php echo $cod5 ?>" value="<?php echo $sigla ?>" ><?php echo $sigla?></option>
Assim que der submit, o valor sera o mesmo que está aparecendo
Caso não for isso, você pode fazer uma função para trocar o valor.
Exemplo:
function trocarValor($num)
{
if($num == 1)
return "Laranja";
}
echo trocarValor(1);>
O valor que deseja passar, está na variavel "sigla" ?
Caso sim, basta trocar e ficar assim:
<option id="<?php echo $cod5 ?>" value="<?php echo $sigla ?>" ><?php echo $sigla?></option>
Exatamente!! Mas então, acontece se eu uso a variavel "sigla" no value o combobox não funciona direito. Ele não carrega todos os dados de tamanhos. Por isso a ideia era tentar trocar por outra variavel da mesma linha ao clicar no botao de enviar
tente assim
<option value="<?php echo $cod5 ?>" ><?php echo $sigla?></option>>
tente assim
<option value="<?php echo $cod5 ?>" ><?php echo $sigla?></option>
Fiz assim e continuou do mesmo jeito
mude o select:
conexão com do bd.
$query = "SELECT cod_quantidade,sigla FROM suatabela ORDER BY cod_quantidade ";
$res1 = mysql_query($query);
while($row1=mysql_fetch_array($res1))
{
$cod_=$row1["cod_quantidade"];
$nome_sigla=$row1["sigla"];
if($cod == $cod_quantidade)
$s="selected";
else
$s="";
echo "<option $s value='$cod>$nome_sigla</option>";
mysql_close ($sql);
}
?>
mysql_close, fecha a conexão, não precisa colocare conexão com bd se você não estiver conectado.
Então eu tentei fazer o que vc sugeriu, só que mais ou menos do jeito que eu tinha feito mas o resultado foi igual
Fiz assim:
//Para que a tabela quantidade/tamanho funcione
$sql5 = "select cod_quantidade, sigla from quantidade where relacionar='$relacionar' ORDER BY cod_quantidade";
$query5 = mysql_query($sql5);
$row5 = mysql_fetch_array($query5);
$res = mysql_query( $sql5 );<option value="">-- Escolha a Quantidades --</option>
<?php$cod5 = $row5['cod_quantidade'];
$sigla = $row5['sigla'];
if($cod == $cod_quantidade)
$s="selected";$s="";
?>
<option <?php echo $s?> value="<?php echo "$cod5"?>" ><?php echo $sigla?></option>
<?php endwhile; ?>
</select>Vamos lá
de onde vem o $relacionar?
Pelo Site que mostrou vc. tem três selects?
Produtos / quantidade / tamanhos ?
$relacionar relaciona a quantidade para o produto ou o tamanho para a quantidade
Suas tabelas são assim?
PRODUTOS: id/produto
QUANTIDADE: cod_quantidade/sigla
TAMANHO: id/tamanho
em qual tabela fica o campo relacionar
veja assim:
<?php
$sql5 = "SELECT cod_quantidade, sigla FROM quantidade ORDER BY cod_quantidade";
$query5 = mysql_query($sql5);
$row5 = mysql_fetch_array($query5);
$res = mysql_query( $sql5 );
$relacionar = $row5['relacionar']; //Esse é o campo que liga uma tabela à outra
?>
<option value="">-- Escolha a Quantidades --</option>
<?php
while ( $row5 = mysql_fetch_array( $res ) ):
$cod5 = $row5['cod_quantidade'];
$sigla = $row5['sigla'];
if($sigla == $sigla)
$s="selected";
else
$s="";
echo "<option $s value='$cod5>$sigla</option>";
?>
</select>
assim vai imprimir no select TODAS AS quantidadesOla... desculpa de novo a demora é que eu precisei dar uma saidinha...
Então isso mesmo, eu inclui nas duas tabelas o relacionar. É só assim que eu sei fazer hehehe, para juntar duas tabelas.
Eu vou tentar fazer desse jeito agora e te falo... :)
--
Bom...Eu fiz aqui o que você falou. O Select realmente imprimiu todas as quantidades da tabela, mas ainda se deixar o "value" com o $cod5 continua enviando os cods. Daí eu coloquei la a "sigla" no value. Até que deu certo, mas continua não funcionando 100% . Não são todos os tamanhos que carrega. Será que ai o problema é o no banco de dados?
ai é o relacionamento por isso lhe perguntei a variável $relacionar de onde vem e como são as tabelas, em qual existe esse campo.
Você tinha colocado na query que não funcionou, lá em cima "SELECT........relacionar=$relacionar.
isso selecionaria somente as quantidades iguais a $relacionar.
ex:
tabela estado
id/estado
Select Seleciona estado
tabela cidade
id/cidade/id_estado
Select Seleciona Cidade id_estado=$id_estado.(Todas cidade = ao id_estado)
Isso é o relacionamento, por isso lhe perguntei sobre como são as tabelas e de onde vem a variável $relacionar, que você mostrou lá em cima na query que não funcionou.
você colocou nela relacionar=$relacionar
isso selecionaria somente as quantidades iguais a $relacionar.
se tamanho vem de produtos (cada produto tem alguns tamanhos)deve estar no select tamanho.
como são as tabelas
qual tabela tem esse campo (relacionar)
Eu coloquei $relacionar nas duas na verdade heheh
tabela quantidade:
relacionar/cod_quantidade/sigla/nome(apenas para facilitar a identificação)/
La em tamanho
quantidade_cod_quantidade / cod_tamanho / nome (o nome aqui é as medidas selecionadas)
Acho que coloquei de início porque não funcionou de outro jeito
bem pelo que vi no exemplo do site indicado (lá so tem um produto) não sei se cada produto pode ter todos os tamanhos
seria assim:
TABELA PRODUTO
id/produto
SELECT PRODUTO
TABELA QUANTIDADE
id/quantidade/
SELECT QUANTIDADE
TABELA TAMANHO
id/tamanho/id_da_quantidade
select tamanho sendo id_da_quantidade=id_da_quantidade do select quantidade.
Más seu exemplo do site é em combo dinâmico com javascript
veja esse link que é igual e você até pode baixar as tabelas e código para ver como funciona.
http://www.daviferreira.com/posts/populando-selects-de-cidades-e-estados-com-ajax-php-e-jquery
Eu vou tentar, pode deixar!!
Então, não são todos os produtos mesmo. Acho que só tem não tem nem 10 assim. Acho que são apenas os adesivos e alguns folhetos...
Isso mesmo é um "emaranhado" de tabelas. Vai ver que sua dica acima não está funcionando plenamente por isso.
--
Xii rapaiz esse é código fonte que eu usei hehehehe.
Na verdade, eu estava vendo la, tem um monte de gente que passa por este problema. Eu até tentei contatar o autor do blog...
Tem uma pessoa que colocou uma solução nos comentários, mas eu não consegui.
//Recebe do formulário o código do estado
$estado = $_POST ["cod_estados"];
// Faz a consulta para trazer o nome do estado pelo código recebido
$sql = "SELECT cod_estados, nome FROM estados WHERE cod_estados = ". $estado;
// Pega o nome do estado e atribui à string $estado_nome.
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) { $estado_nome = $row['nome'];};
//Para salvar no banco, utilize a string $estado_nome.
Se de alguma forma eu conseguisse com uma javacript (jquery) ou qualquer outro para substituir o $cod5 por $sigla (da mesma linha do BD) ao clicar no botão, eu acho que seria uma solução para essa dificuldade terrível :)
Você envia para o orçamento por POST botão submit
Disse que conseguiu carregar os tamanhos no select
Como você recebe lá na pagina orçamento e preenche os campos?
é lá que precisa da sigla?
Seria melhor postar todo o código para podermos entender melhor e poder lhe dar a solução.
Sim! Isso mesmo porque a Sigla é a quantidade real disponível para fazer orçamento.
Daquele sistema eu tentei manter os nomes dos campos o mais parecido possível. Só troquei estado por quantidade e cidade por tamanho.
No Script para "rodar" o tamanho, eu troquei o cod_tamanho pelos nomes dos tamanhos em value daí funcionou perfeitamente.
E o $relacionar serve para entender para quais produtos a quantidade e tamanho vão aparecer.
Uma outroa coisinha é que, se colocar o $sigla no value ele carrega tudo bagunçado os tamanhos. Ele carrega, mas tudo baguçado. Não carrega conforme as quantidades. Só mesmo funciona direito com o que eu chamei de $cod5 (que é o cod_quantidade)
Olá Pdelo que entendi os Selects Vc. resolveu.
Não respondeu como chega no script do orçamento.
o que é enviado e recebido lá
e como preen che os campos do orçamento.
Se chega por $_POST o cod5 e vc. precisa da sigla nesse lugar, faça uma query="Select.......buscando a sigla ======
para imprimir no orçamento.
Vc não consegue fazer essa troca já na hora de montar o html ?
Lá com o server-side... não sei como vc monta a tag.