За последние 24 часа нас посетили 54153 программиста и 1721 робот. Сейчас ищут 769 программистов ...

Вычисление двумерного массива в строке.

Тема в разделе "PHP для новичков", создана пользователем Honanaipr, 15 июн 2017.

  1. Honanaipr

    Honanaipr Новичок

    С нами с:
    5 июн 2017
    Сообщения:
    14
    Симпатии:
    0
    Нужно подставить в значение атрибута value значение $data[0]['name'].
    $data[0]['name'] существует и имеет значение "Петя"(проверено var_dump-ом).

    PHP:
    1. echo <<<_END
    2. <form action="My.php" metod="GET">
    3. <input name="name" value="$data[0][name]"><br><br>
    4. <input type="submit" value="Добавить">
    5. </form>
    6. _END;
    Ругается на третью строчку.(eclipse выделяет $data[0] как переменную, а [name] как обычную строку.)
    Notice: Array to string conversion in F:\wamp64\www\edit.php on line 17

    php 7.0.10
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    {$data[0]['name']}
     
  3. Honanaipr

    Honanaipr Новичок

    С нами с:
    5 июн 2017
    Сообщения:
    14
    Симпатии:
    0
    Просто и лаконично. Благодарю.
     
  4. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    А зачем нижний пробел перед END?
    и попробуйте брать переменные и ключи массива в фигурные скобки
    PHP:
    1. <?php
    2. $data[0][name] = 'Имя';
    3. echo <<<END
    4. <form action="My.php" metod="GET">
    5. <input name="name" value="{$data[0][name]}"><br><br>
    6. <input type="submit" value="Добавить">
    7. </form>
    8. END;
     
  5. Honanaipr

    Honanaipr Новичок

    С нами с:
    5 июн 2017
    Сообщения:
    14
    Симпатии:
    0
    А не должно ли быть name в апострофах в 5-ой строке?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нужно экранировать через htmlspecialchars() ещё
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    при добавлении экранируются данные, и при выводе ? не многовато ?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при каком нахрен добавлении?
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    в бд перед заливкой экранируем, после тоже, не тупи
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не тупи твой дед
    обычно, при записи в бд надо не html экранировать, а sql
    а при выводе - уже html
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    блин я уже туплю
     
  12. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    должно.. а то warning будет)))
     
  13. Honanaipr

    Honanaipr Новичок

    С нами с:
    5 июн 2017
    Сообщения:
    14
    Симпатии:
    0
    А не проще ли экранировать сразу и SQL и HTML. Так htmlspecialchars будет выполняться только один раз при записи, а не каждый раз при выводе. Быстрее работать будет.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ты теряешь оригинальные данные, что если логин будет <br> то для его поиска в базе нужно будет уже учитывать экранирование, так что лучше хранить в базе оригинал, результат вывода всегда можно закэшировать