Резултати при $_GET

kini

Registered
Здравейте,

Очевидно имам някакъв проблем с $_GET...

Имам модул, който има повече от една $_GET заявка, но не знам, как точно да избегна това, да виждам и другите заявки, като извикан резултат. (Не знам дали го описах правилно)...


Пример:
kategoriq.php?id=1 - функционира и си изважда резултатите от даденото $id


Проблема идва, когато:

kategoriq.php?id=1&sub=5 - извикаш под-категория от дадената главна директория.
В този случай виждам резултата два пъти - показва и единичната заявка.

Код:
if (!$_GET['sub']) {

Код:
Така изобразявам меню с под-категории, което се вижда само след като е избрана главна категория:
if (!$_GET['sub'] && $_GET['i']) {

Къде ми е грешката?
:x
 
PHP:
if (!$_GET['sub']) {
Тук се казва следното: Ако няма $_GET['sub'] изпълни това. Много интересно правиш проверката. Защо не използваш isset(), тоест ако не е сетната променливата изпълни нещо си. В случая, който използваш ти по дефаут $_GET['sub'] = false, и когато му подадеш стойност става true. До тук е ясно но в следващият момент при подадено условие следва казус:
PHP:
<?php
$_GET['sub'] = false;
if (!$_GET['sub']) {
    print "In if";
}
Кода ще принтира, че е в if условието.
PHP:
<?php
$_GET['sub'] = 5;
if (!$_GET['sub']) {
    print "In if";
}
Така не влиза в if условието.

Промени си логиката на условието за вход. Ако очакваш цяло число може и така да проверяваш:
PHP:
<?php
$_GET['sub'] = 5;
if (is_int($_GET['sub'])) {
    print "In if";
}


Тук не трябва ли да е id не i?
if (!$_GET['sub'] && $_GET['i']) {
 
dakata__92 каза:
PHP:
if (!$_GET['sub']) {
Тук се казва следното: Ако няма $_GET['sub'] изпълни това. Много интересно правиш проверката. Защо не използваш isset(), тоест ако не е сетната променливата изпълни нещо си. В случая, който използваш ти по дефаут $_GET['sub'] = false, и когато му подадеш стойност става true. До тук е ясно но в следващият момент при подадено условие следва казус:
PHP:
<?php
$_GET['sub'] = false;
if (!$_GET['sub']) {
    print "In if";
}
Кода ще принтира, че е в if условието.
PHP:
<?php
$_GET['sub'] = 5;
if (!$_GET['sub']) {
    print "In if";
}
Така не влиза в if условието.

Промени си логиката на условието за вход. Ако очакваш цяло число може и така да проверяваш:
PHP:
<?php
$_GET['sub'] = 5;
if (is_int($_GET['sub'])) {
    print "In if";
}


Тук не трябва ли да е id не i?
if (!$_GET['sub'] && $_GET['i']) {

Здравей,

не е id, променил съм го на i

Също така забелязах, че трябва да започна кода с двете заявки и да завърша с едната. т.е първо започвам с i & sub и след дадения код слагам единичната i Така функционира, но все още тествам.
 

Горе