Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600

Проблема с elseif

02.12.2020, 22:10. Показов 876. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Есть такая тема в коде, где при нажатии кнопок, каждый у себя (два пользователя) они заносят данные в бд и выполняют скрипт, но скрипт выполняется несколько раз, почему?
Часть кода:
У первого пользователя
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
if ($post_dump_gen_num==0 && $post_dump_spor_num==0) {
                                //запись в бд
 
                                //уведомление
                                include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
 
                           }
 
                            elseif ($post_dump_gen_num==1 && $post_dump_spor_num==2){
                              //запись в бд
                            
                                //уведомление
                                include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
 
                          }
 
 
                            elseif ($post_dump_gen_num==0 && $post_dump_spor_num==2){
                                //запись в бд
                                
                                //уведомление
                                include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
 
                            }
 
                            elseif ($post_dump_gen_num==2 && $post_dump_spor_num==1){
                                //запись в бд
                               
                                //уведомление
                                include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
 
                            }
 
                            
                            elseif ($post_dump_gen_num==0 && $post_dump_spor_num==1) {
                                //запись в бд
 
                              //уведомление
                                include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/generator_win_bd.php');
                            }
Также и у второго, за счет поста в БД им у каждого в ЛК включаются определенные функции, кнопки они могут нажимать только по очереди.

так вот
PHP
1
include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
срабатывает несколько раз, почему? условие же одно и он должен срабатывать только один раз...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2020, 22:10
Ответы с готовыми решениями:

Разный вывод (printf) табуляции (\t) ветвлений (if-if-if-else) и (if-elseif-elseif-else)
Почему результатом выполнения нижеследующего кода при вводе, например: "qweqwe" консоль (linux) отображает слитно: "qwe\tqwe"? ...

В чём причина ошибки, проблема с elseif
Помогите разобраться, ругается на elif Код ниже: #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as nu,...

If/elseif/else
Здравствуйте, я только начал изучать php. У меня вопрос почему на выходе у кода <?php $age = 21; if ($age > 18) ...

10
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
03.12.2020, 00:18
Цитата Сообщение от rsl89 Посмотреть сообщение
срабатывает несколько раз
это
PHP
1
include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
должно работать только один раз, даже если написать несколько раз подряд,
потому-что _once и путь к файлу один и тот-же.


Цитата Сообщение от rsl89 Посмотреть сообщение
скрипт выполняется несколько раз, почему?
Насколько можно понять , два пользователя запрашивают один адрес по одному разу.
... Два запроса, на сервере выполняется скрипт два раза, ... для каждого.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
03.12.2020, 13:49  [ТС]
у втрого пользователя подобная структура, тоже такие же запросы в бд но файл другой:
PHP
1
2
3
    
 
include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_gen.php');
Добавлено через 1 минуту
т.е.один нажал на кнопку выполнил запрос в БДи подключение скрипта, пришла задача второму...второй нажал на кнопку- выполнил запрос в и подключение файла и так пинают друг другу, но условия if else у всех разные
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
03.12.2020, 16:05
Цитата Сообщение от rsl89 Посмотреть сообщение
условия if else у всех разные
... Типа похожие но разные такие-же скрипты выполняются ?
Тогда совсем невозможно ничего понять. В привеённом отрывке кода всё однозначно,
две переменные, взависимости от значений которых выполняется только один блок кода,
или не выполняется ни одного.

По поводу двух пользователей, не понятно каким образом реализовано "пришла задача второму"

Как-бы если-бы выполнялись запросы к одному скрипту нужно чтобы в нём как-минимум различало принят-ли запрос от одного из двух, от кого из них, или от кого-то постороннего.
Вероятно, при попытке выполнить что-то одним из них два раза подряд , не соответствовало-бы сохранённое на сервере значение, для контроля очерёдности.

Как-бы например три переменных, из значений хранимых на сервере,... в двух идентификаторы участвующих, в третьей чья из них очередь.
Или не переменных, а значений в DB например + идентификатор для доступа к ним.
Можно обойтись и другими способами поддержки очерёдностм... похоже на то что её нужно, если правильно понял.

...И если вообще эти нажатия на кнопки отправляют http-запросы к серверу
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
03.12.2020, 16:17  [ТС]
Цитата Сообщение от x_lab Посмотреть сообщение
... Типа похожие но разные такие-же скрипты выполняются ?
Тогда совсем невозможно ничего понять. В привеённом отрывке кода всё однозначно,
две переменные, взависимости от значений которых выполняется только один блок кода,
или не выполняется ни одного.

По поводу двух пользователей, не понятно каким образом реализовано "пришла задача второму"

Как-бы если-бы выполнялись запросы к одному скрипту нужно чтобы в нём как-минимум различало принят-ли запрос от одного из двух, от кого из них, или от кого-то постороннего.
Вероятно, при попытке выполнить что-то одним из них два раза подряд , не соответствовало-бы сохранённое на сервере значение, для контроля очерёдности.

Как-бы например три переменных, из значений хранимых на сервере,... в двух идентификаторы участвующих, в третьей чья из них очередь.
Или не переменных, а значений в DB например + идентификатор для доступа к ним.
Можно обойтись и другими способами поддержки очерёдностм... похоже на то что её нужно, если правильно понял.

...И если вообще эти нажатия на кнопки отправляют http-запросы к серверу
Да, как-то мало инфы я дал...

Добавлено через 3 минуты
По идее include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php'); лишний раз не должен срабатывать, он же срабатывает только при определенном условии, а сам весь скрипт, куда входит эта часть кода срабатывает при нажатии на кнопку, не при простом обновлении страницы....
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
03.12.2020, 17:17
Цитата Сообщение от rsl89 Посмотреть сообщение
лишний раз не должен срабатывать,
Не должен... возможно где-то в другом месте включаете снова этот файл.
И похоже что не с помощью include_once
Потомучто как я говорил даже если написать три раза подряд , например так
Bash
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
27
28
zzz@zz MINGW32 ~
$ /c/srv/usr/php74/php  t1.php
array (
)
zzz@zz MINGW32 ~
$ cat <<\x > t1.php
<?php
var_export(debug_backtrace());
x
 
zzz@zz MINGW32 ~
$ cat <<\x > t2.php
<?php
include_once('./t1.php');
include_once('./t1.php');
include_once('./t1.php');
x
 
zzz@zz MINGW32 ~
$ /c/srv/usr/php74/php  t2.php
array (
  0 =>
  array (
    'file' => 'C:\\U\\home\\zzz\\t2.php',
    'line' => 2,
    'function' => 'include_once',
  ),
)
то debug_backtrace() распечатает только один раз, два остальных раза include_once() ничего не выполняет
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
03.12.2020, 17:32  [ТС]
Цитата Сообщение от x_lab Посмотреть сообщение
Не должен... возможно где-то в другом месте включаете снова этот файл.
И похоже что не с помощью include_once
Потомучто как я говорил даже если написать три раза подряд , например так
Bash
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
27
28
zzz@zz MINGW32 ~
$ /c/srv/usr/php74/php  t1.php
array (
)
zzz@zz MINGW32 ~
$ cat <<\x > t1.php
<?php
var_export(debug_backtrace());
x
 
zzz@zz MINGW32 ~
$ cat <<\x > t2.php
<?php
include_once('./t1.php');
include_once('./t1.php');
include_once('./t1.php');
x
 
zzz@zz MINGW32 ~
$ /c/srv/usr/php74/php  t2.php
array (
  0 =>
  array (
    'file' => 'C:\\U\\home\\zzz\\t2.php',
    'line' => 2,
    'function' => 'include_once',
  ),
)
то debug_backtrace() распечатает только один раз, два остальных раза include_once() ничего не выполняет
а что если проблема в elseif? может быть скрипт перебирает все варианты пока не найдет свой и последовательно выполняет скрипт?
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
03.12.2020, 17:57
Цитата Сообщение от rsl89 Посмотреть сообщение
что если проблема в elseif?
Если есть возможность, добавьте в этом файле $_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php'
PHP
1
echo '<xmp>', var_export(debug_backtrace(), 1), "</xmp>\n";
посмотрите выполняется-ли он несколько раз, и откуда его выполняет.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
03.12.2020, 20:32  [ТС]
Цитата Сообщение от x_lab Посмотреть сообщение
Если есть возможность, добавьте в этом файле $_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php'
PHP
1
echo '<xmp>', var_export(debug_backtrace(), 1), "</xmp>\n";
посмотрите выполняется-ли он несколько раз, и откуда его выполняет.
Протестил, запрос один:
Code
1
2
3
4
5
6
7
8
array (
  0 => 
  array (
    'file' => 'C:\\Webserver\\OSPanel\\domains\\sporim2\\template-js\\sporbutton.php',
    'line' => 83,
    'function' => 'include_once',
  ),
)
Добавлено через 13 минут
Странно даже заккоментировав файл все равно откуда-то выполняется это скрипт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
elseif ($post_dump_gen_num==1 && $post_dump_spor_num==0){
    //запись в бд
    $wpdb->update( 'wp_sp2bids',
        array( 'spor_vin' => 2),
        array( 'id_post' => $post_id,
            'onoff' => 1,
            'id_author' => $bid_author_name_id
        )
    );
    //уведомление
   // include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_gen.php');
 
}
Добавлено через 22 минуты
Нашел проблему нно не нашел как ее решить
Получается у нас на странице кнопки, каждые из них видят два пользователя переменно, нажимая на кнопки и внося в БД данные, для каждого кнопки ее нажатия предусмотрены свои if else, в каждом if else инклуд уведомления для одного из пользователей, так вот при нажатии одним на кнопку срабатывает сразу три if else для этого пользователя, не понятно почему ведь условия все разные и вообще почему так происходит

