Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Вывод из БД, работа с циклами, Получается большой код, думаю это не нормально
Иван444  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 98
Пользователь №: 37093
На форуме: 12 лет, 1 месяц, 10 дней
Карма:




Доброго времени суток уважаемые форумчане! Братья и сестры!

Вывожу данные из БД и примерно получается вот такая структура

                <?php if ( isset($row['hb1'])) { ?>
<div class="title"><?php echo htmlspecialchars($row['hb1']);?></div>
<?php if (isset ($row['hb111']) and isset ($row['hb112'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb111']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb112']);?></span>
</
li>
<?php }?>
<?php
if (isset ($row['hb121']) and isset ($row['hb122'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb121']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb122']);?></span>
</
li>
<?php }?>
<?php
if (isset ($row['hb131']) and isset ($row['hb132'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb131']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb132']);?></span>
</
li>
<?php }?>

// И так далее всего например 15

<?php } ?>


<?php
if ( isset($row['hb2'])) { ?>
<div class="title"><?php echo htmlspecialchars($row['hb2']);?></div>
<?php if (isset ($row['hb211']) and isset ($row['hb212'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb211']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb212']);?></span>
</
li>
<?php }?>
<?php
if (isset ($row['hb221']) and isset ($row['hb222'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb221']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb222']);?></span>
</
li>
<?php }?>
<?php
if (isset ($row['hb231']) and isset ($row['hb232'])) { ?>
<li class="">
<
span class=""><?php echo htmlspecialchars($row['hb231']);?></span>
<
span class=""><?php echo htmlspecialchars($row['hb232']);?></span>
</
li>
<?php }?>

// И так далее всего например 15

<?php } ?>
// И так далее всего например 150



И таких блоков много, как видно они повторяются, меняются лишь некоторые цифры, т.е. я думаю как то (наверное)
можно вывести все это дело в цикле, или цикле внутри цикла, или цикле внутри цикла внутри цикла
И это (я так думаю) будет работать шустрее чем если бы в коде было написано 2 тыщи строк. Или нет?

