За последние 24 часа нас посетили 17957 программистов и 1634 робота. Сейчас ищет 981 программист ...

Вывод данных в таблицу по фильтру без перегрузки страницы

Тема в разделе "JavaScript и AJAX", создана пользователем sapun, 22 дек 2011.

  1. sapun

    sapun Активный пользователь

    С нами с:
    30 авг 2011
    Сообщения:
    30
    Симпатии:
    0
    Доброго времени суток! Мне надо выводить данные по фильтру в таблицу.То есть надо ввести например фильтр артикул и по фильтру получить данные в таблицу без перезагрузки страницы. HTML страницу я разработал, надо теперь как я понимаю сделать что-то на php и что-то на javascript. Помогите куда рыть, а лучше примером. Ниже код HTML.

    HTML:
    1. <table  style="border: 1px solid #E22F87; width: 910px;" border="0">
    2. <tr>
    3. <td style="width: 30px;">№ акту</td>
    4. <td><input id="num_act" title="№ акту" maxlength="8" name="num_act"  size="8" type="text" /></td>
    5. <td style="width: 30px;">Дата акту</td>
    6. <td style="width: 8px;"><input id="d_act" title="Дата акту" maxlength="8" name="d_act"  size="8" type="text" /></td>
    7. <td style="width: 30px;">Статус</td>
    8. <td style="width: 30px;"><input id="status" title="Статус" maxlength="10" name="status"  size="10" type="text" /></td>
    9. </tr>
    10. <tr>
    11. <td style="width: 30px;">Модель</td>
    12. <td style="width: 10px;"><input id="model" title="Модель" maxlength="8" name="model"  size="8" type="text" /></td>
    13. <td style="width: 30px;">Артикул</td>
    14. <td style="width: 6px;"><input id="article" title="Артикул" maxlength="6" name="article"  size="6" type="text" /></td>
    15. <td style="width: 30px;">Серійний номер<strong></strong></td>
    16. <td style="width: 30px;"><input id="snumber" title="Серійний номер" maxlength="8" name="snumber"  size="8" type="text" /></td>
    17. </tr>
    18.  
    19. <input name="bsearch" type="submit" value="Пошук" />
    20. <tr>
    21. <td>
    22. </td>
    23. </tr>
    24. <table style="border: 1px solid #E22F87;" border="0">
    25. <tr style="background-color: #E22F87;">
    26. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>№ акту</strong></span></th>
    27. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата акту</strong></span></th>
    28. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата накладної</strong></span></th>
    29. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Модель</strong></span></th>
    30. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Артикул</strong></span></th>
    31. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Серійний номер</strong></span></th>
    32. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Місце дефекту</strong></span></th>
    33. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата дефекту</strong></span></th>
    34. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Стан упаковки</strong></span></th>
    35. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Статус</strong></span></th>
    36. <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Детальніше</strong></span></th>
    37.  <?php
    38. foreach($form->data['OsmTech'] as $detail):
    39.    $date_el_order  = explode("-",$detail['dorder']);
    40.    $date_el_defect  = explode("-",$detail['ddefect']);
    41.    $date_fe_order  = $date_el_order[2].".". $date_el_order[1].".". $date_el_order[0];
    42.    $date_fe_defect  = $date_el_defect[2].".". $date_el_defect[1].".". $date_el_defect[0];
    43.  
    44.  ?>
    45. </tr>
    46.  <tr>
    47.  <td style="text-align: center;"><?php echo $detail['num_act_ogl']; ?></td>
    48.  <td style="text-align: center;"><?php echo $date_fe_order; ?></td>
    49.  <td style="text-align: center;"><?php echo $date_fe_order; ?></td>
    50.  <td style="text-align: center;"><?php echo $detail['model']; ?></td>
    51.  <td style="text-align: center;"><?php echo $detail['article']; ?></td>
    52.  <td style="text-align: center;"><?php echo $detail['snumber']; ?></td>
    53.  <td style="text-align: center;"><?php echo $detail['placedefect']; ?></td>
    54.  <td style="text-align: center;"><?php echo $date_fe_defect; ?></td>
    55.  <td style="text-align: center;"><?php echo $detail['conditionpack']; ?></td>
    56.  <td style="text-align: center;"><?php echo $detail['status']; ?></td>
    57. <td style="text-align: center;"><?php echo $detail['linksag']; ?></td>
    58.  </tr>
    59.   <?php
    60.  endforeach;
    61.  ?>
     
  2. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    данные полностью сразу все выводятся? или по страницам? я имею ввиду, то что у вас например 100 деталей, вы их выводите по 10 штук на странице или сразу все?
     
  3. sapun

    sapun Активный пользователь

    С нами с:
    30 авг 2011
    Сообщения:
    30
    Симпатии:
    0
    сразу все, то есть ввел фильтр, например, артикул, нажал кнопку "поиск", и без перегрузки получил результат в таблицу
     
  4. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    я так понимаю всё на mootools?
     
  5. sapun

    sapun Активный пользователь

    С нами с:
    30 авг 2011
    Сообщения:
    30
    Симпатии:
    0
    ага, верно!
     
  6. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    ну скачала немного переделать таблицу
    добавив элемент THEAD и id
    как-то так:
    HTML:
    1.  
    2. <table id="table" style="border: 1px solid #E22F87;" border="0">
    3.  <thead>
    4. <tr>
    5.  <tr style="background-color: #E22F87;">
    6.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>№ акту</strong></span></th>
    7.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата акту</strong></span></th>
    8.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата накладної</strong></span></th>
    9.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Модель</strong></span></th>
    10.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Артикул</strong></span></th>
    11.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Серійний номер</strong></span></th>
    12.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Місце дефекту</strong></span></th>
    13.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Дата дефекту</strong></span></th>
    14.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Стан упаковки</strong></span></th>
    15.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Статус</strong></span></th>
    16.  <th style="border: 1px solid #E22F87; width: 300px; text-align: center;"><span style="color: #ffffff;"><strong>Детальніше</strong></span></th>
    17. </tr>
    18.  
    всё что в цикле foreach всё должно быть в TBODY ну то есть


    Код (Text):
    1.  
    2. echo "<tbody>";
    3.  foreach( )
    4.  ....
    5. echo "</tbody>";
    потом вы идёте на сайт мутулс и скачивайте mootools more можно весь можно только где TableSorter
    затем добавляете следуюш\ий код в js-файл или на странице как удобнее:

    [js]
    var t = new HtmlTable('table');
    t.enableSort();

    [/js]
    вот небольшой пример, того чего вам нужно:
    http://jsfiddle.net/gAV2y/1/

    вот на сайте у них висит с полным описанием функций.
    http://mootools.net/docs/more/Interface/HtmlTable.Sort
     
  7. sapun

    sapun Активный пользователь

    С нами с:
    30 авг 2011
    Сообщения:
    30
    Симпатии:
    0
    так это для сортировки как я понял, а мне надо сделать поиск по фильтру и выводить в таблицу
     
  8. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    а поиск, это уж более серьёзно) а приведите пару запросов и то что должно быть на после поиска.
     
  9. sapun

    sapun Активный пользователь

    С нами с:
    30 авг 2011
    Сообщения:
    30
    Симпатии:
    0
    надо чтоб например при вводе в поле артикул и при нажатии кнопки поиск выбирались только те артикулы, которые соответствую условию без перегрузки страницы в таблицу ниже.

    Запрос например

    select * from table where article = '123';

    Хотел прикрепить скришот с сайта, чтоб наглядно показать, но не понял как тут это делать, могу Вам дать доступ, чтоб показать
    [/url]
     
  10. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    ну в пхп сценарии и напишите,
    вывод потом в json

    заменить <input name="bsearch" type="submit" value="Пошук" />
    на
    HTML:
    1.  
    2.  <input id="bsearch" name="bsearch" type="button" value="Пошук" />
    3.  
    данные придут такие [{"num_act_ogl":123,"model":"ads","article":"das"},{"num_act_ogl":111,"model":"ewq","article":"ter"},{"num_act_ogl":333,"model":"sdf","article":"oui"}] ну и далее.

    также добавить какой-нибудь див
    HTML:
    1. <div id="result"></div>
    для получения данных:
    [js]
    $('bsearch').addEvent('click', function(){
    var data = ... //данные из input
    new Request.JSON(url: 'url_here', onSuccess: function(json){

    var table = new Element('table', {'class': 'results'});
    var tbody = new Element('tbody');

    json.each(function(data){
    var tr = new Element('tr');
    Object.each(data, function(value, key){
    var td = new Element('td', {'class': key});
    td.set('text', value);
    td.inject(tr);
    });
    tr.inject(tbody);

    });
    tbody.inject(table);
    table.inject($('result'));
    }).post(data);

    });
    [/js]