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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод данных в 4 столбца 
V
    Опции темы
Aluri
Дата 17.6.2013, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2013

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



Смысл в том, что нижеприведённый код выводит массив данных в виде таблицы строками в 2 ряда. Нужно сделать в 4 ряда, но как я ни крутил вывод - он дублируется (выводятся две пары одинаковых столбцов). А надо, чтобы просто те же данные, но в 4 столбца.

Код

<table class="params">
            <?
                $n = 1;
                $NO_VIEW = array("ШтрихКод", "Раздел на сайте","Базовая единица","Реквизиты", "Ставки налогов","Производитель", "Описание к картинке", "Видимость", "Примечание", "Раздел", "Описание для поисковых систем", " Страна", "Тип светильника", "  Наименование для сайта", "Код номенклатуры");
                foreach($arResult["PROPERTIES"] as $key=>$prop) {
                    if(!in_array($prop["NAME"],$NO_VIEW))
                        if($prop["VALUE"]) {
                                                      if($prop["NAME"] == ' Высота' || $prop["NAME"] == ' Диаметр' || $prop["NAME"] == ' Ширина' || $prop["NAME"] == 'Высота встраиваемой части' || $prop["NAME"] == ' Выступ')
                                                      {
                                                        $newval = explode('.',$prop["VALUE"]);
                                                        $val = $newval[0];
                                                        echo "<tr ".($n<0?"class=\"bg\"":"")."><th>".$prop["NAME"]."</th><td>".$val."</td></tr>";
                                                      }
                                                      else
                                                      {
                                                        echo "<tr ".($n<0?"class=\"bg\"":"")."><th>".$prop["NAME"]."</th><td>".$prop["VALUE"]."</td></tr>";

                                                      }
                            $n *= -1;

                        }
                        
                }
            ?>
            
            </table>

Чую, что бока связаны с переменной "n", но не понимаю, как её изменить или куда переставить её изменение, чтобы оно выводило правильно.
PM MAIL   Вверх
Aluri
Дата 17.6.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2013

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



Можно не отвечать, я и сам уже зашарил.
PM MAIL   Вверх
Sanchezzz
Дата 17.6.2013, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 41
Всего: 60



молодец  smile , можно было и не так ярко выразится.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aluri
Дата 17.6.2013, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2013

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



Цитата(Sanchezzz @  17.6.2013,  16:08 Найти цитируемый пост)
можно было и не так ярко выразится. 

Извините. )
Так получилось, что вопрос следующий ещё есть:
Каждую вторую строку нужно выделить цветом. Фон прописать в CSS. Я подумал, что нужно для этого задать каждой второй строке класс, которому и добавить параметры в таблице стилей. У меня пока что есть следующее поделие.
Код

            <table class="params">
            <?
                $n = 1;
                $i = 0;
                $a = 0;
                $NO_VIEW = array("ШтрихКод", "Раздел на сайте","Базовая единица","Реквизиты", "Ставки налогов","Производитель", "Описание к картинке", "Видимость", "Примечание", "Раздел", "Описание для поисковых систем", " Страна", "Тип светильника", "  Наименование для сайта", "Код номенклатуры");
                foreach($arResult["PROPERTIES"] as $key=>$prop) {
                    if(!in_array($prop["NAME"],$NO_VIEW))
                        if($prop["VALUE"]) {
                        
                                                      if($prop["NAME"] == ' Высота' || $prop["NAME"] == ' Диаметр' || $prop["NAME"] == ' Ширина' || $prop["NAME"] == 'Высота встраиваемой части' || $prop["NAME"] == ' Выступ')
                                                      {
                                                        $newval = explode('.',$prop["VALUE"]);
                                                        $val = $newval[0];
                                                        $a++;                                                
                                                        echo " ".($n<0?"":"")."<th>".$prop["NAME"]."</th><td>".$val."</td>";
                                                      }
                                                      else
                                                      {
                                                       $a++;
                                                        echo " ".($n<0?"":"")."<th>".$prop["NAME"]."</th><td>".$prop["VALUE"]."</td>";

                                                      }
                            $n *= -1;
                            $i++;
                            if($i & 1)
                            {
                            
                            }
                            else
                            {
                            echo "<tr></tr>";
                            }
                            if($a/$i>1)
                            {
                            echo "<class = "bg">";
                            }
                            else
                            {
                            echo "</class = "bg">";
                            }
                        }
                        
                }
            ?>
            
            </table>

Я задал ещё одну переменную (а), которыя должна быть в два раза больше переменной, отвечающей за перенос строк (i) и задал условие, чтобы когда она в два раза больше i, задавала класс. Но что-то не получается. Теперь мне кажется, что и условие я неправильное задал. Даже, если класс присвоится, он присвоится всем строкам. Но он всё равно не присваивается из-за кавычек, которые пхп понимает как какой-то свой языковой символ и не хочет их выводить.

