Я пытаюсь сделать систему поиска деталей (которая в основном работает), но я теряю некоторые символы в PHP var (только иногда). Если я напечатаю 1234 в текстовом поле, в текстовом поле всегда будет отображаться полный номер, который я набираю.Потеря входных символов в динамическом php mysql lookup
Но в части результатов будут отображаться номера, начинающиеся с 1234 в течение секунды секунды, после чего он потеряет 4 , то он потеряет 3, затем он потеряет 2, а затем отобразит partno с 1, и это останется. В большинстве случаев это так быстро, что похоже, что он просто сразу бросает все числа, но я наблюдаю за ним очень близко и его забрасывая один шар за раз.
вывод на экран - для тестирования
JS вар PARTNO показывает 1234
JS вар idxno показывает 1234
PHP вар idxno показывает 1
(это число 1234 является только примером, я использую случайные PARTNO от От 3 до 20 символов, и когда он выпадает, он всегда покидает первый символ.)
Если я использую клавишу backspace для удаления 4, тогда 23 вернется, и я снова смогу ввести 4, и php var idxno будет показать 1234, как и следовало бы.
Если я перезапущу сервер, он всегда будет в первый раз, когда я введу номер детали, иногда второй и третий раз, тогда он может работать нормально на 10-20 поисковых запросов, а затем повторится, он никогда не будет согласован ,
Если я запустил этот запрос в пустой базе данных, он отлично работает, никогда не отбрасывает числа.
Если я удалю предложение «ORDER BY», он почти всегда удаляет все символы, кроме первого. У меня есть этот базовый код, запущенный сейчас на моем первом проекте этой программы со всеми производителями в отдельных базах данных, и он отлично работает. Я пытаюсь объединить все производства в один файл базы данных и это, когда проблема началась.
С отдельными производствами самый большой прайс-лист, вероятно, составляет около 150 000 рядов.
Со всеми производителями в сочетании это около 750 000 рядов сейчас, и будет сделано чуть более 1 000 000 строк, когда это будет сделано.
Я бегу:
Debian свистящих 7,2
Apache версии 2.2.22
MySQL версии 5.5.38
PHP версии 5.4.4-14 + deb7u14
Я использую сервер Virtualbox писать и тестовый код, но я положил это на реальный сервер на LAN, и он делает то же самое.
Надеюсь, я дал достаточно информации для этой проблемы. Это моя первая попытка реальной программы как таковой, и я не могу понять способ устранения неполадок, что я делал это в течение нескольких месяцев и в первый раз , наконец решил обратиться за помощью.
Спасибо за любую помощь, которую я могу получить.
index.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript" src="js_php/jquery-1.11.1.js"></script>
<script type="text/javascript">
var npage = 0;
function part_lookup(cnt){
var action = "lookup";
var partno = document.getElementById("partno").value;
var idxno = partno.replace(/[^a-zA-Z0-9%]/g,'');
if (cnt == 'next') {npage = npage + 15;}
else if (cnt == 'prev') {npage = npage - 15;}
else {npage = 0;}
if (npage < 0) {npage = 0;}
$.post("js_php/partlookup.php", {action:action, idxno:idxno, npage:npage},
function(data){$("#part_data").html(data);});
}
</script>
</head>
<?php
$whereami='home';
// include("page_setup.php");
?>
<!--body--> <!--code will not validate w3c with this body tag, says tag already open ??-->
<div id="lookup">
<div>
<input id="Prev" type="button" value="Previous Page" onclick="part_lookup('prev')">
<input id="partno" type="text" name="partno" maxlength="20" autocomplete="off" autofocus onclick="this.value = ''" onkeyup="part_lookup()">
<input id="Next" type="button" value=" Next Page " onclick="part_lookup('next')">
</div>
</div>
<div id="part_data"></div>
</body>
</html>
partlookup.PHP
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
include("db_connect.vars.php");
// Make a MySQLi Connection
$db_connect = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$db_connect) {die('Connect Error ('.mysqli_connect_errno().') '.mysqli_connect_error());}
/*********************************************************************/
$idxno = $_POST['idxno'];
$page = $_POST['npage'];
echo "idxno = ".'<b>'.$idxno.'</b><br/>';
$result = mysqli_query($db_connect,
"SELECT PriceList.*, Inventory.instk AS instk, Inventory.ovrstk AS ovrstk, Inventory.used AS used
FROM PriceList
LEFT JOIN Inventory ON PriceList.mfg = Inventory.mfg
AND PriceList.idxno = Inventory.idxno
WHERE PriceList.idxno LIKE '$idxno%'
ORDER BY PriceList.idxno
LIMIT $page,15");
mysqli_close($db_connect);
?>
ОК, я сделал, как Джефф предложил я надеюсь,
mysql> SET GLOBAL general_log = 'ON';
Query OK, 0 rows affected (0.00 sec)
, а затем посмотрел на '/var/lib/mysql/debian-7.log' файл, это результаты
141012 18:07:30 148 Connect [email protected] on lawn2
148 Query
149 Connect [email protected] on lawn2
149 Query
149 Quit
150 Connect [email protected] on lawn2
150 Query
150 Quit
151 Connect [email protected] on lawn2
151 Query
151 Quit
141012 18:07:31 148 Quit
Существует 148 Выход после 151 Выход,
Так я добавил mysqli_close($db_connect);
в конце partlookup.php файла.
но без изменений, все еще такой же проблема.
Я бы написал заявление sql в файл журнала, чтобы проверить, что на этом фронте все в порядке. – jeff
Просто догадайтесь: измените этот вызов 'function (data) {$ (" # part_data "). Html (data);', чтобы возвращать константу вместо поиска. Я подозреваю, что он не используется правильно. – ethrbunny
Этот код 'function (data) {$ (" # part_data "). Html (data);' в настоящее время не возвращает никаких данных, кроме значения idxno из файла php. в настоящее время я просто передаю var idxno в partlookup.php и запускаю запрос mysql, данные не возвращаются для тестирования, за исключением текущего значения idxno. – JimmyA