Intereting Posts
Исключение «сеанс уже запущено …» в приложении Zend Framework Отправить письмо с localhost на XAMMP в PHP с помощью почтового сервера GMAIL Вызов функции-члена bind_param () для не-объекта, не работающего внутри функции, вызванного из другой функции Magento: setCouponCode, похоже, не применяет купон по модели цитаты Где хранятся статические блоки CMS Magento? Тест PHPUnit Сколько раз вызывается функция Массивы PHP … Что означает / является значение (ы) пустой скобки? Проектирование баз данных для голосовых кнопок Флажок с массивом внутри цикла False Результат? Как закодировать php-функцию или задать параметры для возврата значений высоты NO для изображений? PHP отображает символы \ r \ n при отражении в Textarea Как удалить все после пробела в PHP? Действие формы CodeIgniter не работает должным образом как обеспечить ссылку для загрузки уже заархивированных файлов в php Подход формы формы PHP к Django's ___?

Изменение примера базы данных AJAX PHP

Я хотел бы создать что-то вроде этого шоу здесь:

http://www.w3schools.com/PHP/php_ajax_database.asp

Но вместо выпадающего списка, показанного в примере, можно ли изменить его на формат таблицы, например, когда я нажимаю на класс 1, он будет отображать детали для класса 1 … подробности в моей базе данных из phpmyadmin :

Спасибо заранее … очень благодарен

Это верно?

<?php include ('staffheader.php'); ?> <div id="head">Permit Structure</div> <div class="contents"> <div id="class_data"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td>Road Based</td> <td>Proving Ground PG</td> <td>Off Road OR</td> <td>Towing TT</td> </tr> <tr id="Class_1"> <td> <a href='#' class='classlink' title='1'>Class 1</a></td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>Class 2</td> <td>CAT 2PG</td> <td>CAT 1OR</td> <td>CAT 2TT</td> </tr> <tr> <td>Class 3</td> <td>CAT 3PG</td> <td>CAT 2OR</td> <td>CAT 3TT</td> </tr> <tr> <td>&nbsp;</td> <td>CAT 4PG</td> <td>CAT 3OR</td> <td>&nbsp;</td> </tr> </table> </div> <div id="instruction">Click on the Class or Category to view information on it</div> </div> <div id='detailtable'></div> <?php include('allfooter.php'); ?> 

loadergetclassinfo.php:

 <?php $class_id = empty($_POST["class_id"]) ? 1 : $_POST["class_id"]; $con = mysql_connect("localhost", "root", "cailing8195") or die ("Unable to connect to MySQL Server " . mysql_error()); if(is_resource($con)) $db = mysql_select_db("jlr", $con) or die( "Unable to select database " . mysql_error()); $query = "SELECT PTYPE, TYPE, PREREQ, DES FROM type WHERE TYID=" . $class_id; $res = mysql_query($query); $arr_data = mysql_fetch_assoc($res); mysql_close($con); foreach ($arr_data as $data) $html = "<table>\n"; $html .= "<tr><th>Type ID</th><th>Permit Type</th><th>Categories</th><th>Pre-Requisisite</th><th>Description</th></tr>\n"; $html .= "<tr><td>" . $class_id . "</td><td>" . $data['PTYPE'] . "</td><td>" . $data['TYPE'] . "</td><td>" . $data['PREREQ'] . "</td><td>" . $data['DES'] . "</td> </tr>\n"; $html .= "</table>\n"; echo $html; ?> 

JQuery (в javascript.js):

  $(function() { $('a.class_link').click(function() { var class_id = $(this).attr('title'); $.post("loadergetclassinfo.php", {class: class_id}, function(result){ $('#detail_table').html(result); }); }); }); 

И я добавляю это внутри моего php-файла заголовка тоже:

  <script src="javascript.js"></script> <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> 

Если вы хотите, чтобы строка, в которой вы нажимаете ссылку, которая заполняется данными из базы данных, сделайте что-то вроде этого (непроверено, но вот суть):

HTML:

 <tr id='class_1'> <td><a href='#' class='classlink' title='1'>Class 1</a></td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> 

