Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильнее реализовать вывод в таблицу 
:(
    Опции темы
zhz
Дата 29.3.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

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



Реализую поиск данных и вывод их в таблицу(html). По мере разрастания проекта решил писать универсальные классы. Первый класс, ищет данные в mysql и возвращает результат. В дальнейшем планирую реализовать класс таким образом, чтобы ему передовалось "что искать" и где искать, так как будет использоваться не только разные БД но и разные СУБД. (Искать 'Иванова' в базе Company на mysql сервере server1, Искать номер телефона в базе такой то на MSSQL сервере таком то...) Это только начало класса и  
Код

<?php
class Searcher {

public function searchInDB1Server2($fam) {
    $resultArray = array();
    $result= mysql_query("SELECT LastName ,FirstName,Otch,BirthDate FROM Persons WHERE LastName='$fam'");
    if (mysql_num_rows($result) == 0)
    {
        return false;
    }else{
            while ($row=mysql_fetch_assoc($result)) {
            array_push($resultArray,$row);
            }
            return $resultArray;
    }
}
}
?>

Второй класс реализует вывод найденного, в таблице. Т.Е Он принимает набор данных, возвращенных Searcher->searhInBD1server2 (и тд) и выдает html код таблицы с результатами. Причем класс сам должен определить заголовки таблицы(универсальности ради)
Код

<?php

class Table {
public $dataToTable = array();
public $table_border;
        function __construct($resultSet,$tborder) {
        $this->dataToTable = $resultSet;
        $this->table_border= '"'.$tborder.'"';
        }//construct

public function printTable() {
        $html_table="'<table border=$this->table_border cellpadding=\"2\"> ";
        $columns = array_keys($this->dataToTable[0]);
        $table_header="<TR>";
        //Create header row for table
        for($i=0;$i<sizeof($columns);$i++) {
        $table_header .='<TD>'.$columns[$i].'</TD>';
        }
        $table_header .='</TR>';

        

        for ($j=0;$j<sizeof($this->dataToTable);$j++) {
      ###
####### что здесь надо делать?
######
        }


        $html_table .=$table_header;
        $html_table .='</table>';
        print $html_table;
        return true;


}
 
На данном моменте затупил, просьба посмотреть код, сказать , что не так начал делать, и как правильно вывести данные из ($this->dataToTable) в таблицу, точнее как сначала правильнее сформировать таблицу, а потом напихать туда данных. 
PM MAIL ICQ   Вверх
Muerto
Дата 29.3.2011, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Как делать  и строить дело ваше хозяйское... 
Моя копейка вам

Посмотрите в сторону MVC

Нету проблемы строить Helper классы, и класс таблицы имеет право на жизнь... 
Но где это все? часть чего?
Если ваш проект разрастаться идите в сторону MVC пока не поздно, объязательно разделяйте логику и представление , иначе патом будете проклинать все на свете...

Мне вот в руки попал проект, это просто ужас...
Чуть чуть посчитают что то, возьмут с базы, выведут... и так перемешка... какие то не-до-шаблоны, попытка смастерить велосипед, но просто очень не успешная, я думаю сам автор не поймет что там с чем связано  smile 

Просто жуть...
Ща весь сайт переношу на MVC фреймворк (выбрал что бы попроще ci ибо нужно было поддержка php4)

Так что советую взять какой нить Yii или если что попроще нужно то CI или Kohana и вперед

Это сообщение отредактировал(а) Muerto - 29.3.2011, 23:19


--------------------
user posted image
PM MAIL   Вверх
comcon1
Дата 30.3.2011, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Как вывести данные - зависит от типов. Типы вы можете получить запросом DESCRIBE. http://dev.mysql.com/doc/refman/5.0/en/describe.html - смотрите тут.
соответственно выводите: 
Код

<td class="<?=$type?>"> <?=formatData($data, $type)?></td>


например, флоаты надо отформатировать printf("%8.3f", $data), дату тоже date("YY-mm", $data), а строку только htmlspecialchars($data).

А так схема правильная. Только логичнее наверное отделить класс, печатающий таблицу от конкретного запроса.
И потом делать дочерние класс уже с конкретным запросом и конкретными особенностями вывода.
 
P.S. а названия колонок для православности лучше делайте <th> - потом в CSS-е определите как надо.


--------------------
PM MAIL   Вверх
zhz
Дата 30.3.2011, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

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



Спасибо за советы. Реализуемый мною проект имеет вид extension для typo3, теперь видимо надо решить, как реализовать mvc в typo3(((
PM MAIL ICQ   Вверх
SneG0K
Дата 30.3.2011, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



В вики написано, что тупо основана на шаблонах - это и есть мвс в том или ином виде.
Это конечно тупо, если такая большая коммерческая CMS не на MVC или производных от этого паттерна
PM WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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