if в теге input

197
19 декабря 2016, 19:27

Есть вот такой цикл:

<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 в коде. Что не так и как исправить?

Answer 1

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

<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>
Answer 2

Если сократить строки, получится, что у Вас написано следующее:

echo "foo" . if (something()) {echo "bar";} . "baz";

Это синтаксически неверно. Всё, что следует после echo, должно быть строкой или возвращать строку. if, как Вам справедливо подсказали выше, ничего не возвращает. И, очевидно, строкой не является - это логическая конструкция.

Как вариант - разбейте echo на несколько блоков, как-то так:

echo "foo";
if (something()) {echo "bar";}
echo "baz";
Answer 3

Исправьте вот это

if($row["status"] == 1){echo "checked";}

На вот это

(($row["status"] == 1) ?  "checked" : "")

Конечно, исправить надо во всех трех строчках.

Answer 4

А почему нельзя написать всё по-человечески?

<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 в цикле зачем то.... если нужно - оставьте... но всё остальное - тихий ужас

READ ALSO
Не могу разобрать массив

Не могу разобрать массив

Как получить элемент data:ProtocolNode:private?

181
mutex для распределённого приложения

mutex для распределённого приложения

Приложение берёт из БД пачку id объектов и проделывает с ними некие вычисления, занимающие до нескольких минутСами объекты – набор файлов...

217
Как отнять период от даты в PHP?

Как отнять период от даты в PHP?

Имеем дату из БД $row['doomsday'] в формате 0606

239
Вывод данных из бд с сортировкой

Вывод данных из бд с сортировкой

Есть таблица db_weapons

260