Здравствуйте, у меня код вроде бы написан верно…
А выдает ошибку:Код (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) { } function load($data) { foreach ($_POST as $k => $v) { } } return $data; } function validate ($date) { $errors = »; foreach ($data as $k => $v){ $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’; debug($_POST); $fields = load($fields); debug($fields); if($errors = validate($fields)){ debuf($errors); } else { echo ‘OK’; //отправка } } ?>
Это не ошибки, а кто-то юзает php 5, когда давно минималка 7.4
— Добавлено —
Ошибки:
1. При вызове функции load($data) передаётся в параметр $data передаётся массив $fields
В функции присваивается $data[$k][‘value’], oднако ключа ‘value’ в массиве нет.
2. При вызове функции validate ($date), далее обрабатывает $datа, которая не определена.
Всем спасибо, но я уже сам давно разобрался! )