@inna97
начинающий верстальщик

Как правильно оформить файл php для обработки формы?

Есть форма с данными для отправки на почту. Проблема заключается в том, что в ней есть input[type="checkbox"]. Это выбор из 8 полей. И вот вывести этот выбор оказалось сложно. Я нашла одно решение, как можно обработать и вывести в php эти поля. Но, когда вношу эту обработку в $message для отправки на почту - выдает ошибку 500 (Internal Server Error).
Вот код формы:
<form class="remnewsc4__form" id="remnewsc4__form" enctype="multipart/form-data" method="post" >
<div class="remnewsc4__form--checkbox">
                            <input type="checkbox" id="additparam1" name="additparam[]" value="Установка кондиционеров">
                            <label for="additparam1">Установка кондиционеров</label>
                            <input type="checkbox" id="additparam2" name="additparam[]" value="Замена отопления">
                            <label for="additparam2">Замена отопления</label>
                            <input type="checkbox" id="additparam3" name="additparam[]" value="Перепланировка помещений">
                            <label for="additparam3">Перепланировка помещений</label>
                            <input type="checkbox" id="additparam4" name="additparam[]" value="Дизайн-проект">
                            <label for="additparam4">Дизайн-проект</label>
                            <input type="checkbox" id="additparam5" name="additparam[]" value="Черновой материал">
                            <label for="additparam5">Черновой материал</label>
                            <input type="checkbox" id="additparam6" name="additparam[]" value="Чистовой материал">
                            <label for="additparam6">Чистовой материал</label>
                            <input type="checkbox" id="additparam7" name="additparam[]" value="Мебель на заказ">
                            <label for="additparam7">Мебель на заказ</label>
                            <input type="checkbox" id="additparam8" name="additparam[]" value="Услуги клининга">
                            <label for="additparam8">Услуги клининга</label>
                        </div>
</form>


Вот кусок кода обработки именно этих полей input[type="checkbox"]:
if(empty($additparam)) 
  {
    echo("Не выбрано ни одного значения."); echo '<br>';
  } 
  else
  { 
    $N = count($additparam);
    for($i=0; $i < $N; $i++)
    {
      echo('- '.$additparam[$i] . " "); echo '<br>';
    }
  }


Все прекрасно работает, если выводить данные просто через php, без отправки на почту.
- Замена отопления
- Перепланировка помещений
- Мебель на заказ
- Услуги клининга
Показывает только отмеченные пункты.
Но, когда я заношу этот код в тело письма $message, ничего не отправляется и выдает ошибку 500 (Internal Server Error). При этом, если я не ставлю этот кусок в тело письма, то письмо прекрасно приходит.
$message =  "\n\nИмя: ".$name.
                    "\nnТелефон: ".$phone.
        	   "\nnЭлектронная почта: ".$email.        	
        	   "\n\nТип ремонта - ".$tiperem.
                  "\nОтделка стен - ".$walldecor.
                  "\nОтделка полов - ".$floordecor.
                  "\nОтделка потолков - ".$ceilings.            
        	  "\n\nДополнительные параметры для более точного расчета: ".
            if(empty($additparam)) 
              {
                ."\nНе выбрано ни одного значения.".;
              } 
              else
              { 
                $N = count($additparam);
                for($i=0; $i < $N; $i++)
                {
                  ."\n- ".$additparam[$i] . ;
                }
              }.
  
            "\n\nЭлектромонтаж:".             
            "\nРозетки/выключатели - ".$electrical2."шт
             \nСветильники/люстры - ".$electrical3."шт  
             \nПогонаж проводки - ".$electrical4."м             
             \n\nОсновные параметры помещения:
             \nПлощадь пола - ".$roompar1."м2
             \nВысота потолка - ".$roompar2."м
             \nКоличество окон - ".$roompar3."шт
             \nКоличество дверей - ".$roompar4."шт

            \n\n".$date."\n\n".$_SERVER['HTTP_REFERER'];

Показываю весь код тела письма, там еще много полей...
Подскажите, в чем ошибка?
Может нужно как-то иначе обрабатывать такие поля или есть определенный синтаксис для оформления тела письма.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
@NedoKoder
У вас ошибки в коде. С точками проблемы. В начале условной строки точки не могут стоять, да и в конце тоже. Вы где то скачали этот код и редактировали?

$message =  "\n\nИмя: ".$name.
                    "\nnТелефон: ".$phone.
        	   "\nnЭлектронная почта: ".$email.        	
        	   "\n\nТип ремонта - ".$tiperem.
                  "\nОтделка стен - ".$walldecor.
                  "\nОтделка полов - ".$floordecor.
                  "\nОтделка потолков - ".$ceilings.            
        	  "\n\nДополнительные параметры для более точного расчета: ";
            if(empty($additparam)) 
              {
                $message .= "\nНе выбрано ни одного значения.";
              } 
              else
              { 
                $N = count($additparam);
                for($i=0; $i < $N; $i++)
                {
                  $message .= "\n".$additparam[$i];
                }
              }
  
            $message .= "\n\nЭлектромонтаж:".             
            "\nРозетки/выключатели - ".$electrical2."шт
             \nСветильники/люстры - ".$electrical3."шт  
             \nПогонаж проводки - ".$electrical4."м             
             \n\nОсновные параметры помещения:
             \nПлощадь пола - ".$roompar1."м2
             \nВысота потолка - ".$roompar2."м
             \nКоличество окон - ".$roompar3."шт
             \nКоличество дверей - ".$roompar4."шт \n\n".
                $date."\n\n".$_SERVER['HTTP_REFERER'];
Ответ написан
@KingstonKMS
full-stack web developer
Условие вынести вне значения $message, формировать строку и потом склеивать с $message
$additional = "\nНе выбрано ни одного значения.";
            if($additparam)
              { 
                $N = count($additparam);
                 $additional ='' ;
                for($i=0; $i < $N; $i++)
                {
                $additional  .= "\n- ".$additparam[$i];
                }
              }
... 
	  "\n\nДополнительные параметры для более точного расчета: ".
            $additional . 
            "\n\nЭлектромонтаж:".  
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы