Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается вывести значение массива 
V
    Опции темы
Deadcow
Дата 26.7.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2008
Где: Москва

Репутация: нет
Всего: нет



Только-только взялся за изучение пхп, прохожу курсы на intuit и на одном из учебных заданий возникла проблема. Есть ситуация: человек посетив собрание с объявлением курсов по программированию, приходит домой и через html форму записывается на курсы, которые ему приглянулись. 
html я знаю, так что замарачиваться не стал и взял готовую форму:

Код

<h2>Форма для регистрации студентов</h2>
<form action="1.php" method=POST>
Имя <br><input type=text name="first_name" 
    value="Введите Ваше имя"><br>
Фамилия <br><input type=text name="last_name"><br>
E-mail <br><input type=text name="email"><br>
<p> Выберите курс, который вы бы хотели посещать:<br>
<input type=checkbox name='kurs[]' value='PHP'>PHP<br>
<input type=checkbox name='kurs[]' value='Lisp'>Lisp<br>
<input type=checkbox name='kurs[]' value='Perl'>Perl<br>
<input type=checkbox name='kurs[]' value='Unix'>Unix<br>
<P>Что вы хотите, чтобы мы знали о вас? <BR>
<textarea name="comment" cols=32 rows=5></textarea>
<input type=submit value="Отправить">
<input type=reset value="Отменить">
</form>


Полное решение этой задачи, как и данную форму, можно посмотреть на сайте, но я стараясь не глядеть на тот код написал свой, основываясь на том, что уже знаю:

Код

<? 
    define ("SIGN", "C уважением, Администрация.");
    //Задали подпись в виде константы.
    $name = $_POST["first_name"] ." ". $_POST["last_name"];
        if (!isset($_POST["kurs"])){  //Если ни один курс не выбран
            echo "Ув. $name, с курсами Вы сможете определиться и на следующем собрании, 12 октября в час дня.";
        } else { //Если выбраны курсы
            $str = "Ув. $name! <br>";
            $kurs = $_POST["kurs"]; //выбранные юзером курсы записываем в массив
            $time = array("php" => "10.30", "lisp" => "12.40", "perl" => "10.00", "unix" => "13.30"); //Время проведения лекции в массив
            $lector = array("php" => "Сергей Иванович", "lisp" => "Николай Дмитриевич", "perl" => "Иван Васильевич", "unix" => "Андрей Андреевич"); 
            //Имена лекторов в массив
            for ($i="0";$i<count($kurs);$i++) { //считаем кол-во выбранных курсов и выводим инфу о них
            $k = $kurs["$i"];
            $t = $time["$k"];
            $l = $lector["$k"];
            $lection = "Лекция по $k начнется в $t. Лектор - $l <br>";
            $str .= $lection;
            }
    echo $str; 
        }
?>


Проблема в блоке 
Код

$k = $kurs["$i"];
$t = $time["$k"];
$l = $lector["$k"];
$lection = "Лекция по $k начнется в $t. Лектор - $l <br>";

, т.к. по какой то причине переменные t и l игнорируются (остаются пустыми) и не выводятся через echo 

Если выбрать php и lisp результатом выполнение программы будет:

Ув. Имя Фамилия! 
Лекция по PHP начнется в . Лектор - 
Лекция по Lisp начнется в . Лектор -

...Я обязательно досконально изучу вариант выполнения этой задачи представленный курсами, которые я прохожу, но сначала хотел бы узнать, в чем проблема моего кода. 
Не ругайтесь на кривой код и не верные формулировки, я только начал обучение smile
Спасибо заранее. Надеюсь всё правильно оформил)

Это сообщение отредактировал(а) Deadcow - 26.7.2010, 14:13
PM MAIL WWW Skype   Вверх
Deadcow
Дата 26.7.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2008
Где: Москва

Репутация: нет
Всего: нет



Разобрался. Мой косяк был в том, что я совершенно забыл - ключи в массиве чувствительны к регистру. Соответственно заменил в коде php на PHP и т.д., как указано в форме и всё заработало. 

Код

<? 
    define ("SIGN", "C уважением, Администрация.");
    $name = $_POST["first_name"] ." ". $_POST["last_name"];
        if (!isset($_POST["kurs"])){  
            echo "Ув. $name, с курсами Вы сможете определиться и на следующем собрании, 12 октября в час дня. <br><br>" . (SIGN);
        } else { 
            $str = "Ув. $name! <br>";
            $kurs = $_POST["kurs"]; 
            $time = array("PHP" => "10.30", "Lisp" => "12.40", "Perl" => "10.00", "Unix" => "13.30"); 
            $lector = array("PHP" => "Сергей Иванович", "Lisp" => "Николай Дмитриевич", "Perl" => "Иван Васильевич", "Unix" => "Андрей Андреевич"); 
            for ($i="0";$i<count($kurs);$i++) { 
            $k = $kurs["$i"];
            $lection = "Лекция по $k начнется в " . $time["$k"] . ". Лектор - " . $lector["$k"] . ".<br>";
            $str .= $lection;
            }
        $str .= "<br>" . (SIGN);
    echo $str; 
        }
?>


В следующий раз буду внимательней чесать код перед тем как писать на форум. Извините за создание темы  smile 

Это сообщение отредактировал(а) Deadcow - 26.7.2010, 15:21
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.