[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Убрать в письмах названия пустых полей
sashgera
Здравствуйте
Есть компонент формы (Joomla)
Хочу сделать так, чтобы в пришедших на email письмах не было названий (label) пустых полей.
т.е. если поле не заполнено - убрать в письме его название

переменная $mailBody содержит название и содержимое ВСЕХ полей формы:

$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";

$field->label - название ВСЕХ полей
$fieldValue - содержимое ВСЕХ полей
Как найти пустые поля и убрать лейблы? (а лучше убрать пустые поля вместе с лейблами)
PHP очень плохо знаю, поэтому такое условие не работает:

if( !empty($fieldValue) ) {
unset ($field->label . " : ");
}
walerus
sashgera
Цитата
$field->label - название ВСЕХ полей
$fieldValue - содержимое ВСЕХ полей
Что значит ВСЕХ ?, я так понимаю должно быть так:
$field->label - название текущего поля
$fieldValue - содержимое текущего поля

там цикл стоит или там массивы или что там внутри?
сделай
print_r( $field->label );
print_r( $fieldValue );

то что получится, показывай сюда.
sashgera
walerus, показываю:
emailBOTНазвание организации или ФИОООО РОГА И КОПЫТАВаш e-mailger_s@rambler.ruВаш номер телефона345-45-67Вид техникиСПЕЦТЕХНИКАНаличие образца стеклаДАТриплекс или сталинитСТАЛИНИТЛобовое, боковое или заднееЛОБОВОЕПрямое или изогнутоеПРЯМОЕВысота/ширина/толщинаВЫСОТАНаличие отверстий в стеклеДАНаличие подогреваНЕТКоличество стеколОДНОСроки выполненияНЕДЕЛЯНеобходимость установкиНЕТФорма оплатыБЕЗНАЛПрикрепить файлДополнительная информацияИНФО

emailBOT - пустое поле (самое первое)
walerus
Это все здорово когда много букаф :rolleyes: но...

Код
$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";
тут как видно раделитель : (двоеточие), где они в вашем примере (многабукаф) ??? я не нашел

Так же я просил показать то, что находится в переменных, а не "отсебятину", например:
emailBOTНазвание организации или ФИОООО РОГА И КОПЫТА
Ваш e-mail: ger_s@rambler.ru
Ваш номер телефона: 345-45-67
Вид техники: СПЕЦТЕХНИКА
Наличие образца стекла: ДА
Триплекс или сталинит: СТАЛИНИТ
Лобовое, боковое или заднее: ЛОБОВОЕ
Прямое или изогнутое: ПРЯМОЕ
Высота/ширина/толщина: ВЫСОТА
Наличие отверстий в стекле: ДА
Наличие подогрева: НЕТ
Количество стекол: ОДНО
Сроки выполнения: НЕДЕЛЯ
Необходимость установки: НЕТ
Форма оплаты: БЕЗНАЛ
Прикрепить файл:
Дополнительная информация: ИНФО
Теперь осталось разобраться что есть что.

Сделайте то что я прошу, а именно:
echo "<pre>===========LABEL============<br>\n";
print_r( $field->label );
echo "===========LABEL============<br>\n";
print_r( $fieldValue );
die('STOP');

$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";
и покажите результат
sashgera
walerus, сделал:
===========LABEL============

emailBOT===========LABEL============

STOP

да, поле emailBOT было не заполнено
walerus
if( trim($fieldValue) == '' ) {
continue;
}else{
$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";
}
Попробуй так, отпиши что получилось
sashgera
walerus
в форме небыли заполнены поля:
emailBOT
Вид техники

в пришедшем письме названия поля Вид техники не было, а поле emailBOT почему-то осталось
вот содержание письма:

emailBOT :
Название организации или ФИО : ООО Фирма
Ваш e-mail : gerasimov_s@rambler.ru
Ваш номер телефона : 345-45-67
/////названия поля Вид техники в письме небыло/////
Наличие образца стекла : есть
Триплекс или сталинит : сталинит
Лобовое, боковое или заднее : заднее
Прямое или изогнутое : изогнутое
Высота/ширина/толщина : 300-700-900
Наличие отверстий в стекле : нет
Наличие подогрева : нет
Количество стекол : два
Сроки выполнения : неделя
Необходимость установки : нет
Форма оплаты : наличные
Дополнительная информация : проверка
sashgera
walerus
нашел причину, почему поле 'emailBOT' не удаляется в письме - в админке полю выставлен формат поля 'E-mail'
если формат не заполненного поля 'E-mail', то ваше условие if не срабатывает

выше по коду есть переменная: $isEmail = false;
вот фрагмент кода:

$isEmail = false;
if ($field->typefield == 'text') {
$opt = explode("[--]", $field->defaultvalue);
$key1 = explode("===", $opt[0]);
$key2 = explode("===", $opt[1]);
$key3 = explode("===", $opt[2]);
$t_texttype = $key3[1];

if ($t_texttype == 'email') {
$isEmail = true;
}

}


if ($isEmail == true)
{
$fieldValue = '<a href="mailto:'.$fieldValue.'">'.$fieldValue.'</a>';
}

if( trim($fieldValue) == '' ) {
continue;
}else{
$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";
}


если делаю так, как ниже, то не заполненного поля 'emailBOT' в письме нет,
но также в письме удаляется поле 'email', которое было заполнено
(в форме два поля E-mail)

if ($isEmail == false) {
if( trim($fieldValue) == '' ) {
continue;
}else{
$mailBody = $mailBody.$field->label . " : " . $fieldValue . "<br />\n";
}
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.