在这种情况下,我使用jquery附加机制创建了一行来获取我将在数据搜索中使用的参数。
$(document).ready(function() {
DataProvide();
ManipulationHere();
$('table').delegate('input[type=text].onlyDate', 'focusin', function(event) {
$(this).datepicker({
dateFormat: "yy-mm-dd",
changeMonth: true,
changeYear: true,
yearRange: '1972:2020',
});
});
$('table').delegate('input[type=text].onlyMonth', 'focusin', function(event) {
$(this).monthpicker();
});
}); //Tutup Document Ready
function ManipulationHere(){
var count = 1;
$(".button").click(function(){
count += 1;
var $row = $('<tr>'
+ '<td>' + '</td>'
+ '<td>' + '<input id="data2_' + count + '" type="text" name="data2_' + count + '" class="data2" />' + '</td>'
+ '<td>' + '<input id="rows_' + count + '" name="rows[]" value="'+ count +'" type="hidden">'
+ '<a href="javascript:void(0);" class="remCF">Remove</a>' + '</td>'
+ '</tr>').appendTo("#customFields");
var copyData = $("#data1_1").clone();
var repID = copyData.attr('id', 'data1_' + count + '');
var repName = copyData.attr('name', 'data1_' + count + '');
$row.find('td:first').append(repID)
var check = $row.find('td:first').html();
var get = $(check).attr('id')
});
$("#customFields").on('click','.remCF',function(){
$(this).parent().parent().remove();
count -= 1;
});
$("#customFields").on('change', '.tabelBaru', function() {
var validator = $("#signupForm").validate();
validator.resetForm();
var $this = $(this),
nilai = $this.val();
console.log(nilai);
if(nilai=='gender'){
$this.closest("tr").find(".data2").replaceWith(
'<select name="data2_' + count + '" class="data2">'
+ '<option value="man" selected >Man</option>'
+ '<option value="woman">Woman</option>'
+ '</select>'
)
}
else if(nilai=='religion'){
$this.closest("tr").find(".data2").replaceWith(
'<select name="data2[]" class="data2">'
+ '<option value="protestan" selected >Protestan</option>'
+ '<option value="khatolik">Khatolik</option>'
+ '<option value="islam">Islam</option>'
+ '<option value="budha">Budha</option>'
+ '<option value="hindu">Hindu</option>'
+ '</select>'
)
}
else if(nilai=='blood'){
$this.closest("tr").find(".data2").replaceWith(
'<select name="data2_' + count + '" class="data2">'
+ '<option value="gol_a" selected >A</option>'
+ '<option value="gol_b">B</option>'
+ '<option value="gol_ab">AB</option>'
+ '<option value="gol_o">O</option>'
+ '</select>'
)
}
else if(nilai=='birth_date'){
$this.closest("tr").find(".data2").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" placeholder="Date Format" class="onlyDate"/>'
)
}
else if(nilai=='start_date'){
$this.closest("tr").find(".data2").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" placeholder="Date Format" class="onlyDate"/>'
)
}
else if(nilai=='end_date'){
$this.closest("tr").find(".data2").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" placeholder="Date Format" class="onlyDate"/>'
)
}
else if(nilai=='join_date'){
$this.closest("tr").find(".data2").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" placeholder="Date Format" class="onlyDate"/>'
)
}
else if(nilai=='los_month'){
$this.closest("tr").find(".data2").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" placeholder="Month Format" class="onlyMonth"/>'
)
}
else{
$this.closest("tr").find(".onlyDate").replaceWith(
'<input type="text" id="data2_' + count + '" name="data2_' + count + '" value="" class="data2"/>'
)
}
});
}
function DataProvide(){
selectValues = {
"pilih" : "-Pilih-",
"id" : "ID",
"emp_name" : "Employee Name",
"photo_path" : "Photo Path",
"emp_id" : "Employee ID",
"birth_place" : "Birth Place",
"birth_date" : "Birth Date",
"age" : "Age",
"gender" : "Gender",
"religion" : "Religion",
};
$.each(selectValues, function(key, value) {
$('#data1_1')
.append($("<option></option>")
.attr("value",key)
.text(value));
});
}
上述过程的结果,我有一行将用作参数。
例如,添加行时:
我想创建SAVE过程后生成的查询:
SELECT * from my_table_name WHERE id='123'
如果我用示例添加一个行参数:
我想创建SAVE过程后生成的查询:
SELECT * from my_table_name WHERE id='123' and employee_name='Testing'
如果我想通过添加第三行添加另一个参数搜索:
我想在点击过程中的按钮后生成查询:
SELECT * from my_table_name WHERE id='123' and employee_name='Testing' and employee_id='111'
我已经创建了一个函数来尝试从POST结果中读取数据:
$Query = "SELECT * from my_table_name WHERE ....... << from looping"
foreach ($_POST['rows'] as $key => $count ){
$Data1 = $_POST['data1_'.$count];
$Data2 = $_POST['data2_'.$count];
echo $Data1." >> ".$Data2;
echo "<br>";
}
如何从POST结果中获取数据键和值,以便以后输入我的查询?
答案 0 :(得分:0)
你几乎就在那里,你只需要稍微改变你的循环。
$query = "SELECT * from my_table_name WHERE ";
$first = true;
foreach ($_POST['rows'] as $key => $count ) {
$field = $_POST['data1_' . $count];
$value = $_POST['data2_' . $count];
if ($first) {
$query .= $field . " = '" . $value . "'";
$first = false;
} else {
$query .= " AND " . $field . " = '" . $value . "'";
}
}
请注意,只有在提交至少一个要查询的项目时才会有效。
这也假设您从$field
返回的是数据库中字段的名称。
作为一项额外的练习,我强烈建议您查看数据库实现是否可以使用预准备语句。它们更加安全。