За последние 24 часа нас посетили 27976 программистов и 1815 роботов. Сейчас ищет 1151 программист ...

Условие isset

Тема в разделе "PHP для новичков", создана пользователем amf1k, 12 мар 2015.

  1. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    Помоги понять, почему не выполняется условие "//Если тема выбрана" ?
    Код (PHP):
    1. <span class="syntaxdefault"><br /></span><span class="syntaxcomment">//Если&nbsp;кнопка&nbsp;"Начать&nbsp;тест"&nbsp;не&nbsp;нажата<br /></span><span class="syntaxkeyword">if(!isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'start'</span><span class="syntaxkeyword">])){<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">'<form&nbsp;action=""&nbsp;method="POST"><button&nbsp;name="start">Начать&nbsp;тест</button></form>'</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxcomment">//Если&nbsp;кнопка&nbsp;"Начать&nbsp;тест"&nbsp;была&nbsp;нажата<br /></span><span class="syntaxkeyword">else{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxcomment">//Если&nbsp;тема&nbsp;не&nbsp;выбрана<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if(!isset(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'subject'</span><span class="syntaxkeyword">])){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxcomment">//Выводим&nbsp;ссылки&nbsp;на&nbsp;темы<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">getSubjects</span><span class="syntaxkeyword">()&nbsp;as&nbsp;</span><span class="syntaxdefault">$subject</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">'<a&nbsp;href="?subject='</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$subject</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">'">'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$subject</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'title'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">'</a><br/>'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxcomment">//Если&nbsp;тема&nbsp;выбрана<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">'Тема&nbsp;выбрана'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что isset($_GET['subject']) возвращает FALSE, потому что ты не передаешь subject на сервер.
     
  3. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    передавать в форме $_GET['subject'] ?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А как иначе на сервер попадет значение, если его никак не передали туда?
     
  5. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    ну я же ссылкой передал, может Вы нет так поняли:
    при нажатии на кнопку "Выбрать тему" -> выводим темы в цикле -> при клике на ссылку (название темы) -> передаю GET['subject'] с идентификатором темы -> тема выбрана! Проблема из-за того, когда нажимаю на ссылку (название темы) , сбрасывает условие if(!isset($_POST['start'])){
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Попробуйте ссылку полностью прописать, а не просто href=?subject;
    var_dump($_GET) сделайте перед тем if-ом и поглядите, что он выведет.
     
  7. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    при нажатие на ссылку, опять сбрасывает условие if(!isset($_POST['start'])){
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    На страничке должно быть показано содержимое GET-а.
     
  9. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    один человек подсказал немного изменить условие:
    //Если кнопка "Начать тест" была нажата
    if(($_SERVER['REQUEST_METHOD'] != "POST") && !isset($_GET['subject'])){
    но теперь можно легко зайти на ссылку без кнопки старт
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Для этого и нужны GET-запросы. Для возможности обращаться к серверу с условием, просто по ссылке.
     
  11. amf1k

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

    С нами с:
    20 авг 2014
    Сообщения:
    86
    Симпатии:
    0
    будем сессии использовать(
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    "Ты говоришь это так, как будто это что-то плохое"(с)

    Используйте. Выбор инструментария из того, что подходит, а не из того, что знакомо - первый шаг на пути к становлению программиста.