PHP получает параметр получает неправильные значения

Я пытаюсь ввести параметр URL-адреса и использовать его, чтобы определить, какую информацию отображать на странице, но по какой-то причине информация читается неправильно. Первое, что я делаю, это проверяю указанный ниже параметр и присваиваю его $page

<?php
if(isset($_GET["page"])) {
    $page=$_GET["page"]; 
}
?>

Затем я проверяю, равняется ли $page 2 или 3. По какой-то причине, если я отображаю $page, я получаю правильное значение параметра, но он отображает неверную информацию.

<?php
if(isset($page) == '2') { ?>


DISPLAY INFO A
ECHO $PAGE RETURNS 2

<?php } elseif(isset($page) == '3') { ?>

DISPLAY INFO B
ECHO $PAGE RETURNS 3

<?php } else { something here } ?>

По какой-то причине, даже если $page возвращает 3, я получаю INFO A, который должен отображаться на странице 2. Я неправильно перетаскиваю параметр? URL выглядит так:

feed.php?page=3

4 ответа

Решение

PHP isset возврат функции Boolean, Вы должны изменить код на:

<?php
if(isset($page) && $page== '2') {
?>
DISPLAY INFO A
ECHO $PAGE RETURNS 2
<?php } elseif(isset($page) && $page== '3') { ?>
DISPLAY INFO B
ECHO $PAGE RETURNS 3
<?php } else { something here } ?>
if($page == '3')

Почему isset()? Вы уже делаете это, когда назначаете это. Может быть, это также:

if(isset($_GET["page"])) {
    $page = $_GET["page"]; 
} else {
    $page = '0';  // or something
}

Это не верно:

if(isset($page) == '2') { 

Так должно быть

if( $page == '2') {

Это будет только работать на странице 1, так как isset($page) возвращается true, который правдиво превращается в 1, isset() Функция только для проверки, была ли переменная установлена ​​или нет

isset() вернуть TRUE/FALSE, но вы сравниваете его с обычными целыми числами. логический TRUE в MySQL эквивалентно целому числу 1, но не пройдут остальные ваши тесты. Тебе нужно иметь:

if (isset($_GET['page'])) {
   if ($_GET['page'] == 1) { ... 1 stuff } 
   else if ($_GET['page'] == 2) { ... 2 stuff } 
}
Другие вопросы по тегам