Подскажите пожалуйста если кто знает, не могу сообразить(


Это сообщение отредактировал Иван444 - 18.11.2013 - 10:19
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26774
Пользователь №: 21350
На форуме: 15 лет, 2 месяца, 1 день
Карма: 756




... а что тут особо сделать то.. написать тока обёртку

function renderList($el1,$el2){
return '<li class="">
<span class="">'
.htmlspecialchars($el1).'</span>
<span class="">'
.htmlspecialchars($el2).'</span>
</li>'
;
}


и писать далее
 <?=isset($row['hb131']) && isset ($row['hb132']) ? renderList($row['hb131'], $row['hb132']):'';?>


на сколько я понял $row - это из БД - откуда такое не доверее???
Цитата
<?php if ( isset($row['hb2'])) { ?>

Цитата
<?php if (isset ($row['hb221']) and isset ($row['hb222'])) { ?>


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
PM
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Иван444  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 98
Пользователь №: 37093
На форуме: 12 лет, 1 месяц, 10 дней
Карма:




Цитата (Игорь_Vasinsky @ 18.11.2013 - 15:08)
... а что тут особо сделать то.. написать тока обёртку

function renderList($el1,$el2){
return '<li class="">
<span class="">'
.htmlspecialchars($el1).'</span>
<span class="">'
.htmlspecialchars($el2).'</span>
</li>'
;
}


и писать далее
 <?=isset($row['hb131']) && isset ($row['hb132']) ? renderList($row['hb131'], $row['hb132']):'';?>


на сколько я понял $row - это из БД - откуда такое не доверее???
Цитата
<?php if ( isset($row['hb2'])) { ?>

Цитата
<?php if (isset ($row['hb221']) and isset ($row['hb222'])) { ?>

Понимаю, что тут происходит, но сам бы не додумался однозначно.

Спасибо большое за ответ!!!

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

Или вопрос был в другом?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Типичный говнокод.

Нормально делается в два этапа как минимум. Сначала засасываются данные из БД, приводятся к внутреннему протоколу скрипта, а затем уже рендерятся.

Тогда у вас будет так

$post = clean($_POST);

render_list($post);

или сразу

render_list(clean($_POST));
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Цитата (Игорь_Vasinsky @ 18.11.2013 - 15:08)
... а что тут особо сделать то.. написать тока обёртку

Обучаете заворачивать кал в фантики.



defined('PAGE_ENCODING') or define('PAGE_ENCODING' , 'UTF-8');

function clean($elem) {
if(!is_array($elem))
$elem = htmlentities($elem, ENT_QUOTES, PAGE_ENCODING);
else
foreach
($elem as $key => $value)
$elem[$key] = clean($value);
return $elem;
}


Любой массив.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26774
Пользователь №: 21350
На форуме: 15 лет, 2 месяца, 1 день
Карма: 756




dr.nomore
Цитата
$post = clean($_POST);

render_list($post);

или сразу

render_list(clean($_POST));

твой абстракционный псевдокод даже меня ввёл в недоумение

Цитата
Обучаете заворачивать кал в фантики.

есть конкретный вопрос - я дал ответ на этот вопрос.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Так, вы ставите себя на одно призовое место с. А надо - выше. Чтобы с туда тянулся. И становился выше. В этом смысл.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26774
Пользователь №: 21350
На форуме: 15 лет, 2 месяца, 1 день
Карма: 756




мне и в первом посте было не понятно чё за проверки, т.к. по идее - это работа с ассоц массивом из БД - есть поля - есть значения.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Формат как будто работа с серверными данными.

Если это записи из бд так чинят, я пошел плакать.

Всплакнул. Санация данных из БД конечно делается на этапе перекачивания данных из недетерминированного результата запроса в детерминированный массив. На тонкий ручеек ставится сеть и ни одна скумбрия не проскочит.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Я перекачиваю данные в табличном же виде. То есть поле-свойства. Одно из свойств - values. Обычный массив. Что дает. Как правило имя поля в разы больше значения поля. Если засосать т.н. чересстрочный массив, в котором каждое значение озаглавлено, то ресурсов высосется в разы же больше. На каждое число 1 придется по customer_id например. Даже если кастомеров 10 миллионов, то число 10000000 это 8 байт (bigint), а customer_id 22 байта в юникоде.

По-отдельности ничего не читаю, поэтому потребности доставать отдельные данные нет. Но если бы была, я б для батюшки-царя родила бы класс с применением интерфейсов итерации и массивного доступа, который бы хранил такую таблицу, но выдавал бы интерфейс row['name']; count(row), foreach() и все такое.

Собственно таким и должен быть result.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26774
Пользователь №: 21350
На форуме: 15 лет, 2 месяца, 1 день
Карма: 756




лично я свой вывод сделал по имени переменной $row (вспоминая Женю Попова)


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Село волнуеццо...

Свернутый текст


    $ was used for defining string variables in older versions of the BASIC language ("$" was often pronounced "string" instead of "dollar" in this use).[16]
    $ is used for defining hexadecimal constants in Pascal-like languages such as Delphi, and in some variants of assembly language.[16]
    $ is used at the starts of names to define variables in the PHP language and the AutoIt automation script language, scalar variables in the Perl language (see sigil (computer programming)), and global variables in the Ruby language.[16] In Perl programming this includes scalar elements of arrays $array[7] and hashes $hash{foo}.
    In most shell scripting languages, $ is used for interpolating environment variables, special variables, arithmetic computations and special characters, and for performing translation of localised strings.[16]
    $ is used in the ALGOL 68 language to delimit transput format regions.
    $ is used in the TeX typesetting language to delimit mathematical regions.[16]
    In many versions of FORTRAN 66, $ could be used as an alternative to a quotation mark for delimiting strings.[16]
    In PL/M, $ can be used to put a visible separation between syllables of identifiers. For example, 'Some$Name' refers to the same thing as 'SomeName'.[16]
    In Haskell, $ is used as a function application operator.[16]
    In several JavaScript frameworks starting with Prototype.js and also popular in jQuery, $ is a common utility class.
    In ASP.NET, the dollar sign indicates an expression will follow it, when used in a tag in the web page. The expression that follows is .NET language-agnostic[disambiguation needed], as it will work with c#, vb.net, or any CLR supported language.
    In Erlang, the dollar sign precedes character literals. The dollar sign as a character can be written $$.
    In COBOL the $ sign is used in the Picture clause to depict a floating currency symbol as the left most character. The default symbol is $ however if the CURRENCY= or CURRENCY SIGN clause is specified, any single symbol can be used.



http://en.wikipedia.org/wiki/Dollar_sign#U...mputer_software
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Иван444  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 98
Пользователь №: 37093
На форуме: 12 лет, 1 месяц, 10 дней
Карма:




Цитата (dr.nomore @ 19.11.2013 - 03:53)
Цитата (Игорь_Vasinsky @ 18.11.2013 - 15:08)
... а что тут особо сделать то.. написать тока обёртку

Обучаете заворачивать кал в фантики.



defined('PAGE_ENCODING') or define('PAGE_ENCODING' , 'UTF-8');

function clean($elem) {
if(!is_array($elem))
$elem = htmlentities($elem, ENT_QUOTES, PAGE_ENCODING);
else
foreach
($elem as $key => $value)
$elem[$key] = clean($value);
return $elem;
}


Любой массив.

Это функция экранирует спецсимволы, в массиве?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 6 месяцев, 8 дней
Карма: 11




Эта функция превращает хтмл в хтмл-сущности. В любом массиве. Хоть стопицот раз вложенном.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Иван444  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 98
Пользователь №: 37093
На форуме: 12 лет, 1 месяц, 10 дней
Карма:




Цитата (dr.nomore @ 22.11.2013 - 03:53)
Эта функция превращает хтмл в хтмл-сущности. В любом массиве. Хоть стопицот раз вложенном.

Что это значит, простыми словами?)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса