Проблема рендеринга, связанная с тегами div, содержащими datatable

This is my first post on some Q&A site. Point out my tiniest mistakes and correct me. I've started learning PHP and I am using WAMP server. I am having multiple rendering issues. I will present one first. I have an index.php page on which I want to display five tables namely Branch, Student, Subject, Exam and Marks. Now I have kept display buttons for each tables mentioned above on the same page. I don't want the page to get refreshed so the input type for the button is "button" not "submit". And then I want to check if the button is clicked or not so I am using isset($_POST['button']) where button is the name of display button for respective table. And if the button is clicked then I am displaying the datatable for that particular table only while other tables are hidden.

Рендеринг одной таблицы за раз: я хочу, чтобы при нажатии кнопки «Показать ветку таблицы» отобразилась таблица Branch, а после этого, если я нажму кнопку Display Student Table, тогда должна отображаться таблица Student, а остальные таблицы должны быть отображены скрыты, а также для всех таблиц. Теперь приведенный ниже код имеет jquery, который слишком избыточен, и я хочу его оптимизировать. Кроме того, у меня есть часть моего кода PHP, в котором отображается таблица ветвей, тег div тега - branch1, а для ученика - ученик1 и аналогично. При нажатии на кнопку ветви дисплея я ничего не вижу. Это означает, что if (isset ($ _ POST ['display_branch'])) не работает при нажатии кнопки. Также есть тег div для каждой таблицы и имеет другой идентификатор, но тот же класс (например, рендер) Я хотел бы знать, где я здесь не прав, и я не хочу, чтобы страница была перезагружена снова.

JQuery:

$('.render').hide();
$('#display_branch').click(function (event) {
    $('#student1').hide();
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').show();
});

$('#display_student').click(function (event) {
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').show();
});
$('#display_subject').click(function (event) {
    $('#subject1').show();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').hide();
});
$('#display_exam').click(function (event) {
    $('#subject1').hide();
    $('#exam1').show();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').hide();
});
$('#display_marks').click(function (event) {
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').show();
    $('#branch1').hide();
    $('#student1').hide();
});

Кнопки дисплея:

       <div id="display" style="position:absolute; top:100px;">
       <form action="" method="post">
       <input type="button" id="display_branch" name="display_branch" value="Display Branch Table" >
       <input type="button" id="display_student" name="display_student" value="Display Student Table">
       <input type="button" id="display_subject" name="display_subject" value="Display Subject Table">
       <input type="button" id="display_exam" name="display_exam" value="Display Exam Table">
       <input type="button" id="display_marks" name="display_marks" value="Display Marks Table">
       </form>
       </div>

Фрагмент кода PHP:

   if(isset($_POST['display_branch']))
   {
   $result = mysql_query("SELECT * FROM branch");?>
 <div class="render" id="branch1" style="position:absolute; left:200px; top:150px;">
        <table id="datatables" class="display">
            <thead>
                <tr>
                    <th>Branch ID</th>
                    <th>Branch Name</th>
                </tr>
            </thead>
            <tbody>
                <?php
                while ($row = mysql_fetch_array($result)) {
                $branch_id= $row['branch_id'];
                $branch_name = $row['branch_name'];?>
                    <tr>
                        <td><?php echo $branch_id;?></td>
                        <td><?php echo $branch_name;?></td>                         
                    </tr>
                    <?php
                }
                ?>
            </tbody>
        </table>
    </div>}

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

0
nl ja de

2 ответы

Это не полное решение вашей проблемы, но это определенная оптимизация вашего кода jQuery. Я создал фиктивный сценарий вашей проблемы. Вы можете получить некоторую помощь от этого кода:

<�Сильный> HTML:

<div id="tables">
    <table id="branch1">
    </table>
    <table id="subject1">
    </table>
    <table id="student1">
    </table>
    <table id="marks1">
    </table>
    <table id="exam1">
    </table>
</div>

<�Сильный> jQuery

$('#display_branch').click(function (event) {
    var table = $(this).attr(id).split("_");
    $("#tables").find("table").hide();
    $("#"+table[1]+"1").show();
});
0
добавлено
Спасибо за ответ. Это столкнутся с моей второй проблемой рендеринга, которую я опубликую после того, как это будет разрешено. На самом деле я использовал плагин jQuery для отображения таблиц в формате datatables. Чтобы сохранить это форматирование, я должен поддерживать атрибут таблицы id как атрибут datatables и table class как «display», либо отображается стандартная таблица.
добавлено автор SilentAssassin, источник
$_POST['display_branch']

Для этого требуется запрос POST с параметром display_branch.

У вас есть в основном два варианта скрыть/показать такие элементы.

0
добавлено
Спасибо за быстрый ответ. Я постараюсь выполнить вышеупомянутые предложения и вернуться к вам.
добавлено автор SilentAssassin, источник
Большое спасибо. Что касается второго подхода, как можно добиться того же, используя ajax?
добавлено автор SilentAssassin, источник
Поэтому я должен использовать кнопки дисплея, упомянутые в моем вопросе, вместо ссылок, упомянутых в решении? Если «да», тип ввода для каждой кнопки должен быть отправлен, или иначе почтовый запрос не будет сгенерирован. Это верно ? И я не получаю сущность параметра данных функции ajax. Что такое display_area в нем и что «1» после display_branch?
добавлено автор SilentAssassin, источник
Как насчет display_area? Является ли этот идентификатор определяемым в отдельном файле php?
добавлено автор SilentAssassin, источник
Хорошо, я думаю, это поможет мне. Еще раз спасибо !!
добавлено автор SilentAssassin, источник
У вас может быть отдельная страница, которая будет содержать ваш PHP-код, как показано в исходном вопросе. F.E. if ($ _POST ['display_branch']) {die ('My wanted content'); }, а затем вы запрашиваете страницу с $ .ajax() следующим образом $ .ajax ({type: "POST", url: "some.php", data: {display_branch: "1"}}). done (function ( данные) {$ ('# display_area'). html (data);});
добавлено автор mononot, источник
вы можете вызвать функцию $. ajax() с любым элементом (ссылкой или кнопкой). Просто убедитесь, что вы передаете данные POST в параметре data </​​b> функции $. Ajax() . 1 есть необязательный, его просто некоторая ценность для назначения. Это также может быть правдой или любым другим.
добавлено автор mononot, источник
jsfiddle.net/sLXMU/3 попробуйте этот код
добавлено автор mononot, источник
его настраивают на ваши нужды (переменная данных изменяется на строку запроса, так как мы можем внести переменную параметра POST). А область отображения - это место, где потом загружается ваш контент.
добавлено автор mononot, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing