Как контролировать количество html-элементов через php?

#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} , где вы могли бы использовать часть имени свойства в качестве переменной.

Приветствия!