Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2019, 20:59   #11
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Доброго времени суток Всем!

Подскажите пожалуйста по коду правильно ли я все сделал или что то может в нем можно изменить особенно меня мучает вопрос быстродействия и безопасности.
И второй вопрос: Как лучше сделать живой поиск что бы вывод пользователей был
в поиске был так же в таблице ... на данный момент то что я ввожу в input #search выводится в блоке div #resSearch сам поиск обращается к файлу search.php в котором написано всего лишь echo $_POST['search']; ... а когда я всё стираю в input у меня обновляется страница ... Вопрос как мне правильно до работать мой поиск?


Код:

<?php
include ('config.php');

include ('safemysql.class.php');
$db = new safeMysql($config_array);

$per_page = 10;

$cur_page = 1;
if (isset($_GET['page']) && $_GET['page'] > 0) 
{
    $cur_page = $_GET['page'];
}
$start = ($cur_page - 1) * $per_page;

$sql  = "SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT ?i, ?i";

$data = $db->getAll($sql, $start, $per_page);
$rows = $db->getOne("SELECT FOUND_ROWS()");

$num_pages = ceil($rows / $per_page);
$page = 0;

/*--для навигации страниц--*/

for($page; $page <= $num_pages; $page++) {

echo "<script>
$('#$page').click(function()
{
    $('.a-cont').load('users.php?page=$page')
});
</script>";

}
/*--для навигации страниц--*/
?>

<!--открыетие первой и последней странице стрелками в навигации-->
<script>
$('#start').click(function()
{
    $('.a-cont').load('users.php?page=0')
});

$('#end').click(function()
{
    $('.a-cont').load('users.php?page=<?php echo $num_pages; ?>')
});

</script>
<!--открыетие первой и последней странице стрелками в навигации-->

<!--Поиск-->
<input name="search" type="text" id="search">
<div id="resSearch">Начните вводить запрос</div>

<script type="text/javascript">
$(function(){
  $("#search").keyup(function(){
if ($("#search").val().length > 1) {
     var search = $("#search").val();
     $.ajax({
       type: "POST",
       url: "search.php",
       data: {"search": search},
       cache: false,                                 
       success: function(response){
          $("#resSearch").html(response);
       }
     });
} else if ($("#search").val().length == ''){

$(".a-cont").load("users.php");

}
     return false;
   });
});
</script>
<!--Поиск-->

<!--Таблица для вывода пользователей-->
<div class='d-table'>
  <div class='d-tr-th'>
    <div class='d-td d-td-border-left d-td-th'>Аватар</div>
    <div class='d-td d-td-border-left d-td-th'>Ник</div>
    <div class='d-td d-td-border-left d-td-border-right d-td-th'>Редактировать</div>
  </div>

<?php

foreach ($data as $users) {

echo "<script>
$('#" . $users["id"] . "').click(function()
{
    $('.a-cont').load('edit.php?user=" . $users["id"] . "')
});
</script>";

echo "

    <div class='d-tr'>
    <div class='d-td d-td-border-left'><img src='" . $users["avatar"] . " alt='avatar'></div>
    <div class='d-td'>" . $users["user"] . "</div>
    <div class='d-td d-td-border-right'><a class='edit' id='" . $users["id"] ."'>Редактировать</a></div>
    </div>";

}
?>

</div>
<!--Таблица для вывода пользователей-->
<!--Навигация для перелистывания страниц-->
<?php
if ( isset($_GET['page']) ) {
  $page = (int)$_GET['page'];
  if ( $page < 1 ) $page = 1;
} else {
  $page = 1;
}

$cnt_pages = ceil( $num_pages );
if ( $page > $cnt_pages ) $page = $cnt_pages;

$start = ( $page - 1 ) * $per_page;
?>
    <div class="links">
<?php
    if ( $page > 3 ){
        $startpage = '<a id="start"><<</a> ... ';
    } else {
        $startpage = '';
    }

    if ( $page < ($num_pages - 2) )
        $endpage = ' ... <a id="end">>></a>';
    else
        $endpage = '';

    if ( $page - 2 > 0 )
        $page2left = ' <a id="'.($page - 2).'">'.($page - 2).'</a> | ';
    else
        $page2left = '';
    if ( $page - 1 > 0 )
        $page1left = ' <a id="'.($page - 1).'">'.($page - 1).'</a> | ';
    else
        $page1left = '';
    if ( $page + 2 <= $num_pages )
        $page2right = ' | <a id="'.($page + 2).'">'.($page + 2).'</a>';
    else
        $page2right = '';
    if ( $page + 1 <= $num_pages )
        $page1right = ' | <a id="'.($page + 1).'">'.($page + 1).'</a>';
    else
        $page1right = '';

echo "<center>";
    echo $startpage.$page2left.$page1left.'<span class="in-page">'.$page.'</span>'.$page1right.$page2right.$endpage;
echo "</center>";
?>
</div>
<!--Навигация для перелистывания страниц-->
Рад буду любой критике и любому совету =)
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 27.01.2019, 22:49   #12
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

