#php #html
Вопрос:
У меня есть форма, построенная с использованием PHP. Хотя он печатается просто отлично, я хочу, чтобы он просматривал каждое поле и пропускал любой div/элемент/поле, которое остается пустым, когда я решаю распечатать.
Ниже приведен пример кода формы в PHP-файле печатаемой формы. Если ничего не заполнено/не выбрано, я бы хотел, чтобы это просто не появлялось на странице. Каков наилучший путь для достижения этой цели?
Так ли это просто, как обернуть каждый элемент формы в print.php файл у меня в PHP-коде или что-то еще?
код
lt;div class="no-break card"gt; lt;div class="card-content black-text"gt; lt;div class="row"gt; lt;div class="col s12 radio-label"gt; lt;span class="card-title"gt;PARENT 2lt;/spangt; lt;/divgt; lt;/divgt; lt;div class="row"gt; lt;div class="col s12 radio-label"gt; BLANK TEXT lt;/divgt; lt;/divgt; lt;div class="row"gt; lt;div class="col s12"gt; lt;span class="radio-label"gt;Relationship:lt;/spangt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="mother" /gt; lt;spangt;Motherlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="father" /gt; lt;spangt;Fatherlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="stepmother" /gt; lt;spangt;stepmotherlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="stepfather" /gt; lt;spangt;stepfatherlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="uncle" /gt; lt;spangt;unclelt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="aunt" /gt; lt;spangt;auntlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="grandparent" /gt; lt;spangt;grandparentlt;/spangt; lt;/labelgt; lt;label class="active" class="radio-button"gt; lt;input name="par2relation" type="radio" value="foster parent" /gt; lt;spangt;foster parentlt;/spangt; lt;/labelgt; lt;/divgt; lt;/divgt; lt;div class="row"gt; lt;div class="input-field col s6"gt; lt;input id="par2fname" type="text"gt;lt;/inputgt; lt;label class="active" for="par2fname"gt;First Namelt;/labelgt; lt;/divgt; lt;div class="input-field col s6"gt; lt;input id="par2lname" type="text"gt;lt;/inputgt; lt;label class="active" for="par2lname"gt;Last Namelt;/labelgt; lt;/divgt; lt;/divgt; lt;div class="row"gt; lt;div class="input-field col s6"gt; lt;input id="par2phone" type="text"gt;lt;/inputgt; lt;label class="active" for="par2phone"gt;Phonelt;/labelgt; lt;/divgt; lt;div class="input-field col s6"gt; lt;input id="par2email" type="text"gt;lt;/inputgt; lt;label class="active" for="par2email"gt;Emaillt;/labelgt; lt;/divgt; lt;/divgt; lt;div class="row"gt; lt;div class="input-field col s3"gt; lt;input id="par2address" type="text"gt;lt;/inputgt; lt;label class="active" for="par2address"gt;Addresslt;/labelgt; lt;/divgt; lt;div class="input-field col s3"gt; lt;input id="par2city" type="text"gt;lt;/inputgt; lt;label class="active" for="par2city"gt;Citylt;/labelgt; lt;/divgt; lt;div class="input-field col s3"gt; lt;input id="par2state" type="text"gt;lt;/inputgt; lt;label class="active" for="par2state"gt;Statelt;/labelgt; lt;/divgt; lt;div class="input-field col s3"gt; lt;input id="par2zip" type="text"gt;lt;/inputgt; lt;label class="active" for="par2zip"gt;Ziplt;/labelgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt;
Комментарии:
1. Вы должны включить свой PHP-код, чтобы мы могли лучше понять ваш вопрос. Чем больше информации вы нам предоставите, тем лучший ответ вы получите. Тем не менее, вам, вероятно, просто нужно убедиться, что данные, которые вы собираетесь распечатать, не пусты, используя
if(!empty($datafield))
условие2. @slashroot Я не включал PHP-код, потому что в данный момент он запрашивает только базу данных, так как это все, что нам действительно нужно было сделать до сих пор. Кроме того, это длинная форма. Я просто взял один раздел HTML-кода, чтобы сэкономить место
3. Если вы говорите о печати (на бумаге) живой заполняемой формы, вам нужно решение js/css. Если вы говорите о визуализации (на экране) статического, отправленного/сохраненного состояния формы, то вам нужно решение php. Пожалуйста, уточните, в чем именно заключается сценарий, и обновите теги по мере необходимости.
Ответ №1:
Вы можете создать медиа-запрос CSS, например
@media print { .noprint { display: none; } }
И добавьте noprint
класс во все пустые поля с помощью JavaScript.
document.querySelectorAll('input').forEach(e =gt; { if(e.value == '') { e.classList.add('noprint'); } })
Ответ №2:
Это довольно типично для PHP, чтобы сделать:
lt;formgt; lt;?php if(some condition) { ?gt; lt;input ...gt; lt;?php } ?gt; lt;/formgt;
Это часто более аккуратный способ, чем делать что-то с печатью/эхом.
Если вы планируете делать подобные вещи для больших проектов или проектов, которые необходимо поддерживать, вы можете рассмотреть возможность использования библиотеки конструктора форм(есть загрузки), которая позволяет создавать формы с помощью классов PHP, а затем генерировать HTML.