Добавлено через 1 минуту
можно как-то
include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_gen.php');
в своем if else ограничить? чтобы он выполнился вот только тут...?

Добавлено через 10 минут
Кстати нажатие каждой кнопки происходит при помощи JS и POST
Может быть что-то попадает в массив POST из одной кнопки и при нажатии второй срабатывает?
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
05.12.2020, 15:59
Цитата Сообщение от rsl89 Посмотреть сообщение
Кстати нажатие каждой кнопки происходит при помощи JS и POST
Может быть что-то попадает в массив POST из одной кнопки и при нажатии второй срабатывает?
без кода кнопок с комментариями ничего не понятно.

Добавлено через 6 минут
зачем столько if-ов делать? из вышеприведеного куска кода имеет особенность только последний. почему нельзя примерно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
if ($post_dump_gen_num==0 && $post_dump_spor_num==1) {
    //запись в бд
 
    //уведомление
    include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/generator_win_bd.php');
} else {
    //запись в бд
 
    //уведомление
    include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
}
и проверять post_dump_gen_num и $post_dump_spor_num в generator_win_bd.php
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
06.12.2020, 00:00  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
без кода кнопок с комментариями ничего не понятно.

Добавлено через 6 минут
зачем столько if-ов делать? из вышеприведеного куска кода имеет особенность только последний. почему нельзя примерно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
if ($post_dump_gen_num==0 && $post_dump_spor_num==1) {
    //запись в бд
 
    //уведомление
    include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/generator_win_bd.php');
} else {
    //запись в бд
 
    //уведомление
    include_once ($_SERVER['DOCUMENT_ROOT'] . '/template-js/notif_spor.php');
}
и проверять post_dump_gen_num и $post_dump_spor_num в generator_win_bd.php
так много if - они проверяют состояние переменных (которые берут данные из БД):
если 0 - 0
делаем 1

если 1-0
делаем 2

если 1-2
делаем 3
и т д...

касательно моей проблемы, думаю проблема в том что каждая из 4 кнопок передает данные методом POST через JS:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <script>
                    $('.review-form').submit(function () {
                        $.ajax({
                            type: "POST",
                            url: '/wp-content/themes/freelanceengine/template-js/generatorbutton.php',
                            data: $(this).serialize(),
 
                            success: function (data) {
                                location.reload();
                            },
                            error: function (jqXHR, text, error) {
                                console.log(error);
                            }
                        });
                        return false;
                    })
                </script>
и при нажатии всех кнопок в POST массиве создается неразбериха что и выполняется в нескольких if сразу, планирую для каждой отправки POST сделать индивидуальный input с уникальным значением, отпишусь после тестов, но пока
то только версия...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2020, 00:00
Помогаю со студенческими работами здесь

If.Then.Else.Elseif
Здравствуйте, я подумал по-практироватся в Visual Basic, но у меня появилась маленькая проблемка. Вот код: Public Sub vairis() Dim...

elseif или else if?
какой на ваш взгляд условный оператор лучше?:)

If/elseif/else в переменную
Есть переменная с условием $var = function_name($var2, ($_SESSION == 'ru' ? '****' : '####'), $var); как изменить этот код, если...

условие elseif
&lt;a href=&quot;?x=1&quot;&gt;Продукты&lt;/a&gt; условие if ($x==1) { include(&quot;product.php&quot;); } файлик product.php: &lt;?php if...

не работает if, elseif
Добрый день. Проблема(может быть и детская))), но никак не могу понять ПОЧЕМУ ?? Суть состоит в том что в $_GET прилетает значения в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru