Jona, если вы когда-нибудь потрудились правильно форматировать свой код, вы увидите, что вопрос «else» находится в WITHIN A FUNCTION, и вы определяете $ ids и $ idc ВЗГЛЯД ФУНКЦИИ. Помните, что в PHP глобальные переменные (кроме супер-глобалов, таких как $ _GET, $ _POST и т. Д.) Не видны внутри функций, если вы не объясните их как глобальные функции внутри функции.
Добавить global $idc, $idc;
в качестве первой строки в определении функции, и ваш if() начнет работать правильно.
Followup:
Ваш код еще безобразно отформатирован, и очень шаткий. Отнесите:
isset($_GET['ids'])?$ids=$_GET['ids']:null;
Вы используете оператор троичного, но не назначая ее результатов в любом месте и с помощью «истинного» условия, чтобы сделать задание. Это уродливый хак. Это должно быть написано так:
$ids = isset($_GET['ids']) ? $_GET['ids'] : null;
Таким образом $ids
будет установлено нулевое значение, если нет $_GET['ids']
. Это объясняет тот факт, что вы назначаете null вместо некоторого другого значения по умолчанию. Если действительно не было $_GET['ids']
, то это:
$idx = $_GET['ids'];
будет работать одинаково, так как PHP автоматически присвоит нуль в тех ситуациях, когда правая сторона не существует. Конечно, вам все равно придется дезинфицировать это значение, поскольку позже вы используете его в SQL-запросе. Оставляя это, мы просто приглашаем атаки SQL-инъекций и всевозможные другие злоупотребления.
Кроме того, вы все еще создаете $ids
и $idc
вне вашей функции ShowCart(). Таким образом, $ids
и $idc
в функции будут автоматически создаваться с нулевыми значениями, так как вы не объявили их глобальными.Я думаю, теперь это очевидно, что вы понятия не имеете, что это значит, так попробовать этот кусок кода:
<?php
$var = 'Here I am!';
function showVar() {
echo "Within showVar(), var is set to: $var\n";
}
function workingShowVar() {
global $var;
echo "Within workingShowVar(), var is equal to: $var\n";
}
showVar();
workingShowVar();
Если скопировать/вставить этот код, запустить его, вы увидите следующий вывод:
Within showVar(), var is set to:
Within workingShowVar(), var is set to: Here I am!
Обратите внимание, что обе функции идентичны, за исключением для global
декларации. Если вы можете выяснить разницу, то вы поймете, что вам нужно заново написать ShowCart()
функцию следующим образом:
function ShowCart() {
global $ids, $idc;
// rest of your code here
}
Обратите внимание, что '0' будет оценивать 'false'. Я бы просто выполнил 'isset()' внутри условий 'if'. – BalusC
, которые могут быть желаемой функциональностью? – nickf
см. Отредактированный скрипт выше спасибо! – jona