1.
PHP код:
 if (isset($_GET['page']) && $_GET['page'] > 0
{
    
$cur_page $_GET['page'];
}
$start = ($cur_page 1) * $per_page
что если я задам ....?page = bla-bla
надо типа
PHP код:
$cur_page intval($_GET['page'];) 

Последний раз редактировалось ADSoft; 27.01.2019 в 22:51.
ADSoft вне форума Ответить с цитированием
Старый 27.01.2019, 22:58   #13
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
1.
PHP код:
 if (isset($_GET['page']) && $_GET['page'] > 0
{
    
$cur_page $_GET['page'];
}
$start = ($cur_page 1) * $per_page
что если я задам ....?page = bla-bla
надо типа
PHP код:
$cur_page intval($_GET['page'];) 
А так в целом как код нормально написан или он из разряда г**нокода?

И с поиском как мне быть тут я просто с ним застрял =(

Цитата:
Сообщение от ADSoft Посмотреть сообщение
PHP код:
$cur_page intval($_GET['page'];) 
Сори за правку но точку с запятой не много не там стоит =)
Спасибо за этот совет уже сделал =)
"Я не волшебник, я только учусь"

Последний раз редактировалось s88s; 27.01.2019 в 23:05.
s88s вне форума Ответить с цитированием
Старый 27.01.2019, 23:00   #14
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

2. не очень критично... но все же, если я задам страницу как ?page=9999999... что будет? В одном запросе конечно круто и данные получить и их общее кол-во, но в таком случае вы не сможете проверить верхнюю границу страниц

3. отрисовка номеров станиц каждой в отдельности - жуть.... все надо в цикле.. .а вдруг не 5 старниц надо будет - а 105?

4. мешанина из кода php, html b js - отстой... .еще б css добавил )))

Не бойся кол-ва файлов... тут запретов нет

как вариант - сделай отдельно
1. php отдающий по номеру страницы json с списком пользователей и списком страниц пагинации
2. Html разметку + js который аяксово будет дергать 1 скрипт и отображать все (в том числе и первый раз)

вот и поучишься
ADSoft вне форума Ответить с цитированием
Старый 27.01.2019, 23:02   #15
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

насчет поиска я не очень понимаю чего надо...
опищи конечную задачу ...
и что не получается конкретно
ADSoft вне форума Ответить с цитированием
Старый 27.01.2019, 23:10   #16
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
2. не очень критично... но все же, если я задам страницу как ?page=9999999... что будет? В одном запросе конечно круто и данные получить и их общее кол-во, но в таком случае вы не сможете проверить верхнюю границу страниц

3. отрисовка номеров станиц каждой в отдельности - жуть.... все надо в цикле.. .а вдруг не 5 старниц надо будет - а 105?

4. мешанина из кода php, html b js - отстой... .еще б css добавил )))

Не бойся кол-ва файлов... тут запретов нет

как вариант - сделай отдельно
1. php отдающий по номеру страницы json с списком пользователей и списком страниц пагинации
2. Html разметку + js который аяксово будет дергать 1 скрипт и отображать все (в том числе и первый раз)

вот и поучишься
В том то и проблема с JS только и начал знакомится =(
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 27.01.2019, 23:13   #17
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
насчет поиска я не очень понимаю чего надо...
опищи конечную задачу ...
и что не получается конкретно
Вывод пользователей у меня сделан в таблице хочу что бы при вводе в поиске у меня в этой же таблице выводился результат весь при чем значения не имеет как это будет живой поиск или же через кнопку

Цитата:
Сообщение от ADSoft Посмотреть сообщение
и что не получается конкретно
Не понимаю как сделать =(

Цитата:
Сообщение от ADSoft Посмотреть сообщение
2. не очень критично... но все же, если я задам страницу как ?page=9999999... что будет? В одном запросе конечно круто и данные получить и их общее кол-во, но в таком случае вы не сможете проверить верхнюю границу страниц
Сделаю проверку если число будет больше то включится ?page=0 то есть первая страница

Цитата:
Сообщение от ADSoft Посмотреть сообщение
3. отрисовка номеров станиц каждой в отдельности - жуть.... все надо в цикле.. .а вдруг не 5 старниц надо будет - а 105?
Отрисовку делал через цикл но не хотел что бы у меня все страницы отображались и нашел такой вариант ... то есть он отображает максимум по 5 страниц и две стрелки в самое начало ( если требуется ) и в самый конец

Цитата:
Сообщение от ADSoft Посмотреть сообщение
как вариант - сделай отдельно
1. php отдающий по номеру страницы json с списком пользователей и списком страниц пагинации
2. Html разметку + js который аяксово будет дергать 1 скрипт и отображать все (в том числе и первый раз)
Как уже сказал JS начал только изучать
"Я не волшебник, я только учусь"

Последний раз редактировалось s88s; 27.01.2019 в 23:46.
s88s вне форума Ответить с цитированием
Старый 28.01.2019, 09:00   #18
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

ну че могу сказать... изучай
без понимания js с "живым поиском" нечего делать
Цитата:
Сообщение от s88s Посмотреть сообщение
Сделаю проверку если число будет больше то включится ?page=0 то есть первая страница
не сделаешь ... у тебя запрос на получение юзеров уходит уже с указанием начала,
а общее количество ты получишь только после запроса ))))
ADSoft вне форума Ответить с цитированием
Старый 28.01.2019, 10:23   #19
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
ну че могу сказать... изучай
без понимания js с "живым поиском" нечего делать
с JS тут понятно что нуно изучать ... где наша не пропадала =)

Цитата:
Сообщение от ADSoft Посмотреть сообщение
не сделаешь ... у тебя запрос на получение юзеров уходит уже с указанием начала,
а общее количество ты получишь только после запроса ))))
А как тогда лучше сделать?
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку C++: бесформатный ввод/вывод, форматный ввод/вывод david1506 Visual C++ 2 21.10.2015 09:03
вывод в див имен из бд и при нажатии вывод в отдельный див дополнительной информации об этом имени / PHP и базы данных looni123 JavaScript, Ajax 3 03.04.2014 21:26
Вывод на Си xapek Общие вопросы C/C++ 0 25.03.2012 17:59
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
вывод Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 15.02.2011 14:13