Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание таблицы с помощью jQuery 
V
    Опции темы
maxkap
Дата 17.7.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 7.2.2007
Где: Луганская обл.

Репутация: нет
Всего: -1



Короче, есть текст, который выбирается из базы и отдельным пхп скриптом формируется в json.

Нужно из этого Джейсона сделать табличку.

Код



    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">    
    $(document).ready(function(){ 
        $.post("json.php","tbl=BANK",function(data)
        {
            //здесь нужно сделать табличку 
            alert(data);                    
        },JSON);               
    });
</script>
</head>
<body>
</body>
</html>




строка json 
({
'items':[ 
{ ID: '2',NAME: 'ПриватБанк',MFO: '304795',ADDRESS: 'Антрацит ул. Петровского' }
{ ID: '3',NAME: 'Пра',MFO: 'Пра ',ADDRESS: 'Пра' } { ID: '4',NAME: 'Правэкс',MFO: '304432',ADDRESS: 'Антрацит' } 
{ ID: '5',NAME: 'УкрГаз',MFO: '304213',ADDRESS: 'ывауцкцукфвуцв' } { ID: '6',NAME: 'СибБанк',MFO: '304213',ADDRESS: 'Антрацит' }
{ ID: '12',NAME: 'Name',MFO: 'Ok ',ADDRESS: 'Cancel' }
]
})

нужно сделать табл. 
id        name                          MFO                     ADDRESS
2         ПриватБанк               304795                Антрацит ул. Петровского
.......       .........                           .............             ........

плюс, данные будут выбираться из разных таблиц, с разным кол-вом столбцов и строк,
хотелось бы скрипт сделать универсальным.

в jquery соображаю не сильно, поэтому если че не горячитесь......... smile 

Это сообщение отредактировал(а) maxkap - 17.7.2009, 11:55
PM MAIL   Вверх
unicross
Дата 17.7.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 6
Всего: 53



Если только с помощью jQuery, то можно, например, так:
Код

      $.post("json.php", "tbl=BANK", function(data) {
         var tbl = "<table border=1>";
         tbl += "<tr><th>id</th><th>name</th><th>mfo</th><th>address</th></tr>";
         for (var i=0, count=data.items.length; i<count; i++) {
            tbl += "<tr>";
            tbl += "<td>" + data.items[i].id + "</td>";
            tbl += "<td>" + data.items[i].name + "</td>";
            tbl += "<td>" + data.items[i].mfo + "</td>";
            tbl += "<td>" + data.items[i].address + "</td>";
            tbl += "</tr>";
         }
         tbl += "</table>";
         $("#result").html(tbl);
      }, "json");

Код

<?php
header('Content-Type: text/javascript; charset=utf-8');
?>
({
"items":[
{ id:"2", name:"ПриватБанк", mfo:"304795", address:"Антрацит ул. Петровского" },
{ id:"3", name:"Пра", mfo:"Пра ", address:"Пра" },
{ id:"4", name:"Правэкс", mfo:"304432", address:"Антрацит" },
{ id:"5", name:"УкрГаз", mfo:"304213", address:"ывауцкцукфвуцв" },
{ id:"6", name:"СибБанк", mfo:"304213", address:"Антрацит" },
{ id:"12", name:"Name", mfo:"Ok ", address:"Cancel" }
]
})

Хотя проще на сервере сформировать таблицу и вывести, чем передавать через json. Если конечно данные не с другого домена...

PM MAIL WWW   Вверх
maxkap
Дата 17.7.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 7.2.2007
Где: Луганская обл.

Репутация: нет
Всего: -1



да так я без проблем могу решить поставленую задачу.
хотелось  бы ячейки таблицы не статически указывать, а динемически.
просто в этой таблице, что в примере 4 столбца, а вдругих и по 5, и по 3 есть.
хотелось бы какойто универсальный скрипт... smile

Добавлено через 4 минуты и 25 секунд
Вот кстати php-код формирования json 

Код

