2017-03-02 68 views
0

我想要做的是讓用戶從下拉菜單中選擇monthyear,即類似feb2017的東西,然後將所選值輸入到服務器端,在那裏我將使用選擇來搜索數據庫where month_year = feb2017,month_year是我的數據庫表中的一列。如何獲取從ejs模板到服務器端節點的下拉菜單中選擇的值

但是,現在我只想得到選擇到服務器端的選項。我使用節點js,表達以及身體分析器。

那麼,我該怎麼辦呢?

這裏是我的EJS文件

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Add/Edit DA</title> 

    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <% var rows %> 
    <% var rowsLength = rows.length %> 


<div> 
    <form id="tableForm" action="/salary-sheet" method="post"> 
    <select class="selectpicker" data-style="btn-info" name="selectpicker"> 
     <optgroup label="Select Table"> 
      <option name="" value="0">Select Month Year</option> 
      <% for(var i=0;i<rowsLength;i++){ %> 
      <% if(i>0){ %> 
      <% if(rows[i].month_year !== rows[i-1].month_year){ %> 
      <option name="table<%=i %>" value="month1"><%= rows[i].month_year %></option> 
      <% } %> 

      <% }else{ %> 
      <option name="table<%=i %>" value="month2"> <%= rows[i].month_year %></option> 
      <% } %> 
      <% } %> 
     </optgroup> 
    </select> 
    <input type="submit" /> 
</form> 
    Go back to home page - <a href="/">click here</a> 
</div> 


</body> 


</html> 

和這裏的相關服務器端。

app.get('/select-month',function(req,res){ 
    connection.query('SELECT month_year FROM attendance_details',function(err,rows){ 
     if(err){ 
      throw err; 
     }else{ 

      var rowsLength = rows.length; 
      console.log('rows is ',rows); 

      res.render('select-month.ejs',{rows:rows}); 
     } 
    }); 


}); 

app.post('/salary-sheet',function(req,res){ 
    var month = req.body.table8; 
    console.log('month is ',month); 
    res.send(month); 
}); 

很想知道如何從EJS選擇服務器端

回答

1

第一選項,假設你想在rows(CMIIW),我建議你改變不同month_year值SQL查詢,以減少在視圖中的複雜性:

SELECT DISTINCT month_year FROM attendance_details ORDER BY month_year ASC 

然後你可以用它來生成您的形式:

<form id="tableForm" action="/salary-sheet" method="post"> 
    <select class="selectpicker" data-style="btn-info" name="selectpicker"> 
     <optgroup label="Select Table"> 
      <option value="">Select Month Year</option> 
      <% rows.forEach(function(row){ %> 
      <option value="<%= row %>"><%= row %></option> 
      <% }) %> 
     </optgroup> 
    </select> 
    <input type="submit" value="Submit" /> 
</form> 

和處理它在服務器端:

var express = require('express'), 
    bodyParser = require('body-parser'), 
    app = express() 

app.set('view engine', 'ejs') 
app.use(bodyParser.urlencoded({ 
    extended: true 
})) 

app.post('/salary-sheet',function(req,res){ 
    var month = req.body.selectpicker 
    console.log('month is', month) 
    res.send(month) 
}) 

app.listen(5000) 
+0

謝謝。這幫助了很多。順便說一下,關於sql查詢。我喜歡DISTINCT部分。 因此,說: 如果我想獲得month_year以及名稱。我仍然可以得到它像 SELECT DISTINCT month_year,name FROM attendance_details – faraz

+0

@faraz是的,你可以使用多列。它將返回唯一的month_year&name對 –

相關問題