Select saves same data in 2 different fields

Asked

Viewed 84 times

0

I need that when the employee selects the product the input "product code" be filled automatically, so far so good but when write the data in the BD, the fields product and product code keep the same data (in this case the product code).

<select name="produto" id="produto">
<option value="" disable>Escolha um produto:</option>
<?php
require "conexao.php";
$sql = mysql_query("select * from produto");
    while ($row = mysql_fetch_array($sql)) {
       print '<option value="'.$row['codigo_produto'].'">'.$row['nome'].'</option>';
    }
?>
</select><br/>
<input name="codigo_produto" id="codigo_produto"><br />

Code to save the Form:

$produto = $_POST["produto"]; 
$codigo_produto = $_POST["codigo_produto"]; 
$quantidade = $_POST["quantidade"]; 
$solicitante = $_POST["solicitante"]; 
$log = date('Y-m-d H:i:s'); 
$string_sql = "INSERT INTO op (codigo,produto,codigo_produto,quantidade,solicitante,log) VALUES (null,'$produto','$codigo_produto','$quantidade','$solicitante',NOW())"; 
  • 'Cause you’re using the product code as value of the option in select. And it is this value that is passed to the POST.

  • and there is no way for me to record the name in one field and code in another without having to use 2 different tables?

  • Show the code where the form information is stored.

  • $product = $_POST["product"]; $codigo_product = $_POST["product code"]; $quantity = $_POST["quantity"]; $requester = $_POST["requester"]; $log = date('Y-m-d H:i:s'); $string_sql = "INSERT INTO op (code,product,code_product,quantity,requester,log) VALUES (null,'$product','$code_product','$quantity','$requester',NOW())";

  • 1

    Just in the code where you used the form select nome from produto where codigo_produto=$_POST['produto'] and only then record the 2 fields.

  • That or create a input Hidden: <input type=hidden name="produto" id="produto"> you need to change the name and the id of select.

  • What the select code looks like before the Insert?

  • Look at my answer.

Show 3 more comments

1 answer

2


The problem is that when you go to get $produto = $_POST["produto"]; this will return you the value of the selected item: value="'.$row['codigo_produto'].'".

You Can Create a Field Hidden and play it to record, keeping the recording intact:

<select name="produtoSelect" id="produtoSelect">
<option value="" disable>Escolha um produto:</option>
<?php
require "conexao.php";
$sql = mysql_query("select * from produto");
    while ($row = mysql_fetch_array($sql)) {
       print '<option value="'.$row['codigo_produto'].'">'.$row['nome'].'</option>';
    }
?>
</select><br/>
<input name="codigo_produto" id="codigo_produto"><br />
<input type=hidden name="produto" id="produto"><br />

Or then search for field name before saving:

$produto = $_POST["produto"]; 
$codigo_produto = $_POST["codigo_produto"]; 
$quantidade = $_POST["quantidade"]; 
$solicitante = $_POST["solicitante"]; 
$log = date('Y-m-d H:i:s'); 

$search_sql=  mysql_query("select nome from produto where codigo_produto=$produto");

if ($row = mysql_fetch_array($search_sql)) 
     $produto_nome = $row['nome'];

$string_sql = "INSERT INTO op (codigo,produto,codigo_produto,quantidade,solicitante,log) 
VALUES(null,'$produto_nome','$codigo_produto','$quantidade','$solicitante',NOW())"; 

NOTE:

Just one more thing you use mysqli instead of mysql which will soon be discontinued!

  • 1

    Yes, it worked, thank you very much for the support!

  • 1

    Yes I intend to learn mysqli.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.