@Kleyos

Можно ли после загрузки данных таблицы сформировать ее шапку PHP?

Задача такая. Через некие soap клиенты получаем данные из 1С. Php файл нам выводит эти данные. мы из них формируем HTML таблицу в том же php файле. Но заранее мы не знаем, допустим, сколько у нас будет "типов цен". Их может быть два, три, четыре. У одной номенклатуры может быть два типа цены, а у другой - 4. Цикл нам эти все типы выведет. А как задать шапку таблицы? ведь она задается перед выводом основных данных.
Думаю, не совсем понятно. Может код поможет в понимании. Рисуем шапку таблицы.
<table >
	<thead>
		<tr>		
		<th rowspan="2"></th>
		<th rowspan="2">Номенклатура</th>
		<th rowspan="2">Ед.Изм.</th>
		<th colspan="2">Тип Ц1</th>
	        <th colspan="2">Тип Ц2</th>
		<th colspan="2">Тип Розница</th>
	        </tr>
               <tr>   
                    <th>ГРН</>
                    <th>ДОЛ</th>               
		     <th>ГРН</th>
		     <th>ДОЛ</th>
                   <th>ГРН</th>
                   <th>ДОЛ</th>
       		</tr>
	</thead>
	<tbody id="t_price">

Далее идет php код вывода данных из 1С и сразу с этими данными формируем ячейки таблицы:

<?php
	***
	***
        ***
	if(is_array($Pricelist))
{
	     foreach ($Pricelist as $str_of_price)
		{ 
?>  
<tr >
	 <td rowspan="2"><?=$i++?></td>
	 <td rowspan="2" class="item"><?=$str_of_price->goods->name ?></td>
	 <td rowspan="2" class="unit"><?=$str_of_price->measure_text ?></td>
</tr>
<tr>
	<?php 
	foreach ($str_of_price->prices as $price){ 
	?>	
        <td ><?= $price->price_name?></td>	
        <td><?= $price->price_man.$price->currency_man?></td>
	<td ><?= $price->price.$price->currency?></td>											  		<?php 
            } 
?>
</tr>

Сейчас тип цены вручную указан в шапке таблице, но вообще он может выводится колонкой <?= $price->price_name?>. Но я хочу сделать так, чтобы в зависимости от количества "типов цен" в шапку добавлялись строки. Понятно, что типы цен можно посчитать счетчиком, но что потом с этим счетчиком? и в идеале: в ячейку "тип" записывалась переменная с названием типа цены. Можно ли такое сделать средствами PHP или каками другими ?
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 4
Это не серверная задача, используйте js
у меня была подобная ситуация.
Есть таблица
mbcTj.png
далее уже джсом прячу лишние таблицы, и объединяю похожие колонки.
mbcVR.png
или вот
mbcWS.png

P.S повторюсь не стоит вешать браузерную часть на сервер.
Ответ написан
@kstyle
сначала код вывода данных из 1c, потом код шапки с циклом и if-ами. потом тело таблицы c циклом и if-ами. или я что-то не понял?
Ответ написан
Не очень понимаю в чём проблема.

// если существует третий тип цены
if(isset($price3)){
    $head1 = '<th colspan="2">Тип Ц3</th>';
    $head2 = '<th>ГРН</th><th>ДОЛ</th>';
}
else{
    $head1 = '';
    $head2 = '';
}


И таблица:
<thead>
    <tr>		
    <th rowspan="2"></th>
    <th rowspan="2">Номенклатура</th>
    <th rowspan="2">Ед.Изм.</th>
    <th colspan="2">Тип Ц1</th>
    <th colspan="2">Тип Ц2</th>
    <?=$head1?>
    <th colspan="2">Тип Розница</th>
    </tr>
               <tr>   
         <th>ГРН</>
         <th>ДОЛ</th>    
                               
         <th>ГРН</th>
         <th>ДОЛ</th>
         
        <?=$head2?>

         <th>ГРН</th>
         <th>ДОЛ</th>
       		</tr>
  </thead>
Ответ написан
e_svirsky
@e_svirsky
Web Developer
Я бы посоветовал пересмотреть модель отрисовки HTML в вашем приложении. Если мы говорим про MVC - пускай php примет данные от soap сервиса, подготовит как это надобно, а уже во view передаст массив и вы просто foreach-ем пробежитесь по нему и отрисуете табличку, без всяких чудес с JS и магии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы