Нужно убрать или заменить

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2015

Вот такой PHP код:

<?php
require_once 'local_utils.php';

$isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
if(!$isAjax) {
  $user_error = 'Доступ запрещен - не запрос AJAX ...';
  trigger_error($user_error, E_USER_ERROR);
}

$term = trim($_GET['term']);

$a_json = array();
$a_json_row = array();

$a_json_invalid = array(array("id" => "#", "value" => $term, "label" => "Только латинские буквы и цифры разрешается ..."));
$json_invalid = json_encode($a_json_invalid);

$term = preg_replace('/\s+/', ' ', $term);

if(preg_match("/[^\040\pL\pN_-]/u", $term)) {
  print $json_invalid;
  exit;
}

$conn = new mysqli("localhost", "language", "language", "language");

if($conn->connect_error) {
  echo 'Подключение к базе данных не удалось ...' . 'Ошибка:' . $conn->connect_errno . ' ' . $conn->connect_error;
  exit;
} else {
  $conn->set_charset('utf8');
}

$parts = explode(' ', $term);
$p = count($parts);

$sql = 'SELECT url, post_title FROM posts WHERE date_published is not null ';
for($i = 0; $i < $p; $i++) {
  $sql .= ' AND post_title LIKE ' . "'%" . $conn->real_escape_string($parts[$i]) . "%'";
}

$rs = $conn->query($sql);
if($rs === false) {
  $user_error = 'Неправильный SQL ' . $sql . 'Ошибка: ' . $conn->errno . ' ' . $conn->error;
  trigger_error($user_error, E_USER_ERROR);
}

while($row = $rs->fetch_assoc()) {
  $a_json_row["id"] = $row['url'];
  $a_json_row["value"] = $row['post_title'];
  $a_json_row["label"] = $row['post_title'];
  array_push($a_json, $a_json_row);
}

$a_json = apply_highlight($a_json, $parts);

$json = json_encode($a_json);
print $json;
?>

Мне нужно заменить date_published is not null на LIMIT 10 (максимальный ответь до 10). Мне нужно только url, post_title и posts Помогите пожалуйста можно посмотреть здесь пример: http://www.pontikis.net/blog/jquery-ui-autocomplete-step-by-step

Ответы

▲ 2Принят

Не совсем понятно, что именно Вам нужно, и зачем убирать проверку на несуществующую дату публикации.

Чтобы добавить лимит получаемых строк, после цикла (когда у Вас формируется запрос $sql), добавьте этот самый ограничитель:

$sql = 'SELECT url, post_title FROM posts WHERE date_published is not null ';
for($i = 0; $i < $p; $i++) {
  $sql .= ' AND post_title LIKE ' . "'%" . $conn->real_escape_string($parts[$i]) . "%'";
}
$sql .= ' LIMIT 10';