Reputation:
I have a JavaScript that runs a POST method once my datepicker has been out of focus (I also tried this on a regular submit button) and runs the script rent-fetch-pick-up-point.php
. The PHP runs, however it doesn't get past the if-statement because my it's not getting the POST data. The datepicker is tied to a input field time-period-from
datepickerTo.blur(function(){
if (selectedDateFrom.length > 0) {
datepickerFrom.delay(500).queue(function(){
$.ajax({
type: "POST",
url: "include/rent-fetch-pick-up-point.php",
data: {action: selectedDateFrom},
success: function(data) {
$("#pick-up-point-container").html(data);
}
});
});
}
});
Here is the PHP code:
if (isset($_POST['time-period-from'])) {
require '../include/connection.php';
$dateFrom = $_POST['time-period-from'];
$sql = "SELECT * FROM order WHERE $dateFrom BETWEEN date_from AND date_to";
$result = mysqli_query($connection, $sql);
$numRows = mysqli_num_rows($result);
echo $sql; // For testing purposes
}
And here's the HTML:
<input type="text" name="time-period-from" id="datepicker-from" class="datepicker"></p>
I also tried using $.post() instead of $.ajax(), but I ran into the same issue:
$.post("include/rent-fetch-pick-up-point.php", {name: selectedDateTo}, function(data) {
$("#pick-up-point-container").text(data)
});
Upvotes: 1
Views: 151
Reputation: 782508
The keys of $_POST
come from the keys of the object you pass to the data:
option, not the names of the form fields where the values originally came from. Since you used:
data: { action: selectedDateFrom }
the value will be in $_POST['action']
, not $_POST['time-period-from']
. So you need to use:
if (isset($_POST['action']))
and:
$dateFrom = $_POST['action'];
or you could change the Javascript to:
data: { "time-period-from": selectedDateFrom }
Upvotes: 2
Reputation: 2799
You aren't grabbing the right variable on the PHP side:
if (isset($_POST['action'])) {
require '../include/connection.php';
$dateFrom = $_POST['action'];
$sql = "SELECT * FROM order WHERE $dateFrom BETWEEN date_from AND date_to";
$result = mysqli_query($connection, $sql);
$numRows = mysqli_num_rows($result);
echo $sql; // For testing purposes
}
Upvotes: 0
Reputation: 2202
I think your selectedDateFrom variable is array that cause your post info can't you get properly .
data: {action: $('#selectedDateFrom').serializeArray()}
then you get your form data properly
Upvotes: 0