Уникальный id в динамическом input checkbox

ИА
На сайте с 12.02.2014
Offline
56
540

Добрый времени суток.

Подскажите, как присвоить динамически создаваемому input checkbox уникальный id?

Т.е. есть фильтр по параметрам, input checkbox формируется динамически, на основе данных в БД. каждому инпуту нужен уникальный id для его стилистического оформления.

SQL запросом вытаскиваются все уникальные производители

$sql = "SELECT * FROM `table` GROUP BY manufacturer ";

Затем циклом while выводятся checkbox-ы с названиями производителей

echo '<li><input type="checkbox" name="manufacturer []" value="'.$row[manufacturer ].'" />'.$row[manufacturer ].'</li>';

Хочу оформить код таким образом, а дальше через CSS.

<input type="checkbox" id="box-1">

<label for="box-1">Производитель</label>

id в input и for в label нужно сделать одинаковыми по отношению друг к другу и уникальными по отношению к другим, т.е. что-то типа такого:


<input type="checkbox" id="box-1">
<label for="box-1">Производитель 1</label>
<input type="checkbox" id="box-2">
<label for="box-2">Производитель 2</label>
<input type="checkbox" id="box-3">
<label for="box-3">Производитель 3</label>
...

Вариант вытягивать id из БД не подходит, т.к. по другим пунктам в фильтре могут быть пересечения этих идентификаторов.

gribbo
На сайте с 01.03.2012
Offline
66
#1

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

Мой выбор хостинга (https://beget.com/p461662) \ Создаю сайты (/ru/forum/1009089)
LEOnidUKG
На сайте с 25.11.2006
Online
1551
#2

1. Не городить id вообще и всё сделать так:

https://stackoverflow.com/questions/10926839/trying-to-simulate-label-click

2. Если всё упирается исключительно в label то в чём проблема для тех, кто грузится из БД не сделать свой уникальный id="boxbrand-x" и всё.

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
S
На сайте с 13.10.2014
Offline
147
#3

a foreach для этих целей чем плох ?

foreach ($query_result as $id => $value){}

правда, мне сейчас сложно представить результат выборки, в голове, чтоб найти решение

а вообще, для чекбоксов оптимальным решением было бы

<label> <input type="checkbox" />blablabla </label>

апд2

еще одна мысля.

если у вас уникальные производители, то можно сделать id="id__<?php print(md5($row[manufacturer])) ;>"

ИА
На сайте с 12.02.2014
Offline
56
#4

Вот, блин, я тупень))) Всем спасибо, нашел решение

Делалось то все легко, можно было и id из БД для этого использовать, добавив к нему любую букву/несколько букв, т.е. допустим:

<input type="checkbox" id="s'.$row['id'].'">

<label for="s'.$row['id'].'">Производитель</label>

А для другой характеристики использовать, допустим, такой вариант:

<input type="checkbox" id="b'.$row['id'].'">

<label for="b'.$row['id'].'">Производитель</label>

В итоге получим уникальные id для каждого input, например, id="s104" или id="b354" Внутри одной характеристики будут различаться по id, а между характеристиками по добавочной букве, т.е. при совпадении id получится id="s374" и id="b374".

апд2
еще одна мысля.
если у вас уникальные производители, то можно сделать id="id__<?php print(md5($row[manufacturer])) ;>"

Думал про это, но есть русские производители и их бы пришлось транслитить.

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

<input type="checkbox" id="b'.md5($row['id']).'">

<label for="b'.md5($row['id']).'">Производитель</label>
S
На сайте с 13.10.2014
Offline
147
#5

Илья Артурович, это не чтобы спрятать, а чтобы получить уникальный индекс, зависящий только от входных данных. Хэширование работает очень быстро и с любым набором символов в строке. (не все браузеры понимают русский в качестве id), а заниматься транслитерацией, это по-моему то еще извращение.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#6
Илья Артурович:

<input type="checkbox" id="box-1">

<label for="box-1">Производитель</label>

Вот то же самое без id:


<label><input type="checkbox" /> Производитель</label>
⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий