I’m trying to work with AJAX autocompletes and I am having a few problems with getting the two languages to work in synergy.
When I replace all the issets with only 1 $_POST the snippet below will work, however by adding another $_POST I get an error on line 5.
<?php
require_once '../Configuration.php';
if (isset($_POST['search_term'] . $_POST['postcode']) == true && empty ($_POST['search_term'] . $_POST['postcode']) == false) {
$search_term = mysql_real_escape_string($_POST['search_term'] . $_POST['postcode']);
$query = mysql_query("SELECT `customer_name`,`postcode` FROM `Customers` WHERE `customer_name` LIKE '$search_term%' ");
while(($row = mysql_fetch_assoc($query)) !== false) {
//loop
echo '<li>',$row['customer_name'] . $row['postcode'] '</li>';
}
}
?>
Any advice on why it is throwing this error would be much appreciated. Thanks.
I understand I should be using mysqli, I am just trying to get the logic first 🙂
Js:
Primary.js:
$(document).ready(function() {
$('.autosuggest').keyup(function() {
var search_term = $(this).attr('value');
var postcode = $_GET['postcode'];
//alert(search_term); takes what is typed in the input and alerts it
$.post('ajax/search.php', {search_term:search_term, postcode:postcode}, function (data) {
$('.result').html(data);
$('.result li').click(function() {
var result_value = $(this).text();
$('.autosuggest').attr('value', result_value);
$('.result').html('');
});
});
});
});
The parameter(s) to
isset()must be a variable reference and not an expression (in your case a concatenation); but you can group multiple conditions together like this:This will return
trueonly if all arguments toisset()are set and do not containnull.Note that
isset($var)andisset($var) == truehave the same effect, so the latter is somewhat redundant.Update
The second part of your expression uses
empty()like this:This is wrong for the same reasons as above. In fact, you don’t need
empty()here, because by that time you would have already checked whether the variables are set, so you can shortcut the complete expression like so:Or using an equivalent expression:
Final thoughts
You should consider using
filterfunctions to manage the inputs:Btw, you can customize your filters to check for various parts of the submitted values.