За последние 24 часа нас посетили 9489 программистов и 634 робота. Сейчас ищут 192 программиста ...

В чем ошибка?

Тема в разделе "Прочие вопросы по PHP", создана пользователем AlexeyGerman, 12 фев 2020.

  1. AlexeyGerman

    AlexeyGerman Новичок

    С нами с:
    11 июл 2019
    Сообщения:
    6
    Симпатии:
    0
    Добрый день всем:)
    Помогите убрать ошибку, пожалуйста. Этот скрипт взят из учебника, но тут ошибка, а как её исправить - не могу понять - убил уже 3 часа.. И это при том, что это пример рабочий должен быть - он для наглядности вставлен, а не для упражнения и тут оказалась ошибка.
    Ругается на:
    <select name="surname">
    <?php selectItems($names, $_REQUEST['surname']); ?>
    </select><br>
    Notice: Undefined index: surname in ***** on line 34


    PHP:
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <title>Test</title>
    5. </head>
    6. <body>
    7.     <?php
    8.     function selectItems($items, $selected = 0){
    9.         $text = "";
    10.         foreach ($items as $k => $v) {
    11.             if ($k === $selected){
    12.                 $ch =" selected";
    13.             }else{
    14.                 $ch = "";              
    15.             }
    16.             $text .= "<option$ch value='$k'>$v</option>\n";
    17.         }
    18.         return $text;
    19.     };
    20.     $names = [
    21.         "Weaving" => "Hugo",
    22.         "Goddard" => "Paul",
    23.         "Taylor" => "Robert"
    24.     ];
    25.     if (isset($_REQUEST['ab'])) {
    26.         $name = $names[$_REQUEST['ab']];
    27.         echo "Вы выбрали: {$_REQUEST['ab']} , {$name} ";
    28.     }
    29.     ?>
    30.     <?php print_r($names);    ?>
    31.     <form action="" method="POST">
    32.         Выберите имя:
    33.         <select name="ab">
    34.             <?php selectItems($names, $_REQUEST['ab']); ?>
    35.         </select><br>
    36.         <input type="submit" value="Узнать фамилию">
    37.     </form>
    38. </body>
    39. </html>
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    10.072
    Симпатии:
    958
    Адрес:
    там-сям
    Ты видишь в своём коде упоминание слова "surname"? И мы нет. Значит это не тот файл или тот, но ты удалил именно ту часть, которая имеет значение.
     
  3. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.672
    Симпатии:
    276
    ты вернул значение из функции в никуда
    скорее всего в книге был шоттег <?= который ты заменил на <?php

    и вообще
    PHP:
    1. <?php
    2. function selectItems($items, $selected = 0){
    3.     $text = "";
    4.     foreach ($items as $k => $v) {
    5.         if ($k === $selected){
    6.             $ch =" selected";
    7.         }else{
    8.             $ch = "";
    9.         }
    10.         $text .= '<option' . $ch . ' value="' . $k . '">' . $v . '</option>' . PHP_EOL;
    11.     }
    12.     return $text;
    13. }
    14. $names = [
    15.     "Weaving" => "Hugo",
    16.     "Goddard" => "Paul",
    17.     "Taylor" => "Robert"
    18. ];
    19. if (isset($_REQUEST['ab'])) {
    20.     $name = $names[$_REQUEST['ab']];
    21.     $selected = 'Вы выбрали: ' . $_REQUEST['ab'] . ' ,' . $name;
    22. }
    23. //print_r($names);
    24. ?>
    25. <!DOCTYPE html>
    26. <html>
    27. <head>
    28.     <title>Test</title>
    29. </head>
    30. <body>
    31. <?php echo !empty($selected) ? '<p>' . $selected . '</p>': '';?>
    32. <form action="" method="POST">
    33.     <p>Выберите имя:
    34.         <select name="ab">
    35.             <?php echo selectItems($names, $_REQUEST['ab']); ?>
    36.         </select>
    37.     </p>
    38.     <p><input type="submit" value="Узнать фамилию"></p>
    39. </form>
    40. </body>
    41. </html>
     
  4. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    2.299
    Симпатии:
    366
    Вообще не вникал, но лепить значение $ch вплотную к option точно не нужно.
     
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.672
    Симпатии:
    276
    @miketomlin, нужно и я показал как это сделать
     
    miketomlin нравится это.
  6. AlexeyGerman

    AlexeyGerman Новичок

    С нами с:
    11 июл 2019
    Сообщения:
    6
    Симпатии:
    0
    Действительно! Проблема оказалась в <?=
    Спасибо!
     
  7. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    2.299
    Симпатии:
    366
    @Valick, да, я даже не посмотрел на значение $ch :rolleyes: До того, что пробел может быть в $ch, дошел потом чисто теоретически. Но ты меня опередил.