<?php
    function composeJSON($array) 
    {        
        foreach ($array as $item) 
        {
            $json .= " { ";
            foreach ($array as $key => $val) 
            {                
                if (is_array($val)) 
                {
                    $json .= $key.": ".composeJSON($val);
                }
                else 
                {
                    $json .= "{$key}: '{$val}',";
                }
            }
            $json = substr($json, 0, -2);
            $json .= "' } ,";
        }
        $json = substr($json, 0, -2);    
        
        return $json;
    }  
    function in_json ($str)
    {    
        include('./app/classes/decode.inc.php');
        include('./app/classes/connect.inc.php'); 
        $result = "";
        $sth = DBQuery(DBConnect(),'SELECT * FROM '.$str);
        $check = true;
        while ($row = ibase_fetch_object ($sth)) 
        {   
            header("Content-type: text/javascript; charset=utf-8");
            if ($check)
            {
                $result .= "({'items':[";
                $check = false;
            }
            $result .=  win2utf(composeJSON($row));                       
        }
        $result .=  "]})";
        echo $result;
    }   
    
    $tbl='BANK';
    if(isset($_POST['tbl'])) $tbl = $_POST['tbl']; 
    in_json ($tbl);
    
?>


мож так кому-то по понятней будет.........
PM MAIL   Вверх
Sanchezzz
Дата 17.7.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60



Думаю переписать на динамику будет не сложно
mootools
Код

function addFeald(){
    var tbl = $('tablefeald'); //getElemetByID
    var countfeald = tbl.rows.length;
    var oRow = tbl.insertRow(countfeald);
    var oCell = oRow.insertCell(0);
    oCell.set('html','<input type="text" style="width: 140px" class="xInputText">'); //типа innerHTML
    var oCell = oRow.insertCell(1); 
    oCell.set('html','<input type="text" style="width: 140px" name="c12" class="xInputText">'); 
    var oCell=  oRow.insertCell(2);
    oCell.set('html','<input type="text" class="xInputText" style="width: 50px" maxlength="4" value="0">');


Это сообщение отредактировал(а) Sanchezzz - 17.7.2009, 14:41


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
maxkap
Дата 17.7.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 7.2.2007
Где: Луганская обл.

Репутация: нет
Всего: -1



Глубоко уважаемый Sanchezzz, можно ли небольшое разъяснение Вашего примерчика.......
а то   smile   ))))))))))


и как мне его привязать к моему примеру.....?

Это сообщение отредактировал(а) maxkap - 17.7.2009, 15:40
PM MAIL   Вверх
IDVsbruck
Дата 17.7.2009, 16:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Чем баловаться на клиенте, проще сразу при формировании данных на сервере указать количество столбцов (можно даже с заголовками) и сразу вставлять в сформированную таблицу, иначе легко возникает ситуация, когда начиная с Н-ной строки нам приходится корректировать таблицу - изменять количество столбцов
PM MAIL   Вверх
maxkap
Дата 20.7.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 7.2.2007
Где: Луганская обл.

Репутация: нет
Всего: -1



IDVsbruck, согласен, можно и  на стороне сервера делать таблицу.
это и намного проще, и понятнее(по крайней мере для меня).

просто мне посоветовали это сделать с помощью jQuery, типа это легче и проще, в 2 строчки и без перегрузки страницы.
я с jQ. знаком очень плохо, поэтому и решил разобраться., тем более проект не срочный....
PM MAIL   Вверх
ksnk
Дата 20.7.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



maxkap, Все данные , прилетевшие в одно время имеют одинаковый набор полей или соседние строчки из разных таблиц?
Решение, в обшем то-же, что и unicross уже написал, вот только нужно предварительно пробежаться по объекту-строке (циклом for ... in ) и вычислить набор полей. Потом выводить столбцы тоже в цикле...

Я бы формировал текст таблицы на сервере и передавал его уже готовым. Так, imho, более обозримое решение получится, шаблоны для вывода таблицы не нужно будет портировать в скрипт... 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
maxkap
Дата 20.7.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 7.2.2007
Где: Луганская обл.

Репутация: нет
Всего: -1



Короче, я все же решил разбирать джейсон в скрипте.
получилось довольно объемно, но универсально, работает для любой из моих таблиц.
всем спасибо за помощь.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.