Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
5 / 5 / 1
Регистрация: 04.01.2013
Сообщений: 393

Некорректно работает пользовательская функция

16.03.2017, 20:07. Показов 1162. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет!
есть переменная $status, которой присваивается значение из бд 1 либо 0.
теперь функция -
PHP
1
2
3
4
5
6
7
8
function status() {
                    if ($status = 0) {
                    echo 'Вы не подписаны!';
                    }
                    else {
                    echo 'Вы подписаны!';
                    }
                   }
при любом значении переменной выводится "Вы подписаны!".
в чем ошибка?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2017, 20:07
Ответы с готовыми решениями:

Не работает пользовательская функция convert_date()
<?php function convert_date($date,$mode=0) { $months =...

Некорректно работает функция замены
Здравствуйте! Имеется задача: Вводится текст в форму, который шифруется/дешифриуется. Проблема заключается в том, что при...

Пользовательская функция
Доброго времени суток не подскажете, почему функция возвращает "Resource id #5" вместо массива, код function file_to_mas($filepath) ...

15
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:08
PHP
1
if ($status == 0) {
у вас в ифе присвоение
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
16.03.2017, 20:10
Цитата Сообщение от dapkopoen Посмотреть сообщение
PHP
1
$status = 0
PHP
1
$status == 0
0
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:10
нужно сравнение
0
5 / 5 / 1
Регистрация: 04.01.2013
Сообщений: 393
16.03.2017, 20:11  [ТС]
Nick007, сделал двойное равно, теперь ошибка вылетает - Notice: Undefined variable: status в строке где IF
0
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:12
ну так заполнить нужно её

Добавлено через 45 секунд
либо объявить глобальной, либо передать значением в функцию, либо ещё что то
0
5 / 5 / 1
Регистрация: 04.01.2013
Сообщений: 393
16.03.2017, 20:13  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
include_once "db.php"; // Подключаемся к бае-данных
    header("content-type: text/html; charset=utf-8"); // Устанавливаем кодировку
    session_start(); // Запускаем сессию
    if(!isset($_SESSION['id']) ){header("location: /regis/on_off.php"); exit;} // Если НЕ Авторизирован - возвращаем назад
    $id = $_SESSION['id']; // id Пользователя
    $usr = mysql_fetch_assoc(mysql_query("SELECT * FROM reg WHERE id='$id'")); // Выбираем данные
    if(isset($_GET['stop'])){
        session_destroy();
        unset($_GET['stop']);
        header("location: /regis/on_off.php"); 
        exit;
        } // Кнопка - ВЫХОД
    $status = $usr['status']; // Проверяем статус подписчика
 
    function status() {
                        if ($status == 0) {
                        echo 'Вы не подписаны!';
                        }
                        else {
                        echo 'Вы подписаны!';
                        }
                       }
так что это переменная уже содержит значение
0
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:15
а вызывается status() где? и как в неё попадает $status ?

Добавлено через 22 секунды
function status() {
это наверное лишнее
0
5 / 5 / 1
Регистрация: 04.01.2013
Сообщений: 393
16.03.2017, 20:16  [ТС]
Nick007,
HTML5
1
2
3
<div style="padding:50px;">
    Добро пожаловать, <?=$usr['name'];?>! Ваш статус - <? status(); ?>
    <br><br>
0
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:17
либо сделать так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
include_once "db.php"; // Подключаемся к бае-данных
header("content-type: text/html; charset=utf-8"); // Устанавливаем кодировку
session_start(); // Запускаем сессию
if (!isset($_SESSION['id'])) {
    header("location: /regis/on_off.php");
    exit;
} // Если НЕ Авторизирован - возвращаем назад
$id = $_SESSION['id']; // id Пользователя
$usr = mysql_fetch_assoc(mysql_query("SELECT * FROM reg WHERE id='$id'")); // Выбираем данные
if (isset($_GET['stop'])) {
    session_destroy();
    unset($_GET['stop']);
    header("location: /regis/on_off.php");
    exit;
} // Кнопка - ВЫХОД
global $status;
$status = $usr['status']; // Проверяем статус подписчика
 
function status() {
    global $status;
    if ($status == 0) {
        echo 'Вы не подписаны!';
    } else {
        echo 'Вы подписаны!';
    }
}
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
16.03.2017, 20:18
dapkopoen, у функций своя область видимости. $status внутри и вне функций - это абсолютно разные переменные.
0
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:21
или статус сразу в сесссию загнать
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
16.03.2017, 20:23
Nick007, не нужны тут ни глобальные переменные, ни сессии.

Вызов функции:
PHP/HTML
1
Ваш статус - <? status($usr['status']); ?>
Сама функция:
PHP
1
2
3
4
function status($status)
{
    echo $status ? 'Вы подписаны!' : 'Вы не подписаны!';
}
1
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
16.03.2017, 20:25
Цитата Сообщение от Jodah Посмотреть сообщение
не нужны тут ни глобальные переменные, ни сессии.
я бы вообще по другому сделал, автор спрашивал почему не работает.

Добавлено через 1 минуту
вариантов масса, на сколько только фантазии хватит.
1
5 / 5 / 1
Регистрация: 04.01.2013
Сообщений: 393
16.03.2017, 21:40  [ТС]
Jodah, Nick007, спасибо большое вам!

Добавлено через 1 час 14 минут
Jodah, а если требуется в зависимости от значения переменной status вывести разные блоки html?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
16.03.2017, 21:51
Лучший ответ Сообщение было отмечено dapkopoen как решение

Решение

dapkopoen, тогда функция не нужна, делаете так:

PHP/HTML
1
2
3
4
5
<?php if($usr['status']): ?>
<div>Блок 1</div>
<?php else: ?>
<div>Блок 2</div>
<?php endif; ?>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2017, 21:51
Помогаю со студенческими работами здесь

Пользовательская функция
Есть код: function chek_request($aArray) { $sCodeItem = ''; $sMessageItem = ''; foreach ($aArray as $sKeyArray =&gt;...

Пользовательская функция сортировки массива
Помогите разобраться с работой данной ф-и $memo = array( array('TIR','Покрышки',100), array('OIL','Масло',800), ...

Пользовательская функция обработки формы
Прошу помощи, все мозги выкипели уже. Задание было сделать обработку 2х значений диапазона температур введенных с формы ну и стандартно по...

Почему не работает пользовательская функция?
я разработал функцию. вот ее код BEGIN DECLARE siz varchar(255); DECLARE rez varchar(255); SELECT ties_lavto.Sessons...

Пользовательская функция работает не так, как ожидается: найти причины странного поведения функции
Ребята помогите, пожалуйста. Создаю функцию суммы дробных чисел, но она ничего не возвращает, экран пустой. Я знаю, что туплю, но все же. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru