

以下のようにフォーム内にラベルとセレクトボックスを設定しており、セレクトボックスで選択したものによってラベル側も連動して内容が変更されるようにしております。  
MySQL内には最下段のようなテーブルが存在しており、セレクトボックスにNAMEをラベルにMAILを反映させております。  
ただ、ラベルとセレクトボックスは期待通りの動きをするのですが、実際にボタンをクリックしてMySQL側にある別テーブル(同じNAMEとMAILをもつ)へと反映させると別テーブルには両方ともにMAILがUPDATEされてしまいます。

おそらくScriptタグ内のmail.value = name.value;が原因だとは思うのですが、解決方法がわからないため教えてくださると嬉しいです。

[code]

    <form action="/" method="POST">
        <span>USERNAME</span>
        <select id="sel_name" name="input_name">
          <% for(var j in userdata) {%>
          <% var usr_obj = userdata[j]; %>
          <option value= <%= usr_obj.mail %>>
          <%= usr_obj.name %>
          </option>
          <% } %>
        </select>
        <label><span>USER ADDRESS</span><input id="sel_mail" name="input_mail"></label>
    
[/code]

* * *
[code]

    <script>
       document.getElementById("sel_name").addEventListener('change',changename);
       function changename(){
          let name = document.getElementById("sel_name");
          let mail = document.getElementById("sel_mail");
    
          mail.value = name.value;
          }
    </script>
    
[/code]

* * *
[code]

    app.get("/", async (req, res) => {
    
    const usr_sql = "select * from get_user";
    const sql = "select * from users";
    let results = await queryAsync(sql);
    let userdata = await queryAsync(usr_sql);
    console.log(userdata);
    console.log(results);
    res.render("index.ejs",{ content: results,userdata: userdata });
    });
    
    app.post("/", async (req, res) => {
    
      var dt = new Date;
      var now = dt.toFormat("HH24:MI:SS");
      console.log("request", req.body.input_name);
      const sql = "INSERT INTO users SET ?";
      const resid = await queryAsync("select max(id) from users");
      const preid = resid[0]["max(id)"];
      const id = preid + 1;
    
      const checkname = "SELECT status FROM users WHERE ?";
    
      if(req.body.begin_button){
    
        let status_checked = await queryAsync(checkname,{ name: req.body.input_name });
    
        if(status_checked == 0){
          var results = await queryAsync(sql, { id: id, name: req.body.input_name, email: req.body.input_mail, start: now, status: '1'});
          console.log(results);
        }else{
          console.log(results);
        };
      }
      else if(req.body.finish_button){
        if(status_checked = 1){
          let updatesql = "UPDATE users SET end = ?, status = ? WHERE name = ?";
          var results = await queryAsync(updatesql, [now, '2', req.body.input_name]);
          console.log(results);
        }else{
          console.log(results);
        }
      }
      else if(req.body.start_button){
        if(status_checked = 1){
          let updatesql = "UPDATE users SET restbegin = ?, status = ? WHERE name = ?";
          var results = await queryAsync(updatesql, [now, '3', req.body.input_name]);
        }else{
          console.log(results);
        };
      }else if(req.body.end_button){
         if(status_checked = 3){
            let updatesql = "UPDATE users SET restend = ?, status = ? WHERE name = ?";
            var results = await queryAsync(updatesql, [now, '1' , req.body.input_name]);
         }else{
            console.log(results);
         };
    
      };
    
[/code]

* * *
[code]

    +------+-----------+--------------------+
    | id   | name      | mail               |
    +------+-----------+--------------------+
    |    1 | user1     | user1@mail.jp      |
    |    2 | user2     | user2@mail.jp      |
    |    3 | user3     | user3@mail.jp      |
    +------+-----------+--------------------+
    
[/code]

[code]

    +------+----------------+--------------------+
    | id   | name           | mail               |
    +------+----------------+--------------------+
    |    1 | user1@mail.jp  | user1@mail.jp      |
    |    2 | user2@mail.jp  | user2@mail.jp      |
    |    3 | user3@mail.jp  | user3@mail.jp      |
    +------+----------------+--------------------+
    
[/code]


CC BY-SA 4.0
2020-05-26T11:51:06.810
67009
2022-01-10T05:00:25.517
2022-01-10T05:00:25.517
32986
40326
question
javascript html mysql node.js
表示されている値と異なる値がMySQLにUPDATEされる。


新しくtype = hiddenでfor文まわして取得することができました、ありがとうございます！


CC BY-SA 4.0
2020-05-27T08:51:39.697
67033
2020-05-27T08:51:39.697
40326
67009
answer