Nano Hash - криптовалюты, майнинг, программирование

Добавление разбивки на страницы (сохранение данных публикации) с помощью jQuery

Я ищу хороший способ настроить нумерацию страниц в моей форме поиска, я хочу, чтобы она отображала данные в зависимости от количества записей на странице, которую выбирает пользователь. Это значение они вводят под своим результатом поиска и получают через $_POST['searchamount']. Затем я попытался настроить простую разбивку на страницы, следуя некоторым руководствам, но у меня возникли проблемы, поскольку следующие страницы не будут работать для отображения каких-либо данных, я полагаю, это потому, что мой сценарий поиска требует, чтобы значение $_POST['search'] быть правдой означает, что кто-нибудь отправит форму, и при нажатии на цифры для прокрутки страниц результатов она просто перенаправит, например, на search.php?page=1. Как добавить дополнительный способ, чтобы он мог продолжить поиск, при этом сделав его безопасным?

Я читал в Интернете, что есть несколько крутых способов сделать это с помощью jQuery, я бы предпочел, чтобы он был таким, когда автоматически отображались следующие результаты, не покидая страницу.

Вот пример того, что я пробовал

<?php while($row = mysqli_fetch_array($result)): ?>
    <tr>
        <td><?php echo $row['FactionName'];?></td>
        <td><?php echo $row['MoneyBalanceFormatted'];?></td>
        <td><?php echo $row['SpawnerWorthFormatted'];?></td>
        <td><?php echo $row['BlockWorthFormatted'];?></td>
        <td><?php echo $row['ItemWorthFormatted'];?></td>
        <td><?php echo $row['TotalWorthFormatted'];?></td>
        <td><?php echo $row['RichestMember'];?></td>
    </tr>
<?php endwhile;?>
<?php
    $page_query = "SELECT * FROM  ORDER BY TotalWorth DESC";
    $page_result = mysqli_query($con, $page_query);
    $total_records = mysqli_num_rows($page_result);
    $total_pages = ceil($total_records/$record_per_page);
    $start_loop = $page;
    $difference = $total_pages - $page;
    if($difference <= 5)
    {
     $start_loop = $total_pages - 5;
    }
    $end_loop = $start_loop + 4;
    if($page > 1)
    {
     echo "<a href='search.php?page=1'>First</a>";
     echo "<a href='search.php?page=".($page - 1)."'><<</a>";
    }
    for($i=$start_loop; $i<=$end_loop; $i++)
    {     
     echo "<a href='search.php?page=".$i."'>".$i."</a>";
    }
    if($page <= $end_loop)
    {
     echo "<a href='search.php?page=".($page + 1)."'>>></a>";
     echo "<a href='search.php?page=".$total_pages."'>Last</a>";
    }


    ?>

Хотя мой пример вообще не работает должным образом, он даже отображает ошибку, когда mysqli_num_rows возвращает логическую ошибку.


  • он даже отображает ошибку, когда mysqli_num_rows возвращает логическую ошибку. Это потому, что вы не указали имя таблицы в своем запросе. 03.10.2017
  • Смотрите мой ответ здесь stackoverflow.com/questions/46055722/ и соответствующим образом адаптируйте то, что вам нужно 03.10.2017
  • как неловко... Я написал это, но случайно удалил. Спасибо @PatrickQ 03.10.2017

Ответы:


1

Вас может заинтересовать datatables — подключаемый модуль jquery для таблиц. По сути, вам придется удалить логику разбиения на страницы в вашем фрагменте, чтобы остались только биты рендеринга таблицы. Затем используйте javascript, чтобы включить разбиение на страницы и выбор записей на странице в таблице благодаря datatables. Посетите их веб-сайт для руководств и примеров.

У меня часто есть такая структура в моем коде. Сначала цикл для заполнения заголовка, нижнего колонтитула и тела таблицы данными из SQL-запроса.

    <?php if( isset($report['rows']) && count($report['rows']) > 0 ): ?>
        <div id="report-table-container">
            <table id="report-table" class="uk-table uk-table-hover uk-table-striped" cellspacing="0" width="100%">
                <thead>
                    <tr>
                    <?php foreach( $report['cols'] as $k => $v ): ?>
                        <th> <?= $v ?> </th> 
                    <?php endforeach ?>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                    <?php foreach( $report['cols'] as $k => $v ): ?>
                        <th> <?= $v ?> </th> 
                    <?php endforeach ?>
                    </tr>
                </tfoot> 
                <tbody>
                    <?php foreach($report['rows'] as $index => $entry): ?>
                    <tr>
                        <?php foreach( $report['cols'] as $k => $v ): ?>
                        <td> <?= $entry[$k] ?> </td> 
                        <?php endforeach ?>
                    </tr> 
                    <?php endforeach ?>
                </tbody>        
            </table>
        </div>  
        <?php endif ?>

Обратите внимание, что таблица имеет атрибут id='report-table'. Используйте это в своем javascript, чтобы включить разбиение на страницы в этой таблице. Вот так

<script>
$(document).ready(function() {
    $('#report-table').DataTable({
        dom: 'tipl'
    })
</script>

Параметр dom указывает элементы, которые будут добавлены в вашу таблицу. Например, l определяет раскрывающийся список для выбора количества элементов на странице. Убедитесь, что вы импортировали файлы jQuery и DataTable js и css.

02.10.2017
  • Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. 03.10.2017
  • Спасибо, это похоже на очень эффективный способ сделать то, что я искал. Вы совпали с тем, что я искал. Пожалуйста, скажите мне, будет ли этот пример тем, что я искал с нумерацией страниц? datatables.net/examples/basic_init/alt_pagination.html Также как я буду реализовывать это в мой текущий поисковый скрипт? Должен ли я просто начать заново и удалить свой скрипт и следовать этому руководству, а затем воссоздать запрос после, чтобы отобразить данные таблицы в цикле? 03.10.2017
  • Я отредактировал ответ, включив в него фрагменты кода. Надеюсь, они прольют больше света на процедуру 03.10.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..