Следующий PHP-код работает нормально, несмотря на одно действительно странное поведение. Первый элемент всегда не учитывается. Позвольте мне пояснить пример. Представьте, что у меня в моем db следующие элементы для столбца srl_loc:
Если $ term = «Paris», то первый пункт «Paris (75)» будет лишен выхода. Файл php показывает только следующее:
Надеюсь, кто-то может помочь. Заранее благодарю за ваши ответы. Приветствия. Марк.
Мой PHP:
<?php header('Content-Type: text/html; charset=utf-8'); require("../inc/connect.inc.php"); mysql_set_charset('utf8'); $term = mysql_real_escape_string($_GET['term']); $result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"'); $row=mysql_fetch_assoc($result); $return = array(); while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));} echo(json_encode($return)); ?>
Вы вызываете mysql_fetch_assoc дважды, один раз перед $ return =, затем один раз для каждого цикла. Первый из них отбрасывается, следовательно, потерянная строка.
Итак, это должно быть:
<?php header('Content-Type: text/html; charset=utf-8'); require("../inc/connect.inc.php"); mysql_set_charset('utf8'); $term = mysql_real_escape_string($_GET['term']); $result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"'); $return = array(); while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));} echo(json_encode($return)); ?>
в<?php header('Content-Type: text/html; charset=utf-8'); require("../inc/connect.inc.php"); mysql_set_charset('utf8'); $term = mysql_real_escape_string($_GET['term']); $result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"'); $return = array(); while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));} echo(json_encode($return)); ?>
Вытащите первую $row=mysql_fetch_assoc($result);
<?php header('Content-Type: text/html; charset=utf-8'); require("../inc/connect.inc.php"); mysql_set_charset('utf8'); $term = mysql_real_escape_string($_GET['term']); $result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"'); $return = array(); while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));} echo(json_encode($return)); ?>
в<?php header('Content-Type: text/html; charset=utf-8'); require("../inc/connect.inc.php"); mysql_set_charset('utf8'); $term = mysql_real_escape_string($_GET['term']); $result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"'); $return = array(); while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));} echo(json_encode($return)); ?>
Вы звоните
$row=mysql_fetch_assoc($result);
прежде чем вы начнете перебирать записи с помощью
while($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));}
вwhile($row=mysql_fetch_assoc($result)){ array_push($return,array('value'=>$row['srl_loc']));}
Вот где вы читаете и отбрасываете первую запись в наборе результатов