Не видит переменную $row

233
17 марта 2017, 23:48

<php 
	$rows = db_select_all("select 
            ms.id, 
			ifnull((select title from meetings mt where mt.id = ms.meet_id and mt.deleted = 0), null) as meet, 
			ifnull((select title from meet_role mr where mr.id = ms.role_id and mr.deleted = 0), null) as role, 
			ifnull((select title from meet_item i where i.id = ms.item_id and i.deleted = 0), null) as item, 
			ifnull((select title from meet_status m where m.id = ms.staff_status and m.deleted = 0), null)  as status 
        from meet_staff ms 
        where ms.staff_id= {$objid}");	 
 
?> 
	 <table class="grid"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <tr> 
			 <th>Совещание:</th> 
			 <th>Вопрос:</th> 
			 <th>Роль:</th> 
			 <th>Статус:</th> 
		 </tr> 
		  <? foreach ($rows as $row) { ?> 
		 <tr> 
			 <td> <?=$row['meet']?></td> 
			 <td><?=$row['item']?></td> 
			 <td><?=$row['role']?></td> 
			 <td><?=$row['status']?></td> 
		 </tr> 
		 <? } ?>  
	 </table>

Выдает ошибку [8:notice] Undefined variable: row Пробовала разные варианты, но как-то не выхоит

Answer 1

?> 
	 <table class="grid"> 
	 	 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
	 <?php 
		 echo "<tr> 
			 <th>Совещание:</th> 
			 <th>Вопрос:</th> 
			 <th>Роль:</th> 
			 <th>Статус:</th> 
		 </tr>"; 
		   foreach ($rows as $row) {  
		  echo "<tr><td>".$row['meet']."</td><td>".$row['item']."</td><td>".$row['role']."</td><td>".$row['status']."</td></tr>"; 
		 }  
	?> 
	</table>;

Решила проблему так.

Answer 2

Чтобы не было кривотолков, к данному коду надо было приписать всего лишь 6 букв - вместо <? везде написать <?php

      <?php foreach ($rows as $row) { ?>
     <tr>
         <td> <?=$row['meet']?></td>
         <td><?=$row['item']?></td>
         <td><?=$row['role']?></td>
         <td><?=$row['status']?></td>
     </tr>
     <?php } ?> 

Больше ничего трогать в этом коде не нужно было.

Answer 3

У вашем случае нужно использовать альтернативный синтаксис php. Для этого конструкцию:

foreach($items as $item){
    #code;
}

Нужно заменить на конструкцию вида:

foreach($items as $item):
    #code;
endforeach();

Для вашего примера это будет выглядеть так:

    
 <?php 
	$rows = db_select_all("select 
            ms.id, 
			ifnull((select title from meetings mt where mt.id = ms.meet_id and mt.deleted = 0), null) as meet, 
			ifnull((select title from meet_role mr where mr.id = ms.role_id and mr.deleted = 0), null) as role, 
			ifnull((select title from meet_item i where i.id = ms.item_id and i.deleted = 0), null) as item, 
			ifnull((select title from meet_status m where m.id = ms.staff_status and m.deleted = 0), null)  as status 
        from meet_staff ms 
        where ms.staff_id= {$objid}");	 
 
?> 
	 <table class="grid"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <col width="25%"> 
		 <tr> 
			 <th>Совещание:</th> 
			 <th>Вопрос:</th> 
			 <th>Роль:</th> 
			 <th>Статус:</th> 
		 </tr> 
		  <?php foreach ($rows as $row): ?> 
		 <tr> 
			 <td> <?=$row['meet']?></td> 
			 <td><?=$row['item']?></td> 
			 <td><?=$row['role']?></td> 
			 <td><?=$row['status']?></td> 
		 </tr> 
		 <?php endforeach; ?>  
	 </table>

Более детально про альтернативный синтаксис можно почитать здесь

READ ALSO
Кроссбраузерность и IE

Кроссбраузерность и IE

Возникла следующая проблема, на первых картинках различается шрифт в IE и Chrome, на IE нет сглаживания что ли, шрифт менее аккуратный, хотя есть...

317
Нарисовать круг, используя только CSS

Нарисовать круг, используя только CSS

Можно ли нарисовать круг, который будет отображаться в большинстве браузеров (IE, Mozilla, Safari), используя только CSS?

455
System.UnauthorizedAccessException при записи в реестр

System.UnauthorizedAccessException при записи в реестр

Тривиальная задачаДобавить в ветку

312
C# Win7 регулировка звука микрофона

C# Win7 регулировка звука микрофона

Проблема встала при регулировки громкости воспроизведения, пишу что то типо караоке плеера, микрофон должен включаться с начала воспроизведения...

324