Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как создаются вьюверы? (https://javascript.ru/forum/jquery/29977-kak-sozdayutsya-vyuvery.html)

Faab 19.07.2012 16:16

Как создаются вьюверы?
 
Я не знаю техники создания вьвера. Но пришлось с чего то начинать и создал этот цифровой мусор. В php создан "шаблон"

$result['title01']=0;
$result['title02']=0;
$result['title03']=0;
$result['title04']=0;
$result['title05']=0;
$result['title06']=0;
$result['title07']=0;
$result['title08']=0;
$result['title09']=0;
$result['title10']=0;


Затем я продолжаю сорить там же: в зависимости от запроса, вынимаю данные из дб и заношу в рабочий массив $book
$book = array();
$i=0;
$books = mysql_query("SELECT title FROM books", $db);
while ($mybook = mysql_fetch_array($books))
{
$book[]=$mybook['title'];
$i=$i+1;
};


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

if ($i>0){$result['title01']=$book[0];}
if ($i>1){$result['title02']=$book[1];}
if ($i>2){$result['title03']=$book[2];}
if ($i>3){$result['title04']=$book[3];}
if ($i>4){$result['title05']=$book[4];}
if ($i>5){$result['title06']=$book[5];}
if ($i>6){$result['title07']=$book[6];}
if ($i>7){$result['title08']=$book[7];}
if ($i>8){$result['title09']=$book[8];}
if ($i>9){$result['title10']=$book[9];}


С json_encode($result) мы переходим в JS. Там я тоже тесаком выбиваю грубо

success: function(data){
                var title01 = data.title01;
                var title02 = data.title02;
                var title03 = data.title03;
                var title04 = data.title04;
                var title05 = data.title05;
                var title06 = data.title06;
                var title07 = data.title07;
                var title08 = data.title08;
                var title09 = data.title09;
                var title10 = data.title10;


Вот и всё. Объекты ракны нулю конечно не показываются. Хочется посмотреть следующие 10 книг = в шаблон летят другие данные. И, да, оно даже работает. НО:

Если я захочу подцепить другие свойства из ДБ (например ID, цену, автора и дату издания), то эта вышеуказанная хреновина "слегка" изменит свою стройность с головы до пят. А вдруг понадобится выводить на странице не 10 книг, а 20.. или 30?

Вопрос: в общем то напрашивается сам, как можно упростить данный подход. И как это делается вообще. Мне не интересны сами скрипты... Мне интересны какие подходы вам известны.. как делается в общем у нормальных людей. Спасибо

zlodeeev 19.07.2012 16:25

$book = array();
$i=0;
$books = mysql_query("SELECT title FROM books", $db);
while ($mybook = mysql_fetch_array($books))
{
$book[$i]=$mybook['title'];
$i=$i+1;
};


Вот так у вас сразу будет сделан ваш "шаблон" без вот этих смешных проверок $i>1..n

хотя не, соврал, для шаблона надо будет вместо $book[$i] писать $result['title'.$i]

Faab 19.07.2012 16:28

редактировано

Faab 19.07.2012 16:33

извиняюсь, не прочитал второе сообщение. Да, вы правы. Так я действовал изначально. Но, тогда создаётся лист - простые массивы. Я то их передам в JS. А там я не знаю как вытащить из data (функция .ajax) нужные мне данные. Вы знаете как это делается?

Faab 19.07.2012 16:46

Цитата:

Сообщение от zlodeeev (Сообщение 189969)
[html]

хотя не, соврал, для шаблона надо будет вместо $book[$i] писать $result['title'.$i]

А что бы получить нужное мне свойтсво, я должен обратиться в JS так?
var title01 = data.title.1;


Это правильное обращение?

zlodeeev 19.07.2012 16:47

Ну в data насколько я знаю будет находитьяс ответ вашего php фала. Т.е. по сути - текст(но я не уверен, с php знаком на уровне создания своего каталога спростейшей выборкой из бд). Поэтому лучше, наверно отформатировать необходимые данные еще в php файле, а на выход отдать сразу отформатированный html код через echo. Тогда его можно будет проще воткнуть в страницу через jquery - $('#content').html(data)

Faab 19.07.2012 16:57

Это вариант. Я тоже уже обдумывал перейти на этот путь развития сценария. Просто, уж больно хоцица разобраться как работать с JSON-ом.

Но чувствую, что в конце концов перейду на "html"-вариант. Недостатков я тут (пока) не вижу.

Спасибо за советы.

Faab 20.07.2012 09:02

Млин, оказывается всё как просто. Генерируешь список и заносишь его из data в переменную, а потом просто достаёшь вот так:

var variable = data;
$('#p').text(variable[1]);
$('#p').text(variable[2]);


Да.. теперь только разобраться как работать мномерными массивами. Например:

result[0][id1]["title1"];
result[1][id2]["title2"];
result[2][id3]["title3"]


Если надо вытащить данные "title2"?


Часовой пояс GMT +3, время: 18:47.