Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.07.2012, 16:16
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Как создаются вьюверы?
Я не знаю техники создания вьвера. Но пришлось с чего то начинать и создал этот цифровой мусор. В 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?

Вопрос: в общем то напрашивается сам, как можно упростить данный подход. И как это делается вообще. Мне не интересны сами скрипты... Мне интересны какие подходы вам известны.. как делается в общем у нормальных людей. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 19.07.2012, 16:25
Аватар для zlodeeev
Кандидат Javascript-наук
Отправить личное сообщение для zlodeeev Посмотреть профиль Найти все сообщения от zlodeeev
 
Регистрация: 11.07.2012
Сообщений: 113

$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]
Ответить с цитированием
  #3 (permalink)  
Старый 19.07.2012, 16:28
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

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

Последний раз редактировалось Faab, 19.07.2012 в 16:47.
Ответить с цитированием
  #4 (permalink)  
Старый 19.07.2012, 16:33
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

извиняюсь, не прочитал второе сообщение. Да, вы правы. Так я действовал изначально. Но, тогда создаётся лист - простые массивы. Я то их передам в JS. А там я не знаю как вытащить из data (функция .ajax) нужные мне данные. Вы знаете как это делается?
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2012, 16:46
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Сообщение от zlodeeev Посмотреть сообщение
[html]

хотя не, соврал, для шаблона надо будет вместо $book[$i] писать $result['title'.$i]
А что бы получить нужное мне свойтсво, я должен обратиться в JS так?
var title01 = data.title.1;


Это правильное обращение?
Ответить с цитированием
  #6 (permalink)  
Старый 19.07.2012, 16:47
Аватар для zlodeeev
Кандидат Javascript-наук
Отправить личное сообщение для zlodeeev Посмотреть профиль Найти все сообщения от zlodeeev
 
Регистрация: 11.07.2012
Сообщений: 113

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

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

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

Спасибо за советы.
Ответить с цитированием
  #8 (permalink)  
Старый 20.07.2012, 09:02
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Млин, оказывается всё как просто. Генерируешь список и заносишь его из 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"?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 05:40
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
Как отловить обратное событие "click" ? jsuse Общие вопросы Javascript 2 18.01.2012 00:16
как реализовать передачу функции в функцию?? czp Общие вопросы Javascript 10 29.11.2011 19:21
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56