object(stdClass)#1 (1) {
["return"]=>
string(43362) "[{"Searchstring":"?showitemlist=1&Keyword=blue&acctwebguid=12bad325-a118-4778-825a-cc7d5308e24f&orderby=ItemName%20DESC&requestguid=29E60B17-8601-4839-AD00-00DB0D45A2CB","Recordcount":15446},{"Maxretail":7.42000000,"Displayname":"","Suplitemno":"COA09B/K","Supplieritemid":"D7784D83-F63D-4219-BDB1-F7AE76F74CC8","Minretail":5.99000000,"Minqty":25,"Rushavailable":0,"Imagepath":"images/products/EA8E5917-F1D9-4089-BC09-DDE2FF03452F/medium/D7784D83-F63D-4219-BDB1-F7AE76F74CC8.jpg?_=1423597800","Imagepathsm":"images/products/EA8E5917-F1D9-4089-BC09-DDE2FF03452F/small/D7784D83-F63D-4219-BDB1-F7AE76F74CC8.jpg?_=1423597799","Prodtime":10,"Imagepathlg":"images/products/EA8E5917-F1D9-4089-BC09-DDE2FF03452F/large/D7784D83-F63D-4219-BDB1-F7AE76F74CC8.jpg?_=1423597800","Companyname":"Graphik Business Accessories","Displayno":"","Imagepathmd":"images/products/EA8E5917-F1D9-4089-BC09-DDE2FF03452F/medium/D7784D83-F63D-4219-BDB1-F7AE76F74CC8.jpg?_=1423597800","Shownopricing":0,"Itemname":"Zume Coaster Set"},{"Maxretail":50.38000000,"Displayname":"","Suplitemno":"7003-47","Supplieritemid":"F7374437-2DF5-4D4B-B654-32F7C7B8971E","Minretail":39.98000000,"Minqty":10,"Rushavailable":0,"Imagepath":"images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/F7374437-2DF5-4D4B-B654-32F7C7B8971E.jpg?_=1438623367","addlImagesLarge":["images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/7003_47-7003_47bk_b_1.jpg?_=1438623368","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/7003_47-7003_47bk_b_3.jpg?_=1438623368","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/7003_47-7003_47bk_d.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/7003_47-7003_47bk_d_2.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/7003_47-7003_47bk_d_3.jpg?_=1438623370"],"Imagepathsm":"images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/F7374437-2DF5-4D4B-B654-32F7C7B8971E.jpg?_=1438623367","Prodtime":5,"Imagepathlg":"images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/large/F7374437-2DF5-4D4B-B654-32F7C7B8971E.jpg?_=1438623367","addlImagesSmall":["images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/7003_47-7003_47bk_b_1.jpg?_=1438623368","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/7003_47-7003_47bk_b_3.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/7003_47-7003_47bk_d.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/7003_47-7003_47bk_d_2.jpg?_=1438623370","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/small/7003_47-7003_47bk_d_3.jpg?_=1438623371"],"Companyname":"Leed's / Leeds","Displayno":"","Imagepathmd":"images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/F7374437-2DF5-4D4B-B654-32F7C7B8971E.jpg?_=1438623367","addlImagesMed":["images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/7003_47-7003_47bk_b_1.jpg?_=1438623368","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/7003_47-7003_47bk_b_3.jpg?_=1438623368","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/7003_47-7003_47bk_d.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/7003_47-7003_47bk_d_2.jpg?_=1438623369","images/products/A0FB382C-C7AE-11D3-896A-00105A7027AA/medium/7003_47-7003_47bk_d_3.jpg?_=1438623370"],"Shownopricing":0,"Itemname":"Zoom® Audio Decibel Bluetooth Speaker"},.......
<script>
$(document).ready(function() {
var data = '[{"Maxretail":...,"Itemname":"Youth Chameleon T-Shirt"]';
var table = '<table><thead><th>First Name</th><th>Last Name</th><th>Image</th><th>More</th></thead><tbody>';
var obj = $.parseJSON(data);
$.each(obj, function() {
table += '<tr><td>' + this['Itemname'] + '</td><td>' + this['Supplieritemid'] + '</td><td><img src="https://cdn.distributorcentral.com/' + this['Imagepath'] + ' alt="' + this['Itemname'] + '" /></td><td><img src="https://cdn.distributorcentral.com/' + this['addlImagesSmall'] + ' alt="' + this['Itemname'] + '" />' + this['addlImagesSmall'] + '</td></tr>';
});
table += '</tbody></table>';
document.getElementById("datalist").innerHTML = table;
});
Related
FYI, I am working on localhost with wampserver, using PHP and AJAX, trying to display the JSON data rows (which are around 1526). and the problem is i am not able to display the rows which are based on the search conditions.
Output of print_r($result_array); in console output as below. here in below pic don't worry for console error this error is becoz of PHP array used in parsing JSON. This output i used to test weather my server PHP file is working correctly or not but it is working correctly.
After that i checked my encoding function, for which output of echo json_encode($result_array); i am getting red console error for some search condition and in other search condition i am able to display results correctly.
For example, below two images
I am not able to figure out what is happening to my code.
File search.php
<?php
// send a JSON encoded array to client
include('connection.php');
$sqlFlag = 0;
function queryDelimiter(){
global $sqlFlag;
if ($sqlFlag == 0){
$sqlFlag = 1;
return ' WHERE ';
}else{
return ' AND ';
}
}
$selectSQL = "SELECT * FROM tbl_main_lead_info";
if(isset($_POST['lead_status']) and strlen(trim($_POST['lead_status'])) > 0){
$selectSQL .= queryDelimiter()."LeadStatus = '".$_POST['lead_status']."'";
}
if(isset($_POST['lead_owner']) and strlen(trim($_POST['lead_owner'])) > 0){
$selectSQL .= queryDelimiter()."LeadAddedBy = '".$_POST['lead_owner']."'";
}
if(isset($_POST['company_name']) and strlen(trim($_POST['company_name'])) > 0){
$selectSQL .= queryDelimiter()."Company = '".$_POST['company_name']."'";
}
if(isset($_POST['tech_area']) and strlen(trim($_POST['tech_area'])) > 0){
$selectSQL .= queryDelimiter()."TechArea = '".$_POST['tech_area']."'";
}
if(isset($_POST['firm_size']) and strlen(trim($_POST['firm_size'])) > 0){
$selectSQL .= queryDelimiter()."FirmSize = '".$_POST['firm_size']."'";
}
if(isset($_POST['firm_type']) and strlen(trim($_POST['firm_type'])) > 0){
$selectSQL .= queryDelimiter()."FirmType = '".$_POST['firm_type']."'";
}
if(isset($_POST['country_name']) and strlen(trim($_POST['country_name'])) > 0){
$selectSQL .= queryDelimiter()."Country = '".$_POST['country_name']."'";
}
if(isset($_POST['state_name']) and strlen(trim($_POST['state_name'])) > 0){
$selectSQL .= queryDelimiter()."State = '".$_POST['state_name']."'";
}
if(isset($_POST['city_name']) and strlen(trim($_POST['city_name'])) > 0){
$selectSQL .= queryDelimiter()."City = '".$_POST['city_name']."'";
}
if(isset($_POST['start_date']) and strlen(trim($_POST['start_date'])) > 0){
$selectSQL .= queryDelimiter()."LastContactDate >='".$_POST['start_date']."'";
}
if(isset($_POST['end_date']) and strlen(trim($_POST['end_date'])) > 0){
$selectSQL .= queryDelimiter()."NextContactDate <= '".$_POST['end_date']."'";
}
$selectSQL .= " ORDER BY FirstName ASC, LastName ASC, Lead_Id ASC";
$result_array = array();
$result = $conn -> query ($selectSQL);
if(mysqli_num_rows($result) > 0){
while ($row = $result->fetch_assoc()) {
array_push($result_array, $row);
}
}
// print_r($result_array);
echo json_encode($result_array);
// $selectSQL = "SELECT * FROM tbl_main_lead_info as M, tbl_campaign_info as C";
$conn->close();
?>
File loadtable.js
// This is script to load table based on filter section
$(document).ready(function() {
// Campaign Submit Info
$('[name="search_submit"]').click(function(e) {
$('#load-csv-file-button').attr('style','display:none;');
$("#filterRecords").attr('style','display:block;');
$('#add_lead_info').attr('style','display:none;');
e.preventDefault();
// GET the admin and user id value
var adminvalue = $('#filterformpost').find('[name="adminvalue"]').val();
var useridvalue = $('#filterformpost').find('[name="useridvalue"]').val();
var lead_owner = $('#filterformpost').find('#lead_owner_select option:selected').val();
var lead_status = $('#filterformpost').find('#lead_status_select option:selected').val();
var company_name = $('#filterformpost').find('#company_name_select option:selected').val();
var tech_area = $('#filterformpost').find('#tech_area_select option:selected').val();
var firm_size = $('#filterformpost').find('#firm_size_select option:selected').val();
var firm_type = $('#filterformpost').find('#firm_type_select option:selected').val();
var country_name = $('#filterformpost').find('#country_name_select option:selected').val();
var city_name = $('#filterformpost').find('#city_name_select option:selected').val();
var state_name = $('#filterformpost').find('#state_name_select option:selected').val();
var start_date = $('#filterformpost').find('#start_date_search').val();
var end_date = $('#filterformpost').find('#end_date_search').val();
// console.log('adminvalue: '+adminvalue)
// console.log('useridvalue: '+useridvalue)
// console.log('lead_owner: '+lead_owner)
// console.log('country_name: '+country_name)
// console.log('State: '+state_name)
$.ajax({
type: "POST",
url: "./server/search.php",
data: {
"lead_owner": lead_owner,
"lead_status": lead_status,
"company_name": company_name,
"tech_area": tech_area,
"firm_size": firm_size,
"firm_type": firm_type,
"country_name": country_name,
"city_name": city_name,
"state_name": state_name,
"start_date": start_date,
"end_date": end_date
},
beforeSend: function() {
$('.search_lead_filter_message_box').html(
'<img src="tenor.gif" width="40" height="40"/>'
);
},
success:function(data){
// console.log(data)
console.log("Data Length: "+data.length)
console.log(data)
if(data.length == 0){
$('.search_lead_filter_message_box').html('');
$("#filterRecords").html('No results fetched');
}
var result = $.parseJSON(data);
// console.log(result)
//###########################################
// Pagination code start
//###########################################
$('.search_lead_filter_message_box').html('');
$("#filterRecords").empty();
//###########################################
// Pagination code end
//###########################################
$("#pagination").attr('style', 'display:block;');
$("#number_of_rows").attr('style','display:block;');
$('#button-prev-next').attr('style','display:block;');
paginate_json_data(result, adminvalue, useridvalue)
}
});
});
});
function paginate_json_data(userDetails, adminvalue, useridvalue) {
adminvalue = adminvalue
useridvalue = useridvalue
userDetails = userDetails
var table = '';
table = $("<table></table>");
$('#pagination').html('<div id="nav-numbers" class="col nav"></div>');
$('#number_of_rows').html('');
$('#number_of_rows').html('<p1>Total number of leads fetched: ' + userDetails.length + '</p1>');
$('#button-prev-next').html('<button class="col PreviousButton" id="PreValue"><i class="ion-skip-backward"></i> Previous</button><button class="col NextButton" id="nextValue">Next <i class="ion-skip-forward"></i></button>');
var max_size = userDetails.length;
var sta = 0;
var elements_per_page = 10;
var limit = elements_per_page;
if(max_size<10){
// #####################################
// NUMBER OF ROWS A < 10 START START
// #####################################
table.append('<thead><th>#</th><th>Name</th><th>Company</th><th>Website</th><th>Designation</th><th>Email</th><th style="width: 150px;">Phone</th><th>City</th><th>State</th><th>Country</th><th>Lead Status</th></thead>');
table.append('<tbody id="myTable"></tbody>');
goFun_Modified(sta, max_size);
function goFun_Modified(sta, limit) {
for (var i = sta; i < limit; i++) {
var tab = '<tr><td>' + (i+1) + "\n" + '</td><td>' + "<a target='_blank' href=./lead/index.php?lead_id=" + userDetails[i].Lead_Id + " </a>" + userDetails[i].FirstName + ' ' + userDetails[i].LastName + "\n" + '</td><td>' + userDetails[i].Company + "\n" + '</td><td>' + userDetails[i].Website + "\n" + '</td><td>' + userDetails[i].Designation + "\n" + '</td><td>' + "" + userDetails[i].Email + "" + "\n" + '</td><td style="width: 150px;" >' + userDetails[i].Phone + "\n" + '</td><td>' + userDetails[i].City + "\n" + '</td><td>' + userDetails[i].State + "\n" + '</td><td>' + userDetails[i].Country + "\n" + '</td><td>' + userDetails[i].LeadStatus + "\n" + '</td></tr>';
console.log(tab)
$('#myTable').append(tab)
}
} // Function ended
$("#filterRecords").html(table);
$('#nextValue').click(function() {
// checks if it's the last page
if (currentPage < maxPage) {
currentPage++;
$pagingBtn.removeClass('active');
$pagingBtn.eq(currentPage).addClass('active')
} else {
alert("End of page");
}
});
$('#PreValue').click(function() {
// checks if it's the first page
if (currentPage > 0) {
currentPage--;
$pagingBtn.removeClass('active');
$pagingBtn.eq(currentPage).addClass('active')
} else {
alert("Start of page")
}
});
var number = Math.round(userDetails.length / elements_per_page);
for (i = 0; i <= number; i++) {
$('.nav').append('<button class="nav-numbers btn" id=' + i + '>' + (i+1) + '</button>');
}
$('.nav button').click(function() {
var start = $(this).text()-1;
// $(this).css({"background-color": "#e67e22", "color": "#ffffff"});
$('#myTable').empty();
limit = 10 * (parseInt(start) + 1) > max_size ? max_size : 10 * (parseInt(start) + 1)
goFun_Modified(start * 10, limit);
let $self = $(this);
// gets index of button relative to it's siblings
// https://api.jquery.com/index/
currentPage = $self.index();
$pagingBtn.removeClass('active');
$self.addClass('active');
});
// saves all the paging buttons for reusing, instead of calling $() every time
let $pagingBtn = $('#nav-numbers .btn');
let maxPage = $pagingBtn.length - 1;
let currentPage = 0;
$('.nav button')[0].click()
// #####################################
// NUMBER OF ROWS A < 10 END
// #####################################
}else{
// #####################################
// NUMBER OF ROWS A > 10 START
// #####################################
table.append('<thead><th>#</th><th>Name</th><th>Company</th><th>Website</th><th>Designation</th><th>Email</th><th>Phone</th><th>City</th><th>State</th><th>Country</th><th>Lead Status</th></thead>');
table.append('<tbody id="myTable"></tbody>');
goFun(sta, limit);
function goFun(sta, limit) {
for (var i = sta; i < limit; i++) {
var tab = '<tr><td>' + (i+1) + "\n" + '</td><td>' + "<a target='_blank' href=./lead/index.php?lead_id=" + userDetails[i].Lead_Id + " </a>" + userDetails[i].FirstName + ' ' + userDetails[i].LastName + "\n" + '</td><td>' + userDetails[i].Company + "\n" + '</td><td>' + userDetails[i].Website + "\n" + '</td><td>' + userDetails[i].Designation + "\n" + '</td><td>' + "" + userDetails[i].Email + "" + "\n" + '</td><td>' + userDetails[i].Phone + "\n" + '</td><td>' + userDetails[i].City + "\n" + '</td><td>' + userDetails[i].State + "\n" + '</td><td>' + userDetails[i].Country + "\n" + '</td><td>' + userDetails[i].LeadStatus + "\n" + '</td></tr>';
$('#myTable').append(tab)
}
$("#filterRecords").html(table);
}// FUNCTION ENDED
$('#nextValue').click(function() {
var next = limit;
if (max_size >= next) {
def = limit + elements_per_page;
limit = def
$('#myTable').empty();
if (limit > max_size) {
def = max_size;
}
goFun(next, def);
}
// checks if it's the last page
if (currentPage < maxPage) {
currentPage++;
$pagingBtn.removeClass('active');
$pagingBtn.eq(currentPage).addClass('active')
} else {
alert("End of page");
}
});
$('#PreValue').click(function() {
var pre = limit - (2 * elements_per_page);
if (pre >= 0) {
limit = limit - elements_per_page;
$('#myTable').empty();
goFun(pre, limit);
}
// checks if it's the first page
if (currentPage > 0) {
currentPage--;
$pagingBtn.removeClass('active');
$pagingBtn.eq(currentPage).addClass('active')
} else {
alert("Start of page")
}
});
var number = Math.round(userDetails.length / elements_per_page);
for (i = 0; i <= number; i++) {
$('.nav').append('<button class="nav-numbers btn" id=' + i + '>' + (i+1) + '</button>');
if(i == number){
}
}
$('.nav button').click(function() {
var start = $(this).text()-1;
$('#myTable').empty();
limit = 10 * (parseInt(start) + 1) > max_size ? max_size : 10 * (parseInt(start) + 1)
goFun(start * 10, limit);
let $self = $(this);
// gets index of button relative to it's siblings
// https://api.jquery.com/index/
currentPage = $self.index();
$pagingBtn.removeClass('active');
$self.addClass('active');
});
// saves all the paging buttons for reusing, instead of calling $() every time
let $pagingBtn = $('#nav-numbers .btn');
let maxPage = $pagingBtn.length - 1;
let currentPage = 0;
$('.nav button')[0].click()
// #####################################
// NUMBER OF ROWS A > 10 END
// #####################################
}
}
Updated:
Try add content-type specs to http header:
header("Content-Type: application/json");
and set UNICODE feature in json_encode:
echo json_encode($result_array, JSON_UNESCAPED_UNICODE);
I am creating a ecommerce site for my final year project.while I am creating a project I ran in to the problem with product shall be able add the card but when I view the card product shown which I added into the card.my problem is if the give qty it will auto calculation and display result on the total textbox.and final totel show display below. I attached image below what i tried so far. But couldn’t calculate the total and final total.
Display the Products
<script>
getProducts();
function getProducts() {
$.ajax({
type: 'GET',
url: 'all_cart.php',
dataType: 'JSON',
success: function(data) {
data.forEach(function(element) {
var id = element.id;
var product_name = element.product_name;
var price = element.price;
$('#mytable tbody').after
(
'<tr> ' +
'<td>' + id + '</td>' +
'<td>' + product_name + '</td>' +
'<td>' + price + '</td>' +
"<input type='hidden' name='price' value='" + price + "'>" +
'<td>' + "<input type = 'text' id='qty' name='qty'/>" + '</td>' +
'<td>' + "<input type = 'text' id='amount'/>" + '</td>' +
'</tr>');
});
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
}
Auto calcaltion the price * qty
$(function() {
$("#price, #qty").on("keydown keyup click", qty);
function qty() {
var sum = (
Number($("#price").val()) * Number($("#qty").val())
);
$('#amount').val(sum);
console.log(sum);
}
});
You dont should append multiple elements with same ID in a page
Can you try
function getProducts() {
$.ajax({
...
$('#mytable tbody').after
(
'<tr> ' +
'<td>' + id + '</td>' +
'<td>' + product_name + '</td>' +
'<td>' + price + '</td>' +
"<input type='hidden' name='price' class='price' value='" + price + "'>" +
'<td>' + "<input type = 'text' class='qty' name='qty'/>" + '</td>' +
'<td>' + "<input type = 'text' class='amount'/>" + '</td>' +
'</tr>');
});
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
}
$(function() {
$(".price, .qty").on("keydown keyup click", function () {
var price = $(this).parents('tr').find('.price');
var qty= $(this).parents('tr').find('.qty');
var sum = (
Number($(price).val()) * Number($(qty).val())
);
$(this).parents('tr').find('.amount').val(sum);
calculateAmount();
});
function calculateAmount() {
var total = 0;
$('.amount').each(function(e){
total += Number($(this).val());
});
$('#total-amount').text(total);
}
});
This is a demo: https://codepen.io/phuongnm153/pen/bymYOQ
When you get $("#price").val() and $("#qty").val() in jQuery but you have many $("#price") & $("#qty") duplicate. You should be run this in console.
I hope it's helpful for you
I'd like to insert the Json data into my file.php. And so each group of them are insert into group of divs. (with the same style etc.)
I have a feeling the way I am using is not smart... better solutions are very welcome. Thanks guys.
$.ajax({
url: feedURL,
jsonpCallback: 'jsonpCallback',
contentType:"application/json",
dataType: 'jsonp',
success: function(json) {
for (var i=0; i < 15; i++) {
var date = new Date(json.posts.data[i].created_time);
var months = ["/01/", "/02/", "/03/", "/04/", "/05/", "/06/", "/07/",
"/08/", "/09/", "/10/", "/11/", "/12/"];
$("#description").html(json.posts.data[i].message);
$("#caption").html(json.posts.data[i].caption);
$("#expire_date").html(date.getDate() + months[date.getMonth()] + date.getFullYear());
$("#fb_link").html(
'<a href="' + json.posts.data[i].link + '">'
+ 'Total Like: ' + json.posts.data[i].likes.summary.total_count
+ ' Total Share: ' + json.posts.data[i].shares.count
+ ' View on Facebook' + '</a>'
);
$("#profile_img").html('<img src="' + json.picture.data.url + '">');
$("#profile_name").html(json.name);
$("#full_fb_photo").html('<img src="' + json.posts.data[i].full_picture + '">');
}
},
error: function(e) {
console.log(e.message);
}
});
You can write your code in flowing way. Uncountable date print in your loop. If I know your data format, I will give you exact way.
Try this code.
for (var prop in json.posts.data) {
$("#description").html(json.posts.data[prop].message);
// other same as
}
Thanks guys, i have figured out in this way.
$.ajax({
url: feedURL,
jsonpCallback: 'jsonpCallback',
contentType:"application/json",
dataType: 'jsonp',
success: function(json) {
var social_list = "";
for (i=0; i < 15; i++) {
var date = new Date(json.posts.data[i].created_time);
var months = ["/01/", "/02/", "/03/", "/04/", "/05/", "/06/", "/07/",
"/08/", "/09/", "/10/", "/11/", "/12/"];
social_list += "<div class='social_item'><div class='item'><div class='heading'>";
social_list += "<img src='" + json.picture.data.url + "'/><span>" + json.name + "</span><i class='fa fa-facebook'></i></div>";
social_list += "<div class='content'><p>Created on" + date.getDate() + months[date.getMonth()] + date.getFullYear() + "</p>";
social_list += "<div><img src='" + json.posts.data[i].full_picture + "' /></div>";
social_list += "<p name=" + i + ">" + json.posts.data[i].message + "</p>";
social_list += "<div><a href='" + json.posts.data[i].link + "'> Total Likes: " + json.posts.data[i].likes.summary.total_count + "Total Share: " + json.posts.data[i].shares.count + " View on Facebook </a></div>";
social_list += "</div></div></div>"
}
$('#social_list').html(social_list);
in my program user can create by clicking on button (jquery). But php does not send data to another page.
jquery:
$(document).ready(function(){
var counter = 2;
$("#addButton").click(function () {
if(counter>10){
alert("Only 10 textboxes allow");
return false;
}
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>ویژگی '+ counter + ' : </label>' +
'<input type="text" name="txt' + counter +
'" id="textbox' + counter + '" class="form-control" style="margin:5px">');
newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
});
});
php :
$x = 1;
while ($x<11)
{
$name = 'txt' . $x ;
if(isset($_POST[$name]) && $_POST[$name]!='')
{
object::object_Insert($_POST[$name],$s);
}
$x++;
}
In this case, I made a row with jquery additional mechanism to obtain the parameters that I will use in data search.
$(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">'
+ 'Remove' + '</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));
});
}
The results of the above process, I have a line that will be used as a parameter.
For example, when a row is added :
I want to create query generated after the SAVE process is :
SELECT * from my_table_name WHERE id='123'
If I add one more line parameters with example :
I want to create query generated after the SAVE process is :
SELECT * from my_table_name WHERE id='123' and employee_name='Testing'
And if I want to add another parameter search by adding a third line :
I want to query is generated after clicking the button in the process is :
SELECT * from my_table_name WHERE id='123' and employee_name='Testing' and employee_id='111'
I have made a function to try to read the data from the form POST results like this :
$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>";
}
How do I get the data key and value from the POST results for later input into my query?
You are almost there, you just need to change your loop a little bit.
$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 . "'";
}
}
Keep in mind, this will only work if you submit at least one item to be queried against.
This also assumes that what you get back from $field is the name of the field in the database.
As an additional exercise, I strongly suggest that you look to see if you database implementation can use prepared statements. They are significantly more secure.