JQuery:

 $(function() { $('a.classlink').click(function() { var class_id = $(this).attr('title'); $.post("loadergetclassinfo.php", {class_id: class_id}, function(result){ $('#class_' + class_id).html(result); }); }); }); 

loadergetclassinfo.php:

 <?php $class_id = empty($_POST["class_id"]) ? 1 : $_POST["class_id"]; $con = mysql_connect("localhost", "your_MySQL_username", "your_MySQL_password") or die ("Unable to connect to MySQL Server " . mysql_error()); if(is_resource($con)) $db = mysql_select_db("your_MySQL_database", $con) or die( "Unable to select database " . mysql_error()); $query = "SELECT data1, data2, data3 FROM your_data_table WHERE class=" . $class_id; $res = mysql_query($query); $arr_data = mysql_fetch_assoc($res); mysql_close($con); $html = "<td><a href='#' class='classlink' title='$class_id'>Class $class_id</a></td>"; foreach ($arr_data as $data) $html .= "<td>" . $data . "</td>\n"; echo $html; ?> 

ОБНОВИТЬ:

Если вы хотите, чтобы данные «Class x» отображались где-то еще на вашей HTML-странице, вы можете сделать что-то вроде этого:

Добавьте это в свой HTML:

 <div id='class_data'></div> 

Измените выше jQuery следующим образом:

 $.post("loadergetclassinfo.php", {class: class_id}, function(result){ $('#class_data').html(result); }); 

Измените выше php-код на что-то вроде этого (или вы можете использовать список или что-то, что вам нравится здесь):

 $html = "<table>\n"; $html .= "<tr><th>Class Number</th><th>Data 1</th><th>Data 2</th><th>Data 3</th></tr>\n"; $html .= "<tr><td>" . $class_id . "</td><td>" . $data['data1'] . "</td><td>" . $data['data2'] . "</td><td>" . $data['data3'] . "</td></tr>\n"; $html .= "</table>\n"; echo $html; 

Это предполагает, что у вас есть столбцы с именем data1 т. Д., И ваш основной индекс называется «классом». Просто измените его на то, что в вашем случае.

ОБНОВЛЕНИЕ В ОТВЕТ НА ВАШИ ИЗМЕНЕНИЯ:

Завершите свой код HTML:

 <div id='detailtable'></div> 

Измените этот оператор jQuery:

 $.post("loadergetclassinfo.php", {class: class_id}, function(result){ $('#detailtable').html(result); }); 

Наконец, удалите php-код снизу вашей таблицы HTML и поместите его в собственный файл под названием loadergetclassinfo.php в том же каталоге, что и файл HTML.

ТАКЖЕ, это неправильно (извините, ошибка была в моем коде):

 $class_id = empty($_POST["class_id"]) ? 1 : $_POST["class"]; 

Должно быть:

 $class_id = empty($_POST["class_id"]) ? 1 : $_POST["class_id"]; 

Также измените код таблицы данных:

 $html = "<table>\n"; $html .= "<tr><th>Type ID</th><th>Permit Type</th><th>Categories</th><th>Pre- Requisisite</th><th>Description</th></tr>\n"; $html .= "<tr><td>" . $class_id . "</td><td>" . $data['PTYPE'] . "</td><td>" . $data['TYPE'] . "</td><td>" . $data['PREREQ'] . "</td><td>" . $data['DES'] . "</td></tr>\n"; $html .= "</table>\n"; 

вы можете попытаться использовать функцию ajax из jquery, это может быть что-то вроде этого снова, вы можете изменить его.

  <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td>Road Based</td> <td>Proving Ground PG</td> <td>Off Road OR</td> <td>Towing TT</td> </tr> <tr> <td onclick="getPage(this)" >Class 1</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <div id='content'></div> <script type="text/javascript"> function getPage(class) { //generate the parameter for the php script var data = 'page=' + document.location.hash.replace(/^.*#/, ''); $.ajax({ url: "loadergetclassinfo.php", type: "GET", data: (class).innerText, cache: false, success: function (html) { //add the content retrieved from ajax and put it in the #content div $('#content').html(html); //display the body with fadeIn transition $('#content').fadeIn('slow'); } }); } </script>