вопрос
Здравствуйте.
Есть задача, которая подразумевает собой вывод данных в две таблицы. Первая статическая и имеет 8 значений. Вторая - динамическая, может иметь от 1 строки (по 7 столбцов в каждой).
В БД добавляю все в одно поле так:
Спасибо за любые идеи и подсказки.
/// UPD:
Сразу же хочу спросить еще об одном. На данный момент в строке 7 значений разделяющихся "=|=". Но помимо этого, в некоторых полях есть разделитель " || ". Как выводить текст до разделителя по условию?
Объясню наглядно:
"Голая" строка:
1=|=2=|=3 || three=|=4 || four=|=5 || five=|=6=|=7
Она же, но ставшая строкой таблицы:
1 2 3 || three 4 || four 5 || five 6 7
Конечное преобразование если условие соблюдается:
1 2 3 4 5 6 7
Если не соблюдается:
1 2 three four five 6 7
Есть задача, которая подразумевает собой вывод данных в две таблицы. Первая статическая и имеет 8 значений. Вторая - динамическая, может иметь от 1 строки (по 7 столбцов в каждой).
В БД добавляю все в одно поле так:
<input type="text" name="name[]" />
$name = implode('=|=', $_POST['name']);В первую таблицу (та которая статическая, с известным кол-вом значений, помните?) данные вывожу очень просто:
$result = explode('=|=', $row['name']);и далее (использую DLE) создаю макросы для шаблона по такому типу:
$tpl->set('{macros}', $result[0]);Для статической таблицы все Ок - создал необходимое кол-во макросов и забыл, а вот как быть с динамикой?
Спасибо за любые идеи и подсказки.
/// UPD:
$statistics = array();/// UPD:
$statistics = explode('=|=', $row['statistics']);
$line = array($statistics);
$count_lines = count($line);
for($i = 0; $i <= $count_lines; $i++) {
$result .= '<a class="row clr">';
$count_lines = count($line[$i]);
for($q = 0; $q < $count_lines; $q++) {
$result .= '<span>'. $line[$i][$q] .'</span>';
}
$result .= '</a>';
}
$tpl->set('{statistics}', $result);
Сразу же хочу спросить еще об одном. На данный момент в строке 7 значений разделяющихся "=|=". Но помимо этого, в некоторых полях есть разделитель " || ". Как выводить текст до разделителя по условию?
Объясню наглядно:
"Голая" строка:
1=|=2=|=3 || three=|=4 || four=|=5 || five=|=6=|=7
Она же, но ставшая строкой таблицы:
1 2 3 || three 4 || four 5 || five 6 7
Конечное преобразование если условие соблюдается:
1 2 3 4 5 6 7
Если не соблюдается:
1 2 three four five 6 7
Сделал все что было нужно таким способом:
Если же куки нет, то:
Всем премного благодарен. Обсуждение - двигатель.
з.ы. Если вы видите в коде недочеты, то укажите их. Скорее всего они есть.
$statistics = array(); // переменная - массивТеперь, допустим, в поле таблицы из БД есть запись:
$statistics = explode('=|=', $row['statistics']); // удаление разделителей
$line = array_chunk($statistics, 7); // разбитие массива на равные части
foreach ($line AS $key => $value) {
$result .= '<a class="row clr">';
foreach ($line[$key] AS $key1 => $value1) {
// если есть кука "ru", то в колонках 3, 4 и 5 выводится текст до ||, нету - после
if ($key1 == 2 OR $key1 == 3 OR $key1 == 4) {
$locale = explode(' || ', $line[$key][$key1]);
if ($_COOKIE['language'] == 'ru') $line[$key][$key1] = $locale[0];
else $line[$key][$key1] = $locale[1];
}
if ($key1 == 6) $result .= '<span class="'. $line[$key][$key1] .'"></span>';
else $result .= '<span>'. $line[$key][$key1] .'</span>';
}
$result .= '</a>';
}
$tpl->set('{statistics}', $result);
15.02.13=|=20:45=|=Русский текст || English text=|=Русский текст || English text=|=РТ || ET=|=2.0=|=plus=|=16.02.13=|=20:45=|=Русский текст || English text=|=Русский текст || English text=|=РТ || ET=|=2.0=|=minus=|=15.02.13=|=20:45=|=Русский текст || English text=|=Русский текст || English text=|=РТ || ET=|=2.0=|=equallyВывод ее, по-умолчанию, будет таков (если есть языковая кука с именем ru):
Если же куки нет, то:
Всем премного благодарен. Обсуждение - двигатель.
з.ы. Если вы видите в коде недочеты, то укажите их. Скорее всего они есть.