Member 14920672 Ответов: 1

Динамически создавать элементы с разными идентификаторами


У меня есть php файл с этим кодом

$html .=  "\n\t".
        '<label id="myID" class="radio" style="min-height:42px;">'.
        '<input type="radio" style="float:none;" name="'.$var.'" id="'.$var.'" value="'.$item->value.'" '.$checked.'>'.
        $img.
        '<span style="margin-left: 10px;">'.JText::_($item->text).'</span>'.
        '</label>';
}
$html .= "\n";
return $html;


Этот код динамически генерирует теги меток. Теги меток имеют id = myID, но мне нужно сделать другой идентификатор для каждого элемента метки. Как я могу достичь этого?

Что я уже пробовал:

Я пытался добавить инкремент, но это не работает для меня. Кроме того, я попытался использовать цикл "для". И это работает не правильно. Я новичок в php и не знаю, как это сделать. Я буду признателен за любую помощь.


$idlist = array("ida", "idb", "idc");
     foreach($idlist as $id){
     $html .=  "\n\t".

          '<label id="' . $id . '" class="radio" style="min-height:42px;">'. "\n".

           '<input type="radio" style="float:none;" name="'.$var.'" id="'.$var.'" value="'.$item->value.'" '.$checked.'>'.
           $img.
           '<span style="margin-left: 10px;">'.JText::_($item->text).'</span>'.

             '</label>';

     }

   }

   $html .= "\n";
   return $html;

1 Ответов

Рейтинг:
0

Richard MacCutchan

Простой цикл PHP, который увеличивает значение $id:

$idlist = array("ida", "idb", "idc");
foreach($idlist as $id){
    echo '<label id="' . $id . '" class="radio" style="min-height:42px;">' . "\n";
}

Или альтернатива подсчету чисел:
$num = 1;
while($num <= 3){
    echo '<label id="id' . $num . '" class="radio" style="min-height:42px;">' . "\n";
$num += 1;
}


Смотреть также Учебник по PHP[^]


Member 14920672

Спасибо Вам за решение. Но когда я использую ваши параметры, я получаю ошибку "синтаксическая ошибка, неожиданное "Эхо" (T_ECHO)"

Это происходит из-за этой строки $html .= "\n\t".


Richard MacCutchan

Заявление эхо было просто для иллюстрации результатов в тесте. Вам это не нужно в вашем собственном коде, просто добавьте переменные элементы в тех местах, которые я показал.

Member 14920672

Я удалил "эхо", и теперь платежные элементы в браузере не отображаются. Я вижу эти теги меток с правильными идентификаторами в панели мониторинга разработчиков. Но в браузере есть пустое место. - Что случилось?

Richard MacCutchan

Я не знаю, что вы делаете; если вы просто копируете мои строки кода, не подгоняя их под свои требования, то это, вероятно, не сработает. Пожалуйста, используйте Улучшить вопрос ссылка выше, и добавить точный код, который вы используете, так что я могу видеть его.

Member 14920672

Я вставил часть кода, пожалуйста, проверьте его.

Richard MacCutchan

Посмотрите на следующую строку:

          '<label id="' . $id . '" class="radio" style="min-height:42px;">'. "\n";

У вас есть точка с запятой в конце, но она должна иметь точку, чтобы она продолжалась на следующей строке.

Пожалуйста, не просто копируйте строки кода, не изучая и не изменяя их, чтобы убедиться, что они правильно соответствуют тому, что вы пытаетесь сделать.

Member 14920672

Теперь браузер выдает 3 одинаковых способа оплаты вместо одного. Пожалуйста смотрите фото
https://drive.google.com/file/d/1uKJzMlDY9ivoE1nvbrchWwwD30ItqfFX/view

Richard MacCutchan

Извините, я не понимаю, что вы имеете в виду. И Ваша ссылка на Google Диск недоступна. Меняете ли вы все остальные элементы, которые должны быть разными для каждого идентификатора?

Member 14920672

Я пытаюсь объяснить. У меня есть 3 способа оплаты. Банковский перевод, PayPal и Skrill. Но теперь у меня есть 9 методов. 3 иконы банковский перевод, PayPal и 3 иконки 3 иконки Скрилл. Попробуйте открыть эту ссылку https://drive.google.com/file/d/1uKJzMlDY9ivoE1nvbrchWwwD30ItqfFX/view?usp=sharing

Richard MacCutchan

Эта связь все еще не работает.

Тем не менее, проблема та же, что я уже показал вам. Вам нужно создать массивы для каждого элемента, который вы хотите добавить в свой HTML. В качестве альтернативы создайте функции, которые будут возвращать соответствующие элементы. Если вы действительно не понимаете, как обращаться к массивам в PHP, то перейдите на страницу учебника, на которую я уже дал вам ссылку, а также PHP: массивы - руководство пользователя[^].

Но вы не собираетесь изучать PHP должным образом, просто разместив здесь вопросы.

Member 14920672

На самом деле я сейчас не изучаю php. Я создаю сайт на CMS Joomla, и мне нужно получить решение этой проблемы. Вы имеете в виду, что мне нужно создать массивы для этих элементов и ?

Richard MacCutchan

Извините, у меня нет опыта работы с Joomla, поэтому я не могу посоветовать, как лучше всего решить эту проблему. Я предлагаю вам попробовать страницу поддержки по адресу https://www.joomla.org/[^].

Member 14920672

Я прошу помощи на этом сайте, потому что раньше обращался в Службу поддержки Joomla. Вы имеете в виду, что мне нужно создать массивы для этих элементов

<input>
и
<span>
?

Richard MacCutchan

Я понятия не имею, как и не знаю, что вы пытаетесь сделать. Одна из причин, по которой я сказал вам изучать PHP, заключается в том, что вы пытаетесь писать код, не понимая, в чем заключается ваша проблема: верный рецепт катастрофы.

Member 14920672

Очень странная вещь. Вчера вы написали мне: "вам нужно создать массивы для каждого элемента, который вы хотите добавить в свой HTML...", а теперь вы говорите, что понятия не имеете. Жаль, что ты не можешь мне помочь.

Richard MacCutchan

Я догадывался, потому что не было ясно, что вы пытаетесь сделать. И глядя на код, который у вас есть, и некоторые из ваших более поздних комментариев, я не думаю, что это так просто. Может быть, если вы откроете новый вопрос с более ясным объяснением того, что вы пытаетесь сделать, мы сможем дать вам несколько полезных советов.