Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2019, 15:06   #1
ara05ru
 
Регистрация: 01.02.2018
Сообщений: 9
По умолчанию Как вывести в сообщении alert данные из database.php

Добрый день дорогие друзья ! У меня есть вот такой табель по сотрудникам.
И если создать такой же табель заново этого же месяца и добавить туда повторно этого же сотрудника и указать "8" допустим 1-го числа, то всплывает окно "Конфликт с данными в другом табеле". то есть в один день нельзя в разных табелях ставить "8". Это проверка осуществляется с помощью ajax.php и функцией в database.php. А сообщение соответственно выводит js. Так вот задача такая, чтобы выводилось сообщение "Конфликт с данными в другом табеле <название объекта или табеля>" (название объекта или табеля одно и тоже). Понимаю что разобраться в чужом коде не легко, но хотелось бы получить от вас хоть какую нибудь подсказку в каком направлении думать. Ниже привел все нужные куски кода:
database.php
Код:
public function check_tabdata($tabemplid, $checkday, $cval){
        // Получаем tab id и даные из таблицы tabempl по этому id
        $tab = $this->get_tabempl($tabemplid);
        // print_r($tab);
        // далее получаем значение в таблице tables и искомый месяц
        $tab1 = $this->get_tab($tab['tab_id']);
        // print_r($tab1);
        $needmonth = $tab1['month'];
        // echo("needmonth:".$needmonth);
        //получаем все строки из таблицы tabempl с нужным empl_id
        $tabs = $this->find_tab_empl(0, $tab['empl_id'], 0);
        // print_r($tabs);
        // затем все строки из таблицы tables  этого сотрудника с нужным месяцем
        foreach ($tabs as $tb) {
            $tab2 = $this->get_tab($tb['tab_id']);
            // print_r($tab2);
            if ($tab2['month'] == $needmonth and $tb['id'] !=  $tabemplid) {
                $tabdata = $this->find_tab_data($tb['id']);
                //if (($tabdata[$checkday] == 'О') and ($cval == 'О')){
                    //return false;
                    //exit();
                //}
                if ($tabdata[$checkday] == '8' and $cval == '8')
                    return FALSE;
}
        }
        return true;
 
 
    }
ajax.php
Код:
if (!$db->check_tabdata($id, $cname, $val)){
    echo "errduplicate";
    exit();
}
edit.js
Код:
$.ajax({
                url: '/ajax/edittabemldataajax.php',
                type: 'POST',
                data: {val: newVal, id: id, cname: cname, days:d},
                cache: false,
                success: function(res){
                    if (!res ) {
                        alert('Ошибка при добавлении данных');
                        location.reload();
                    }
                    else if (res == 'errdiffdate') {
                        alert('Запрещено редактирование позднее 3 дней либо наперёд!');
                        location.reload();
                    }
                    else if (res == 'errduplicate') {
                        alert('Конфликт с данными в другом табеле');
                        location.reload();
                    }
                                        else{
                                           
                                            pushSumm(res);
                                        }
                                       
                },
                error: function(){
                    alert('Error!');
                },
            });
Изображения
Тип файла: jpg 2019-06-28_130830.jpg (31.4 Кб, 157 просмотров)
ara05ru вне форума Ответить с цитированием
Старый 29.06.2019, 15:33   #2
Agency
Пользователь
 
Регистрация: 07.10.2017
Сообщений: 99
По умолчанию

Вывод насколько я понимаю, поправить надо в
edit.js, строка
alert('Конфликт с данными в другом табеле');
можно добавить вывод id табеля, если этого будет достаточно, то тогда получим
alert('Конфликт с данными в другом табеле '+data.id);
Если id не достаточно, то надо организовать получение в res названия таблицы, для этого в database.php
возвращаем вместо "return false" - "returrn <имя таблицы>"
в ajax.php делаем немного по другому:
$tblname = $db->check_tabdata($id, $cname, $val);
if ($tblname != true)){
echo "errduplicate_".$tblname;
exit();
}

ну а в res надо будет соответственно отфильтровать название таблицы, и вставить, как в начале я написал про id...
Agency вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TImage вывести в сообщении darkwellroad Общие вопросы Delphi 5 30.11.2015 22:07
Вывести данные из БД TheTimeMachine Помощь студентам 2 14.10.2012 12:34
Как вывести данные из БД moshkin_ura PHP 2 05.04.2012 21:15