Замена значения ячейки таблицы
Здравствуйте!
Подскажите пожалуйста. У меня есть таблица товаров. Один из столбцов 'цена' - выводит цену товара. Так как цена в базе данных хранится как цифра, то при не указании цены в форме по умолчанию заполняется '0' и соответственно выводится. Вопрос как осуществить замену значений таблицы с 0 на 'не указана'. Значение в ячейке выводится в div class='cena' id нет. Необходимо получать значения по классу. |
Цитата:
|
Лучше не писать русские слова латиницей, это плохой тон.
<div class='cena'> 0 </div> <div class='cena'> 10 </div> <script> Array.prototype.forEach.call(document.querySelectorAll('.cena'), function (price) { if (price.innerHTML.trim() == '0') { price.innerHTML = 'Цена не указана'; } }); </script> |
kolhoznik,
Вообще эту задачу должен решать тот кто формирует страницу, я так понял что у вас это сервер. |
Цитата:
Тем более, если речь о форме, да еще ее значением указать 'Цена не указана', ну так это же полный швах. |
laimas,
Ну ноль там быть не должен, согласен. |
Да к сожалению компонент который использую пишет 0 если пустое значение отсылают при типа ячейки int в базе данный.
А значение цена заполняют пользователи в каталоге и не всегда, поскольку некоторые товары цену пока не имеют. Приходится как то думать об избавлении от нуля в выводе товаров. |
Значит нужно к этой задаче подходить иначе.
Если товар добавляется, это означает, что его идентификатор не определен и пользователю отдается форма с пустыми значениями. По этому же признаку легко определить, что поле цены в форме необязательное для заполнения. Как только товар добавлен, он получает идентификатор, в этом случае вызывается эта же самая форма но с заполненными значениями, а поле цены становиться обязательным для заполнения, то есть это уже редактирование товара. Вот только пихать 'Цена не указана' в value поля не стоит, более полезно в placeholder указать допустимый ввод, например максимальная длина значения, а в pattern первая цифра обязательно не 0, а за ней остальные от максимальной длины. А поле value должно быть пустым. |
Мне не надо чтобы обязательно была указана цена. Это я легко могу сделать и так.
Нужно просто хотя бы скрыть нули или заменить на произвольный текст. Тем более кроме цифр в базу ничего не пихнешь так как тип строки int. Менять на text или varhar нельзя так как сортировка не будет работать. Нужно что то городить на innerthtml |
Цитата:
Странная у вас база. Если значение может быть не определено, то в базе должно быть NULL у не определенных значений, и соответственно при выводе формы значение поля будет пустым. Зачем пустому значению указывать, что оно не задано, да еще как value? Или если у вас такие навороты, то value=<?=$var ?: null?> |
Использую стандартный компонент, который выставляет пустому полю значение '0' при типе данных ячейки в базе данных int. Победить это не смог . как вариант решил попробовать на javascript. Я то вас именно об этом спрашиваю а не о php. Есть варианты или нет?
|
kolhoznik,
Вариант я вам написал давным-давно. Посмотрите свой пост сначала и внимательно. Его даже запустить и посмотреть можно. |
Зачем вам JS, если форму выводит сервер и он подставляет значения в поля?
Я вам показал: $var = 0; var_dump($var ?: null); Запустите и посмотрите, что будет при нулевом значении и отличном от него. Что вам еще надо? Воткнуть в value "Цена не определена"? Ну так замените null в выражении на эту строку, вот только для сообщений служит placeholder, а не value. |
Цитата:
|
Цитата:
|
seblod для joomla.
tsigel, никак не удается подружить написанный вами скрипт с seblod и joomla. Хотя отдельно все работаетю |
seblod как и сама joomla, такой же стандартный, как и лом для открывания дверей. :)
http://www.seblod.pro/documentation |
Цитата:
Цитата:
|
kolhoznik,
В базе может быть 0 или null. laimas вам говорит о форматировании вывода данных в шаблон. |
Цитата:
$var ?: null - это аналог js-выражения var || null, без учета, что var зарезервировано в js. ) Ежику ясно, что в базу это не вставить. Вашу проблему, вернее всех тех кто использует эти "стандартные" инструменты можно решить либо изменив код таковых "стандартных граблей", либо добавив в конструктор возможность задавать значения по умолчанию. Вы вряд ли это сможете сделать. У вас остается другой выход - задать полю цены тип не INT (кстати этот тип слишком много для цены, если только вы не торгуете самолетами), а текст. Текстовые значения (представление чисел) конечно же будут не только сортированы некорректно, но и выборка в них к примеру по фильтру также будет выдавать некорректный результат. Но если в запросах для сортировки или условий к этим полям указывать работать с полем как с бинарными данными ... WHERE BINARY price ..., то все будет ОК. |
Часовой пояс GMT +3, время: 15:11. |