Добавлено через 6 минут и 16 секунд
Кстати, ранее класс задавался в этой части, но от него полесли ошибки, когда я убрал оттуда перенос строки. Да и не нужен он там теперь, когда за перенос строки отвечает i независимо от n.

Цитата(Aluri @  17.6.2013,  16:39 Найти цитируемый пост)
echo " ".($n<0?"":"").



Это сообщение отредактировал(а) Aluri - 17.6.2013, 16:43
PM MAIL   Вверх
Sanchezzz
Дата 17.6.2013, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 41
Всего: 60



Я так понял вам нужен вывод в таком виде:
Код

<tr class="color1"> 
  <td>Имя свойства</td> <td>Значение</td> <td>Имя свойства</td> <td>Значение</td>
<tr>
<tr class="color2"> 
  <td>Имя свойства</td> <td>Значение</td> <td>Имя свойства</td> <td>Значение</td>
<tr>
<tr class="color1"> 
  <td>Имя свойства</td> <td>Значение</td> <td>Имя свойства</td> <td>Значение</td>
<tr>

то примерно так
Код

$arrData[]= array('NAME' => 'Армия','VALUE' => '?');
$arrData[]= array('NAME' => 'Девушка','VALUE' => '1');
$arrData[]= array('NAME' => 'Попкорм','VALUE' => '2');
$arrData[]= array('NAME' => 'Кино','VALUE' => '1');

$arrData[]= array('NAME' => 'Кравать','VALUE' => '2');
$arrData[]= array('NAME' => 'Секс','VALUE' => '2');
$arrData[]= array('NAME' => 'Семья','VALUE' => 'да');
$arrData[]= array('NAME' => 'Дети','VALUE' => 'ДААА');

$arrData[]= array('NAME' => 'Ипотека','VALUE' => '???');    
    
    
$num_row = 3;
$inc = $row = 0;

?>
<table>
<?
foreach($arrData as $item):    
if($inc==0): $row++; ?><tr class="color<?=($row % 2)?'1':'2';?>"><?endif;?>
<td><?=$item['NAME']?></td>
<td><?=$item['VALUE']?></td>
<?if($inc==$num_row): $inc=-1;?></tr><?endif;?>
<? ++$inc;
endforeach;
if($inc > 0):?><td colspan="<?=(4-$inc)*2?>"></td></tr><?endif;
?>
</table>
<style>
table td { 30px; } 
    .color1 { background: #f9f9f9; }
    .color2 { background: #ccc;}
</style>

Зебру можно сделать и через CSS тем самым избавляемся от условия  class="color<?=($row % 2)?'1':'2';?>"
Код

table tr:nth-child(odd) > td {
  background-color: #f9f9f9;
}


Это сообщение отредактировал(а) Sanchezzz - 17.6.2013, 18:45


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aluri
Дата 18.6.2013, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2013

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



Вот не помог мне этот пример раньше, не помог и сейчас. Ну не надо мне переделывать полностью код. Мне чисто алгоритмически надо найти место вставки чего-то вроде 
Код
echo "<span class = \"bg\">";
. Серьёзно, это не может быть сложнее, чем полностью приводить скрипт в совсем другую форму.
PM MAIL   Вверх
Aluri
Дата 18.6.2013, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2013

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



Решил таким вот образом:

Код

<table class="params">
            <?
                $n = 1;
                $i = 0;
                $NO_VIEW = array("ШтрихКод", "Раздел на сайте","Базовая единица","Реквизиты", "Ставки налогов","Производитель", "Описание к картинке", "Видимость", "Примечание", "Раздел", "Описание для поисковых систем", " Страна", "Тип светильника", "  Наименование для сайта", "Код номенклатуры");
                foreach($arResult["PROPERTIES"] as $key=>$prop) {
                    if(!in_array($prop["NAME"],$NO_VIEW))
                        if($prop["VALUE"]) {

                        if($i & 1)
                            {
                            
                            }
                            else
                            {
                            if($i%4==0)
                            {
                            echo "<tr class=\"bg\">";
                            }
                            else "<tr>";
                            }                
                        
                                                      if($prop["NAME"] == ' Высота' || $prop["NAME"] == ' Диаметр' || $prop["NAME"] == ' Ширина' || $prop["NAME"] == 'Высота встраиваемой части' || $prop["NAME"] == ' Выступ')
                                                      {
                                                        $newval = explode('.',$prop["VALUE"]);
                                                        $val = $newval[0];

                                                        echo "<th>".$prop["NAME"]."</th><td>".$val."</td>";
                                                      }
                                                      else
                                                      {

                                                        echo "<th>".$prop["NAME"]."</th><td>".$prop["VALUE"]."</td>";

                                                      }
                                                      
                            $n *= -1;
                            $i++;
                                        
                }
                if($i & 1)
                            {
                            
                            }
                            else
                            {
                            echo "</tr>";
                            }
                        }
                        ?>
            
            </table>


Пусть будет пример, если кому понадобится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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