Здравствуйте, у меня код вроде бы написан верно... А выдает ошибку: Код (Text): Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное "required" (T_CONSTANT_ENCAPSED_STRING), ожидающее ']' в W:\domains\localhost\includes\data.php в строке 7 код: PHP: <?php $fields = [ 'name' => [ 'field_name' => 'Имя', 'required' => 1, ], //тут выдает ошибку... 'phone' => [ 'field_name' => 'Номер телефона', 'required' => 0, ], 'email' => [ 'field_name' => 'Эл.Почта', 'required' => 1, ], 'comment' => [ 'field_name' => 'Коментарий', 'required' => 1, ], 'name' => [], 'phone' => [], 'email' => [], 'comment' => [], ];
Добрый день! У Вас в коде ошибки. Нужно убрать запятые в конце строк: PHP: 'required' => 1, 'required' => 0, также, если Вы хотите присвивоить значения элементам массива, то нужно убрать строки PHP: 'name' => [], 'phone' => [], 'email' => [], 'comment' => [], и также убрать запятую после ] здесь PHP: 'comment' => [ 'field_name' => 'Коментарий', 'required' => 1 ], Удачи!
Спасибо, уже сам разобрался, но у меня новая проблема.. Ошибка: PHP: Warning: Invalid argument supplied for foreach() in W:\domains\localhost\includes\functions.php on line 19 Код: PHP: <?php function debug($data) { echo '<pre>' . print_r($data, true) . '</pre>'; } function load($data) { foreach ($_POST as $k => $v) { if(array_key_exists($k, $data)) { $data[$k] ['value'] = trim($v); } } return $data; } function validate ($date) { $errors = ''; foreach ($data as $k => $v){ if($date[$k]['requiered'] && empty($data[$k]['value'])) { $errors .="<li>Вы не заполнили поле! {$data[$k]['field_name']}</li>"; } } return $errors; }
Я пытаюсь, но ничего не помогает... --- Добавлено --- Я уже и скобку переносил, ничего не помогает --- Добавлено --- Проблему решил! Но не работает одна функция! --- Добавлено --- Надо было просто поставить if (isset($data)) перед foreach. Но у меня почему-то не работает валидация, даже без заглушки. Как это исправить? data.php PHP: <?php $fields = [ 'name' => [ 'field_name' => 'Имя', 'requiered' => 1 ], 'phone' => [ 'field_name' => 'Номер телефона', 'requiered' => 0 ], 'email' => [ 'field_name' => 'Эл.Почта', 'requiered' => 1 ], 'comment' => [ 'field_name' => 'Комментарий', 'requiered' => 1 ], ]; functions.php: Код (Text): <?php function debug($data) { echo '<pre>' . print_r($data, true) . '</pre>'; } function load($data) { foreach ($_POST as $k => $v) { if(array_key_exists($k, $data)) { $data[$k] ['value'] = trim($v); } } return $data; } function validate ($date) { $errors = ''; if (isset($data)) foreach ($data as $k => $v ) { if($date[$k]['requiered'] && empty($data[$k]['value'])) { $errors .="<li>Вы не заполнили поле! {$data[$k]['field_name']}</li>"; } } return $errors; } Подключение: PHP: <?php require_once __DIR__ . '/includes/data.php'; require_once __DIR__ . '/includes/functions.php'; if(!empty($_POST)) { debug($_POST); $fields = load($fields); debug($fields); if($errors = validate($fields)){ debuf($errors); } else { echo 'OK'; //отправка } } ?>
Ошибки: 1. При вызове функции load($data) передаётся в параметр $data передаётся массив $fields В функции присваивается $data[$k]['value'], oднако ключа 'value' в массиве нет. 2. При вызове функции validate ($date), далее обрабатывает $datа, которая не определена.