Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou com o seguinte problema:
Tenho um formulário que entre várias informações que inclui no banco de dados, precisa incluir 3 materiais que nem sempre são incluídos exatamente os 3. As vezes o usuário vai escolher só a primeira opção e a quantidade. Então eu tenho 3 campos select cada um com as mesmas 9 opções e do lado um campo que irá pegar um valor que é a quantidade deste material do select ao lado.
O problema é que o usuário pode escolher o material "A" no primeiro select e "B" no segundo, e de uma próxima vez que ele for incluir, ele escolhe "C" no primeiro select e "D" no segundo enviando o valor para o campo errado da tabela. Gostaria de saber como posso verificar o valor e enviar ao campo certo da tabela. Nesta tabela também tenho o nome da terceirizada que nos trouxe o produto que usarei mais tarde para pesquisar quando de cada material com aquela terceirizada existe na empresa. Não sei se consegui explicar minha necessidade, mas qualquer coisa eu posso tentar explicar melhor. Estrutura da minha tabela:
Tabela mmmateriais
Campos: m_id(chave primária), tercei(vou pesquisar), mat(o nome do material que virá do select), matQtde(a quantidade deste material que vem do campo ao lado do select)
Select:
<h4>Material 1</h4>
<select name="mat1">
<option value="0" selected>Nenhum</option>
<option value="1">1 - ETIQUETA</option>
<option value="2">2 - SAQUINHO 11,3cm x 24cm (byviflor, wrappers)</option>
<option value="3">3 - SAQUINHO 13,3cm x 14,5cm (brinquedinho)</option>
<option value="4">4 - SAQUINHO 13,5cm x 22cm + 5cm (margarida,caixinha,barquinho) </option>
<option value="5">5 - SAQUINHO 18cm x 18,5cm (cone, emb, rosa, lindaflor, cx bebe etc.) </option>
<option value="6">6 - SAQUINHO 22cm x 18,3cm (cachepot G e P, bala surpresa </option>
<option value="7">7 - SAQUINHO 24cm x 24cm (rococó) </option>
<option value="8">8 - SAQUINHO 24cm x 32cm (coraflor sem aba adesiva) </option>
<option value="9">9 - SAQUINHO 24cm x 40cm + 5 (maleta e sapato princesa) </option>
</select>
<input type="text" class="qtdeMat" name="q1" id="q1" placeholder="Qtde.">
<br>
<h4>Material 2</h4>
<select name="mat2">
<option value="0" selected>Nenhum</option>
<option value="1">1 - ETIQUETA</option>
<option value="2">2 - SAQUINHO 11,3cm x 24cm (byviflor, wrappers)</option>
<option value="3">3 - SAQUINHO 13,3cm x 14,5cm (brinquedinho)</option>
<option value="4">4 - SAQUINHO 13,5cm x 22cm + 5cm (margarida,caixinha,barquinho) </option>
<option value="5">5 - SAQUINHO 18cm x 18,5cm (cone, emb, rosa, lindaflor, cx bebe etc.) </option>
<option value="6">6 - SAQUINHO 22cm x 18,3cm (cachepot G e P, bala surpresa </option>
<option value="7">7 - SAQUINHO 24cm x 24cm (rococó) </option>
<option value="8">8 - SAQUINHO 24cm x 32cm (coraflor sem aba adesiva) </option>
<option value="9">9 - SAQUINHO 24cm x 40cm + 5 (maleta e sapato princesa) </option>
</select>
<input type="text" class="qtdeMat" name="q2" id="q2" placeholder="Qtde.">
<br>
<h4>Material 3</h4>
<select name="mat3">
<option value="0" selected>Nenhum</option>
<option value="1">1 - ETIQUETA</option>
<option value="2">2 - SAQUINHO 11,3cm x 24cm (byviflor, wrappers)</option>
<option value="3">3 - SAQUINHO 13,3cm x 14,5cm (brinquedinho)</option>
<option value="4">4 - SAQUINHO 13,5cm x 22cm + 5cm (margarida,caixinha,barquinho) </option>
<option value="5">5 - SAQUINHO 18cm x 18,5cm (cone, emb, rosa, lindaflor, cx bebe etc.) </option>
<option value="6">6 - SAQUINHO 22cm x 18,3cm (cachepot G e P, bala surpresa </option>
<option value="7">7 - SAQUINHO 24cm x 24cm (rococó) </option>
<option value="8">8 - SAQUINHO 24cm x 32cm (coraflor sem aba adesiva) </option>
<option value="9">9 - SAQUINHO 24cm x 40cm + 5 (maleta e sapato princesa) </option>
</select>
<input type="text" class="qtdeMat" name="q3" id="q3" placeholder="Qtde.">Poe seu codigo php ai, eu nao entendi muito bem mais para não repetir o mesmo material você pode verificar via javascript e para o usuário poder escolher quantos materiais (1 ou 2 ou 3) use javascript (adicionar mais um material) ai você adiciona um novo form via js.
Olha, eu fiz uma função para incluir cada coisa, porque tenho 4 tabelas que serão atualizadas, nessa inclusão e essa tabela ai dos materiais eu preciso atualizar a materia prima, mas tenho outra que vai atualizar o produto que está entrando, outra pra atualizar o controle de estoque da terceirizada (quantos produtos estão fora e dentro da empresa) e outra que serve para registrar as operações realizadas, em todas está funcionando corretamente, só nessa do material mesmo que não estou conseguindo porque surgiu a necessidade deste select "dinamico".
Eu até consegui fazer com um campo só, mas teria que criar uma função com um leque muito grande de possibilidades, ou fazer um if com vários else if ou um switch quase infinito.
Sei que é pedir demais, mas se não se importar eu posso enviar toda a pasta do usbwebserver que estou utilizando com todos os arquivos para seu e-mail (+ ou - 20mb) para você dar uma analisada melhor, pois são muitos códigos, mas segue o código da função mat() que serve para atualizar os valores da tabela materiais, valeu ai.
function mat(){
global $terc,$cod,$qtde,$cor,$totalE,$dia,$mes,$ano,$obs,$dig,$data,$tipo,$mat1,$mat2,$mat3,$sel1,$ex1;
$sel_materiais = "SELECT * FROM materiais WHERE (`tercei` = '$terc') AND (`mat` = '$mat1')";
$executar_sel_materiais = mysql_query($sel_materiais)or die(mysql_error());
$materiais = mysql_fetch_array($executar_sel_materiais)or die(mysql_error());
$matVal1 = $materiais['matQtde'];
$q1 = $_POST['q1'];
$qms1 = $q1 + $matval;
$linhas = mysql_num_rows($executar_sel_materiais);
echo "<br>",$linhas;
if($linhas==0){
$inserir_mat = "INSERT INTO `materiais` (tercei,mat,matQtde) VALUES ('$terc','$mat1','$q1')";
$executar_inserir_mat = mysql_query($inserir_mat)or die(mysql_error());
echo "<br>Ainda não existem materiais registrados.";
}
else if($linhas>0){
$atualizar_mat = "UPDATE materiais SET matQtde = '$qms1' WHERE (`tercei` = '$terc') AND (`mat` = '$mat1')";
$executar_atualizar_mat = mysql_query($atualizar_mat)or die(mysql_error());
echo "<br>Os materiais foram atualizados!<br> $q1 + $qms1";
}
}
mat();Como só uma pessoa me ajudou e eu consegui me virar praticamente sozinho, até porque acho que não soube explicar muito bem o que eu precisava, vou postar aqui a resposta pra quem passar pelo mesmo, pois acho que será útil:
function a(){
global $terc;
$m1 = $_POST['mat1'];
$m2 = $_POST['mat2'];
$m3 = $_POST['mat3'];
$mq1 = $_POST['q1'];
$mq2 = $_POST['q2'];
$mq3 = $_POST['q3'];
$selecionar = "SELECT * FROM materiais WHERE (`tercei` = '$terc') AND (`mat` = '$m1')";
$ex_selecionar = mysql_query($selecionar) or die(mysql_error());
$arrayLinhas = mysql_fetch_array($ex_selecionar);
$linhas = mysql_num_rows($ex_selecionar);
echo $linhas,"<br>";
$quantidadeAnterior = $arrayLinhas['matQtde'];
$novaQ = $quantidadeAnterior + $mq1;
if($linhas==0){
$inserir = "INSERT INTO `materiais` (`tercei`,`mat`,`matQtde`)VALUES('$terc','$m1','$mq1')";
$ex_inserir = mysql_query($inserir) or die(mysql_error());
echo "Registros inseridos!";
}
else{
$atualizar = "UPDATE `materiais` SET matQtde = '$novaQ' WHERE (`tercei` = '$terc') AND (`mat` = '$m1')";
$ex_atualizar = mysql_query($atualizar)or die(mysql_error());
echo "Registros atualizados!";
}
}
Tudo que eu precisei fazer foi isso e repetir a funçao com outros nomes b() e c().
Depois troquei as variáveis de consulta no INSERT e no UPDATE e chamei as 3 funções a(),b() e c(), então quando o script inseria os dados no primeiro select ele chamava a função b que fazia a verificação denovo e como já existia ele apenas atualizava o valor, não sei se consegui explicar direito, mas resolvi minha necessidade assim talvez ajude outros.. vlw
Poe seu codigo php ai, eu nao entendi muito bem mais para não repetir o mesmo material você pode verificar via javascript e para o usuário poder escolher quantos materiais (1 ou 2 ou 3) use javascript (adicionar mais um material) ai você adiciona um novo form via js.