Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.06.2016, 16:40
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Прошу помощи по связке 2х скриптов в 1
Здравствуйте! Нашел скрипт динамической подгрузки данных из бд по клику на кнопку - http://ajaxs.ru/lesson/ajax/127-dina..._stranicu.html , и пытаюсь внедрить в мой скрипт сортировки данных из бд, но не получается объеденить их в 1 рабочий скрипт, помогите пожалуйста найти ошибку и исправить ее, вот сам код:
Код сортировки данных из бд на ajax(основной):
<script type="text/javascript">
 
$(function() {
 
  $(".search_button").click(function() {
  // получаем то, что написал пользователь
  var searchString  = $("#search_box").val();
  var citysearhc  = $("#selss").val();
  var categorysear  = $("#catsea").val();
  // если searchString не пустая
 
  // делаем ajax запрос
  $.ajax({
  type: "POST",
  url: "/search.php",
  data: {search: searchString, xfsearh: citysearhc, xfsearh2: categorysear },
  beforeSend: function(html) { // запустится до вызова запроса
  $("#results").html('');
  $("#searchresults").show();
            $(".word").html(citysearhc);
  },
  success: function(html){ // запустится после получения результатов
 
           $("#results").hide("fast").append(html).show("slow");
       
  }
  });
 
  return false;
  });
});
</script>



Код динамической подгрузки данных на страницу:
<script type="text/javascript">
$(document).ready(function(){
   $("#imgLoad").hide();  //Скрываем прелоадер
});
var num = 2; //чтобы знать с какой записи вытаскивать данные
$(function() {
   $("#load div").click(function(){ //Выполняем если по кнопке кликнули
   $("#imgLoad").show(); //Показываем прелоадер
   $.ajax({
          url: "/search.php",
          type: "POST",
          data: {"num": num},
          cache: false,
          success: function(response){
              if(response == 0){  // смотрим ответ от сервера и выполняем соответствующее действие
                 alert("Больше нет записей");
                 $("#imgLoad").hide();
              }else{
                 $("#results").append(response);
                 num = num + 2;
                 $("#imgLoad").hide();
              }
           }
        });
    });
});
</script>


И сам код обработки данных:
<?php
  include('db.php');
    $db = new db();
 
//получаем данные через $_POST
if (isset($_POST['search'])) {
$num = $_POST['num'];

     $word = mysql_real_escape_string($_POST['search']);
    $word2 = mysql_real_escape_string($_POST['fsearh']);
    $word3 = mysql_real_escape_string($_POST['fsearh2']);
$temp = array();

if (isset($_POST['search'])) {
    $temp[] = "title LIKE '%" . $_POST['search'] . "%'";
}
if ($_POST['fsearh2'] == "0") {
 
} else {
   
     $temp[] = "category LIKE '%" . $_POST['fsearh2'] . "%'";
}
if ($_POST['fsearh'] == "0") {
 
} else {
   
      $temp[] = "fields LIKE '%" . $_POST['fsearh'] . "%'";
}
 
$sql = "SELECT * FROM post WHERE " . implode(' AND ', $temp) . ' LIMIT '.$num.', 3';
    // Получаем результаты
    $row = $db->select_list($sql);
    if(count($row)) {
        $end_result = '';
       
        foreach($row as $r) {
            $content = $r['short_story'];
            preg_match('/<img(.*)src(.*)=(.*)"(.*)"/U', $content, $regexResult);
$firstImgScr = array_pop($regexResult);
           
            $end_result     .= <<<HTML
          
                        <img src="{$firstImgScr}"/>
                        <p>{$r['title']}</p>
             
HTML;
        }
        echo $end_result;
    } else {
        echo '<li>По вашему запросу ничего не найдено</li>';
    }
}
 
?>


Не могу врубиться как эти 2 скрипта объеденить чтобы можно было и сортировать данные по клику на кнопку(но при этом чтобы выводились к примеру 10 записей из бд, а остальное по клику на кнопку Загрузить еще), то бишь я нажал Сортировать и вывелось 10 записей по моим параметрам, затем ниже нажал кнопку Загрузить еще и появилось еще 10 записей по этим параметрам(если они есть в бд)

Может оставить эти 2 скрипта в работе, и попробовать сделать на php проверку на отправку post num? если он есть то менять выборку...хотя вряд ли поможет

Последний раз редактировалось PonyS, 05.06.2016 в 17:34.
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2016, 16:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Во-первых так делать запросы к базе, а во-вторых сортировка выборки вообще не указывается.
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2016, 16:56
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от laimas Посмотреть сообщение
Во-первых так делать запросы к базе, а во-вторых сортировка выборки вообще не указывается.
Я по этому и прошу вашей помощи чтобы исправить ошибку...

Пробовал только что менять в коде обработки
if (isset($_POST['search'])) на if (isset($_POST['search']) or isset($_POST['num']))
и добавил вот такую проверку
$num = $_POST['num'];
if(isset($num)){
	$limirs = "{$num},2";
} else {
	$limirs = "2";
}
$sql = "SELECT * FROM post WHERE " . implode(" AND ", $temp) . " LIMIT {$limirs}";
, данные подгружает, но дублирует их после нажатия на кнопку Загрузить еще и почему-то сортирует уже не так, а как-то неправильно совсем...Подскажите пожалуйста, где рыть и как...Заранее спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2016, 17:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сортировка запроса это ORDER BY field_name как минимум, а WHERE, это условия выборки. Надо чтобы клиент задавал сортировку (по каким полям и направление, а может и условия), значит эти параметры сортировки клиент и должен передавать серверу.

А что касаемо первого замечания, то оно касается безопасности - в вашем запросе дыра, которая позволяет манипулировать клиенту с вашей базой.
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2016, 17:11
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Да, все верно, в запросе не сортировка, а условие выборки, и условие в запросе работает как нужно. У меня проблема в другом, у меня не получается адаптировать к моему модулю скрипт подгрузки следующих записей по клику на кнопку. То бишь в начале выводиться 5 новостей, а потом по клику на кнопку подгружается еще 5 по этом же условии выборки
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2016, 17:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от PonyS
То бишь в начале выводиться 5 новостей, а потом по клику на кнопку подгружается еще 5 по этом же условии выборки

Это не сортировка, это ограничение выборки - LIMIT. Так организовывается постраничная навигация, суть которой проста - получается общее количество записей в таблице, которое делится на определенное число записей на странице N, таким образом получая всего страниц. Далее серверу передается номер страницы number_page, которое умножается на число записей на странице и получаются параметры для LIMIT - N * number_page, N.

То есть клиент должен иметь либо страничный навигатор, либо увеличивать/уменьшать число как параметр страницы, а сервер будет отдавать требуемое.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи с формой обратной связи markfostel jQuery 14 14.10.2015 00:29
прошу помощи с autocomplete uj query ramko AJAX и COMET 2 27.09.2013 20:35
Прошу помощи xavi AJAX и COMET 8 28.01.2013 10:36
Прошу помощи xavi Работа 3 25.01.2013 13:06
Прошу помощи скриптеров или кого либо кто поможет :) f00rZik Общие вопросы Javascript 13 05.01.2012 03:42