Есть вот такой цикл:
<table id="items-table">
<?php
while ($row = mysqli_fetch_assoc($items)) {
echo "\t\t<tr><form name="."tablerow".">\n";
echo "\t\t\t<td>Номер".$row["num"]."</td>\n";
echo "\t\t\t<td><input type="."radio"." name="."group".$row["num"]." value="."0" .if($row["status"] == 0){echo "checked";}" >Свободная</th>"."</td>\n";
echo "\t\t\t<td><input type="."radio"." name="."group".$row["num"]." value="."1" if($row["status"] == 1){echo "checked";} ">Продана</th>"."</td>\n";
echo "\t\t\t<td><input type="."radio"." name="."group".$row["num"]." value="."2".if($row["status"] == 2){echo "checked";}">Резерв</th>"."</td>\n";
echo "\t\t\t<td>" .$row["status"]."</td>\n";
echo "\t\t\t<td><input type="."submit"." value="."Сохранить"."></th>"."</td>\n";
echo "\t\t</form></tr>\n";
}
?>
</table>
По идее, он должен брать значение поля status, сравнивать его и, в зависимости от значения (0, 1, 2), чекать соответствующий radiobutton.
Ругается на наличие if
в коде. Что не так и как исправить?
Я Вам советую использовать более подходящее форматирование и отделять разметку от кода, что бы потом не путаться в строках и не испытывать проблем с изменениями.
<table id="items-table">
<?php while ($row = mysqli_fetch_assoc($items)) {?>
<tr>
<form name="tablerow">
<td>Номер <?= $row["num"] ?></td>
<td>
<input type="radio" name="group<?=$row["num"]?>" value="0" <?php if($row["status"] == 0) {echo "checked";}?> > Свободная
</td>;
<td>
<input type="radio" name="group<?=$row["num"]?>" value="1" <?php if($row["status"] == 1) {echo "checked";}?>> Продана
</td>
<td>
<input type="radio" name="group<?=$row["num"]?>" value="2" <?php if($row["status"] == 2) {echo "checked";} ?>> Резерв
</td>
<td><?=$row["status"]?></td>
<td><input type="submit" value="Сохранить"></td>
</form>
</tr>
<?}?>
</table>
Если сократить строки, получится, что у Вас написано следующее:
echo "foo" . if (something()) {echo "bar";} . "baz";
Это синтаксически неверно. Всё, что следует после echo
, должно быть строкой или возвращать строку. if
, как Вам справедливо подсказали выше, ничего не возвращает. И, очевидно, строкой не является - это логическая конструкция.
Как вариант - разбейте echo
на несколько блоков, как-то так:
echo "foo";
if (something()) {echo "bar";}
echo "baz";
Исправьте вот это
if($row["status"] == 1){echo "checked";}
На вот это
(($row["status"] == 1) ? "checked" : "")
Конечно, исправить надо во всех трех строчках.
А почему нельзя написать всё по-человечески?
<form name="tablerow">
<table id="items-table">
<?php while ($row = mysqli_fetch_assoc($items)): ?>
<tr>
<td>
Номер<?php echo $row['num']; ?>
</td>
<td>
<input type="radio" name="group<?php echo $row['num']; ?>" value="0" <?php echo ($row["status"] == 0) ? 'checked': ''; ?>>Свободная
</td>
<td>
<input type="radio" name="group<?php echo $row['num']; ?>" value="1" <?php echo ($row["status"] == 1) ? 'checked': ''; ?>>Продана
</td>
<td>
<input type="radio" name="group<?php echo $row['num']; ?>" value="2" <?php echo ($row["status"] == 2) ? 'checked': ''; ?>>Резерв
</td>
<td>
<?php echo $row["status"]; ?>
</td>
<td>
<input type="submit" value="Сохранить">
</td>
</tr>
<?php endwhile; ?>
</table>
</form>
p.s. я не понял откуда у вас столько незакрытых </th>
. Поэтому я их выкинул к чертям
А еще у вас form
в цикле зачем то.... если нужно - оставьте... но всё остальное - тихий ужас
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Приложение берёт из БД пачку id объектов и проделывает с ними некие вычисления, занимающие до нескольких минутСами объекты – набор файлов...