За последние 24 часа нас посетили 23418 программистов и 1289 роботов. Сейчас ищут 637 программистов ...

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное "required" (T_CONSTANT_ENCAPSED_S

Тема в разделе "PHP для новичков", создана пользователем MrGerst, 21 ноя 2023.

  1. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте, у меня код вроде бы написан верно...
    А выдает ошибку:
    Код (Text):
    1. Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное "required" (T_CONSTANT_ENCAPSED_STRING), ожидающее ']' в W:\domains\localhost\includes\data.php в строке 7
    код:
    PHP:
    1. <?php
    2.  
    3. $fields = [
    4.         'name' => [
    5.             'field_name' => 'Имя',
    6.             'required' => 1,
    7.         ], //тут выдает ошибку...
    8.         'phone' => [
    9.             'field_name' => 'Номер телефона',
    10.             'required' => 0,
    11.         ],
    12.         'email' => [
    13.             'field_name' => 'Эл.Почта',
    14.             'required' => 1,
    15.         ],
    16.         'comment' => [
    17.             'field_name' => 'Коментарий',
    18.             'required' => 1,
    19.         ],
    20.  
    21.  
    22.  
    23.        
    24.  
    25.     'name' => [],
    26.     'phone' => [],
    27.     'email' => [],
    28.     'comment' => [],
    29.  
    30. ];
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    48
    Симпатии:
    12
    Адрес:
    Бавария, Германия
    Добрый день!
    У Вас в коде ошибки. Нужно убрать запятые в конце строк:
    PHP:
    1. 'required' => 1,
    2. 'required' => 0,
    также, если Вы хотите присвивоить значения элементам массива, то нужно убрать строки
    PHP:
    1.     'name' => [],
    2.     'phone' => [],
    3.     'email' => [],
    4.     'comment' => [],
    и также убрать запятую после ] здесь
    PHP:
    1.  'comment' => [
    2.             'field_name' => 'Коментарий',
    3.             'required' => 1
    4.         ],
    Удачи!
     
    #2 Vladimir Kheifets, 21 ноя 2023
    Последнее редактирование: 21 ноя 2023
    MrGerst нравится это.
  3. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Спасибо, уже сам разобрался, но у меня новая проблема..


    Ошибка:
    PHP:
    1. Warning: Invalid argument supplied for foreach() in W:\domains\localhost\includes\functions.php on line 19
    Код:
    PHP:
    1. <?php
    2.  
    3. function debug($data) {
    4.     echo '<pre>' . print_r($data, true) . '</pre>';
    5. }
    6.  
    7.  
    8. function load($data) {
    9.     foreach ($_POST as $k => $v) {
    10.         if(array_key_exists($k, $data)) {
    11.             $data[$k] ['value'] = trim($v);
    12.         }
    13.     }
    14.     return $data;
    15. }
    16.  
    17. function validate ($date) {
    18.     $errors = '';
    19.     foreach ($data as $k => $v){
    20.         if($date[$k]['requiered'] && empty($data[$k]['value'])) {
    21.             $errors .="<li>Вы не заполнили поле! {$data[$k]['field_name']}</li>";
    22.         }
    23.     }
    24.     return $errors;
    25. }
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.763
    Симпатии:
    726
    Адрес:
    Татарстан
    ну переводи..... ну думай сам хоть маленько ....
    а то куча постов и все на элементарный синтаксис
     
  5. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Я пытаюсь, но ничего не помогает...
    --- Добавлено ---
    Я уже и скобку переносил, ничего не помогает
    --- Добавлено ---
    Проблему решил! Но не работает одна функция!
    --- Добавлено ---
    Надо было просто поставить
    if (isset($data)) перед foreach.
    Но у меня почему-то не работает валидация, даже без заглушки. Как это исправить?

    data.php
    PHP:
    1. <?php
    2.  
    3. $fields = [
    4.         'name' => [
    5.                 'field_name' => 'Имя',
    6.                 'requiered' => 1
    7.         ],
    8.  
    9.         'phone' => [
    10.             'field_name' => 'Номер телефона',
    11.             'requiered' => 0
    12.         ],
    13.        
    14.         'email' => [
    15.             'field_name' => 'Эл.Почта',
    16.             'requiered' => 1
    17.         ],
    18.        
    19.         'comment' => [
    20.             'field_name' => 'Комментарий',
    21.             'requiered' => 1
    22.         ],
    23. ];
    functions.php:
    Код (Text):
    1. <?php
    2.  
    3. function debug($data) {
    4.     echo '<pre>' . print_r($data, true) . '</pre>';
    5. }
    6.  
    7.  
    8. function load($data) {
    9.     foreach ($_POST as $k => $v) {
    10.         if(array_key_exists($k, $data)) {
    11.             $data[$k] ['value'] = trim($v);
    12.         }
    13.     }
    14.     return $data;
    15. }
    16.  
    17. function validate ($date) {
    18.     $errors = '';
    19.     if (isset($data))
    20.     foreach ($data as $k => $v )
    21.     {
    22.         if($date[$k]['requiered'] && empty($data[$k]['value'])) {
    23.             $errors .="<li>Вы не заполнили поле! {$data[$k]['field_name']}</li>";
    24.         }
    25.     }
    26.     return $errors;
    27. }
    Подключение:
    PHP:
    1. <?php
    2.  
    3. require_once __DIR__ . '/includes/data.php';
    4. require_once __DIR__ . '/includes/functions.php';
    5.  
    6.  
    7. if(!empty($_POST)) {
    8.     debug($_POST);
    9.     $fields = load($fields);
    10.     debug($fields);
    11.     if($errors = validate($fields)){
    12.         debuf($errors);
    13.     } else {
    14.       echo 'OK';
    15.       //отправка
    16.     }
    17. }
    18. ?>
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.708
    Симпатии:
    1.311
    Адрес:
    Лень
    Это не ошибки, а кто-то юзает php 5, когда давно минималка 7.4
    --- Добавлено ---
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    48
    Симпатии:
    12
    Адрес:
    Бавария, Германия
    Ошибки:
    1. При вызове функции load($data) передаётся в параметр $data передаётся массив $fields
    В функции присваивается $data[$k]['value'], oднако ключа 'value' в массиве нет.
    2. При вызове функции validate ($date), далее обрабатывает $datа, которая не определена.
     
  8. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Всем спасибо, но я уже сам давно разобрался! )