#php #html
#php #HTML
Вопрос:
Я работаю над HTML-кодом, как показано ниже, в котором я хочу управлять тегами li с помощью php-кода.
HTML-код:
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
php-код:
<input type="text" name="no_articles_EN" style="width: 77.69px;height: 22px;" value="<?php if($data->{"no_articles_EN"}<>''){echo $data->{"no_articles_EN"};} ?>"> // Line#A
<input type="text" name="no_articles_FR" style="width: 77.69px;height: 22px;" value="<?php if($data->{"no_articles_FR"}<>''){echo $data->{"no_articles_FR"};} ?>"> // Line#B
В строке #A приведенного выше php-кода допустим, если введенное значение равно 3 (no_articles_EN), то тегов li должно быть 3, как показано ниже:
HTML-код:
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
И если введено значение 2(no_article_en), то тегов li должно быть 2, как показано ниже:
HTML-код:
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
Постановка задачи:
Мне интересно, какие изменения я должен внести в приведенный выше HTML-код, поэтому, если no_article_en равно 3/4/5, тогда теги li должны быть наоборот. Я пришел со следующей логикой, но я думаю, что мне нужно больше в ней.
<?php
if($data->{"no_articles_EN"}) // Let say when no_articles_EN is 3 then li tags should be 3.
{
?>
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
<li class="vidlist-main__item cf">
</li>
<?php
}
?>
Комментарии:
1. Вы хотите динамически изменять количество элементов при
input
изменении значения? Или только при загрузке страницы?2. Здесь недостаточно информации — что такое
$data
и как оно заполняется? Являются ли вашиinput
теги частьюform
? Вы хотите, чтобы пользователь отправлял форму до того, как произойдет обновление, или чтобы это происходило мгновенно (javascript)? В основном решением будет какой-тоfor
цикл
Ответ №1:
If $data->no_articles_EN
— целое число, равное количеству элементов, которые вы хотите. Как представляется, вы можете использовать простой for
цикл.
если введенное значение равно 3 (no_articles_EN), то тегов li должно быть 3
если введено значение 2 (no_articles_EN), то тегов li должно быть 2, как показано ниже:
Я предпочитаю ALT
синтаксис PHP при работе со смешанным контентом (PHP / HTML), он просто чище. Но если вы предпочитаете {...}
, обязательно используйте это. Синтаксис alt использует :
и end{command};
вместо {}
. Таким образом просто легче перемещать код, легче находить конечные теги и т.д.
<?php if($data->no_articles_EN): ?> // Let say when no_articles_EN is 3 then li
<?php for($i=0; $i<$data->no_articles_EN; $i): ?>
<li class="vidlist-main__item cf"></li>
<?php endFor; ?>
<?php endif; ?>
Вы не должны использовать синтаксис переменной property $data->{"no_articles_EN"}
, если вам это действительно не нужно, поскольку это снижает читаемость и добавляет сложности, когда это не нужно. Это в основном для подобных вещей $data->{"no_articles_".$language}
, где вы могли бы использовать часть имени свойства в качестве переменной.
Приветствия!