Я не думаю, что ваша проблема связана с вашим PHP, я думаю, что это ваш HTML.
Не все ваши теги открытия и закрытия HTML совпадают.У вас есть несколько незамкнутых <tr>
элементов, по крайней мере, один неоткрытый <tr>
, ваши теги формы не срабатывают, учитывая структуру вашего оператора if / else, и у вас фактически нет открывающего тега <table>
илиоткрыв тег <div>
в верхней части кода, в то время как у вас есть оба в конце.Div, который вы получаете выше вашего цикла, который вы ожидаете получить в цикле, вероятно, является результатом того, что ваш браузер пытается интерпретировать поврежденную структуру страницы.
Что касается тегов формы, которые я упомянул, убедитесь, чтоЕсли вы используете оператор if для открытия формы, у вас также должно быть условие, которое откроет все необходимые формы, если оператор if оценивается как false.Я думаю, у вас есть элемент формы внутри if, а затем входные данные формы как часть следующего оператора else.
Я упростил ваш опубликованный код и включил комментарии, чтобы попытаться проиллюстрировать это:
<tbody id="cart_contents">
<?php if(){?>
<tir><!--what's a 'tir'?, did you mean 'tr'?-->
<td colspan='8'>
<div class='warning_message' style='padding:7px;'>
</div>
</tr>
</tr>
<?php }else{
echo "</tr><tir>";//here you are closing a row that was never opened, and another 'tir'.
foreach($cart as $line=>$item){?>
<td></td>
<?php if (){ //here you call a form input before the form is created...?>
<td><?php echo form_input();?></td>
<?php }else{?>
<td></td>
<?php echo form_hidden();
//this form isn't in a table element, which might act weird?>
<?php }?>
<td><?php if() {
echo form_hidden();
}else{
echo form_input());
//here you have a form input outside of a form if
//the previous if statement evaluates to false.
}?>
</td>
<td></td>
<?php if(){ }
else {
if(){}
else{}
}?>
</td><!--this td was never opened-->
<td> </td>
<td></td>
<td></td>
</tr><!--this tr was never opened-->
<tr><td></td></tr>
</form><!--I don't believe you can count on your conditional statements to garantee that a form was opened-->
<?php }
} ?>
</tbody>
</table> <!--you haven't opened your table in this code-->
</div><!--you havent' opened a div in this code-->