如何从多个嵌套if条件调用json

2024-01-09

我正在使用 CodeIgniter。我正在研究一个小项目,它是一个批次列表。现在,如果管理员想要创建批次列表,那么应该输入开始日期和结束日期以及开始时间和结束时间,然后它将在数据库中检查批次是否在相同的日期和时间运行?如果是,那么它将显示该消息,如果不是,那么它将创建一个新的批次列表。

如果日期相同,时间应该不同。

现在我的逻辑是, 我将第一个 new_start_date 与 exit_start_date 和 exit_end_date 进行比较,如果在两者之间找到日期,那么它将检查时间。

到目前为止,它正在工作比较。即使它正在检查时间,但如何退出进程并调用 JSON?因为从那里我的 JSON 不起作用。

I added "echo "time not match";"从那里我无法调用 JSON,我在网络选项卡上获取输出。

我得到输出

enter 1enter 2{"error":true,"msg":"Batch Created"}time not match

你能帮我解决这个问题吗?

 $id                         = $this->input->post('venue_id');
    $venue_id                   = implode(',',$id);     
    $activity_list_id           = $this->input->post('activity_name');
    $new_batch_start_date       = date('Y-m-d',strtotime($this->input->post('start_date')));    
    $new_batch_end_date         = date('Y-m-d',strtotime($this->input->post('end_date')));
    $new_batch_start_time       = $this->input->post('start_time');
    $new_batch_end_time         = $this->input->post('end_time');
    $days                       = implode(',',$this->input->post('days'));
    //print_r($days);   

    if($new_batch_start_date >= $new_batch_end_date)
    {
      $response['error'] = false;
      $response['msg']   = "End Date Should be Greater than Start Date";
      echo json_encode($response);
      return false;
    }

    //convert in Time Format
      $new_batch_start_time = strtotime($new_batch_start_time);   
      $new_batch_end_time = strtotime($new_batch_end_time);

      $venue = $this->input->post('name');
      $data = array(      
          'activity_list_id' => $this->input->post('activity_name'),          
          'batch_venue_id'   => $venue_id,      
          'batch_name'       => $this->input->post('batch_name'),     
          'start_date'       => date('Y-m-d',strtotime($this->input->post('start_date'))),     
          'end_date'         => date('Y-m-d',strtotime($this->input->post('end_date'))),     
          'start_time'       => $this->input->post('start_time'),     
          'end_time'         => $this->input->post('end_time'),     
          'total_capacity'   => $this->input->post('total_capecity'),
          'batch_status'     => 1,
          'created_by'       => trim($this->session->userdata['login_data']['user_id']),
          'created_date'     => date('d-m-Y h:i:s A'),
          'batch_days'     => $days
          );


    $get_batch_details = $this->Batch_model->fetchBatches(); 
    if(!empty($get_batch_details))
    {
      foreach ($get_batch_details as $rows)
      {
        $exist_batch_start_date =  $rows->start_date;
        $exist_batch_end_date =  $rows->end_date;
        $batch_time1 =  strtotime($rows->start_time);
        $batch_time2 =  strtotime($rows->end_time);
        $batch_venue_id = explode(',',$rows->batch_venue_id);
        $common_venue_id = array_intersect($id,$batch_venue_id);
        //print_r($common_venue_id);
        if($common_venue_id)
        {
          echo "enter 1";
        //if new batch start date  between existing batch start date 
        if($exist_batch_start_date <= $new_batch_start_date && $exist_batch_end_date >= $new_batch_start_date ){ 

          echo "enter 2";
          if($batch_time1 <= $new_batch_start_time && $batch_time2 > $new_batch_start_time){
                 $msg = "Other Batch Alredy Running On from Date $batch_start_date to $exist_batch_end_date on Time : $batch_time1 to $batch_time2.
                    Please Change Time Slot or Start And End Date"; 
                  $response['error'] = false;
                  $response['msg']   = $msg;
                  echo json_encode($response);
                  exit;
            }
            else{
              $result = $this->Batch_model->createBatch($data);
              echo "time not match";
              print_r($result);
            }
            break;
      }

     //if date is different 
 else 
    {
      $result = $this->Batch_model->createBatch($data);
    }    
}else 
    {
      $result = $this->Batch_model->createBatch($data);
    }
}
}
//first time creating batch
else 
    {
      $result = $this->Batch_model->createBatch($data);
    }

Mobel

function createBatch($data){
        if($this->db->insert('batch_list',$data))
            {
                $response['error'] = true;
                $response['msg']   = "Batch Created";
                echo json_encode($response);
            }
            else 
            {
                $response['error'] = true;
                $response['msg']   = "Failed to Create Batch";
                echo json_encode($response);
            }                   
    }

function fetchBatches()
    {
    $result = $this->db->where(['batch_list.batch_status'=>1,'activity_list.act_status'=>1])
                            ->from('batch_list')
                            ->join('activity_list','activity_list.activity_id = batch_list.activity_list_id')
                            ->get()
                            ->result();
        return $result;
    }

Ajax

success: function(response){
                    var data = JSON.parse(response);
                    if (data.error == true){                        
                        swal({
                             title: "Success", 
                             text: data.msg ,
                             type: "success"
                             }).then(function(){ 
                                location.reload();
                            }
                    );
                    } else {
                        swal({  
                            title: "Warning",                       
                             text: data.msg ,
                             type: "warning"
                            });
                    }
         }

你能帮我解决这个问题吗?


你的整个方法有点混乱,因为你发现自己处于大量冗余的代码片段中,没有人能够理解你到底想要什么 - 我在这里给你一些提示,包括基于你的代码的示例

  1. 使用例外- 它非常适合您的情况 - 如果出现问题 - 停止它
  2. 尝试在一定程度上过滤您的需求一项任务并尝试解决它 - 然后才进行下一个任务
  3. 永远 - 永远记住 - 思考一个术语 - 如果你发现重复相同的代码在您的应用程序中 - 您知道出了问题 - 并且你应该重构它- 不要为冗余感到羞耻 - 它们确实总是会发生 - 但如果你发现它们,你必须重构这些代码片段

现在以你的例子为例

你在这里的任务是什么?

  • 您可以尝试询问数据库是否已在运行批处理 - 您不需要迭代整个表条目
  • 比较管理员输入的两个日期 - 如果开始日期在结束日期之后,则立即停止应用程序
  • 我不太清楚你想在这里实现什么目标 - 但我真的相信你也可以在这里询问数据库(口号:find_in_set)

基于这些信息,我们现在可以开始开发东西了;)(如果我没有所有东西,只需完成上面的列表并尝试执行您的任务)

控制器:

try
{
    $id = $this->input->post('venue_id');
    $venue_id = implode(',',$id);     
    $activity_list_id = $this->input->post('activity_name');
    $new_batch_start_date = date('Y-m-d',strtotime($this->input->post('start_date')));    
    $new_batch_end_date = date('Y-m-d',strtotime($this->input->post('end_date')));
    $new_batch_start_time = $this->input->post('start_time');
    $new_batch_end_time = $this->input->post('end_time');
    $days = implode(',',$this->input->post('days'));

    $objDateStart = DateTime::createFromFormat('Y-m-d h:i a', $new_batch_start_date.' '.$new_batch_start_time);
    $objDateEnd = DateTime::createFromFormat('Y-m-d h:i a', $new_batch_end_date.' '.$new_batch_end_time);

    if ($objDateEnd < $objDateStart)    throw new Exception('End Date Should be Greater than Start Date');

    if ($this->Batch_model->hasBatchesBetweenDates($objDateStart, $objDateEnd)) throw new Exception('Other Batch already running On from '.$objDateStart->format('d-m-Y H:i').' to '.$objDateEnd->format('d-m-Y H:i').'. Please Change Time Slot for Start and End Date'); 

    $data = array(      
        'activity_list_id' => $this->input->post('activity_name'),          
        'batch_venue_id'   => $venue_id,      
        'batch_name'       => $this->input->post('batch_name'),     
        'start_date'       => $objDateStart->format('Y-m-d'),     
        'end_date'         => $objDateEnd->format('Y-m-d'),     
        'start_time'       => $objDateStart->format('H:i'),     
        'end_time'         => $objDateEnd->format('H:i'),     
        'total_capacity'   => $this->input->post('total_capecity'),
        'batch_status'     => 1,
        'created_by'       => trim($this->session->userdata['login_data']['user_id']),
        'created_date'     => date('d-m-Y h:i:s A'),
        'batch_days'     => $days
    );

    $this->Batch_model->createBatch($data);
}
catch(Exception $e)
{
    $arrError = [
        'error' => false,
        'msg' => $e->getMessage()
    ];

    echo json_encode($arrError);
}

Model:

public function hasBatchesBetweenDates(DateTime $objDateStart, DateTime $objDateEnd)
{
    $query = $this->db
    ->from('batch_list')
    ->join('activity_list','activity_list.activity_id = batch_list.activity_list_id')
    ->where('CONCAT(start_date,\' \',start_time)  >=', $objDateStart->format('Y-m-d H:i:s'))
    ->or_group_start()
        ->where('CONCAT(end_date, \' \', end_time) <=', $objDateEnd->format('Y-m-d H:i:s'))
        ->where('CONCAT(end_date, \' \', end_time) >=', $objDateStart->format('Y-m-d H:i:s'))
    ->group_end()
    ->get();

    return ($query->num_rows() > 0);
}

我希望您理解这里的概念 - 如果您有疑问 - 请随时询问

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从多个嵌套if条件调用json 的相关文章

  • Twitter 卡元标签问题

    有问题的网址 https www halleonard com viewpressreleasedetail action releaseid 10261 https www halleonard com viewpressreleased
  • jQuery 中的目标 @import 没有 ID 也没有其他属性

    我有这个 jQuery 代码 document ready function function adjustStyle width width parseInt width if width lt 701 style type text c
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • focusout 事件后,Mouseleave 事件在 Firefox 中无法持续触发

    我正在运行以下代码
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • Firefox 不会在使用 jQuery AJAX 加载的内容上呈现 CSS 样式

    我有一个网站 允许用户对书籍和文章发表评论 主表单有一个搜索输入 用于查找相关书籍或文章 来源 我使用 jQuery 根据输入的搜索词从外部站点动态加载新源 然后还使用 AJAX 返回列表中的源 我有两个问题 现在 在用户输入四个字符后 j
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • PHP 拒绝从 var_dump、print 等输出数据

    我目前正在运行 WAMP 服务器 并且在过去的 30 分钟内一直在尝试弄清楚我的项目如何以及为什么不会输出任何指定的 PHP 数据 起初我以为是因为我有一个 htaccess文件的output buffering被禁用 所以我删除了它 仍然
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述

随机推荐

  • xml dom解析器在java中按名称查找标签

    我有一个 xml 我只想获取城市和温度 我尝试了以下方法 HttpParams httpParameters new BasicHttpParams HttpClient httpclient new DefaultHttpClient h
  • 在 Word2Vec 中合并预训练模型?

    我已经下载了 1000 亿字的 Google 新闻预训练矢量文件 除此之外 我还在训练自己的 3GB 数据 生成另一个预训练的矢量文件 两者都有 300 个特征维度和超过 1GB 的大小 我如何合并这两个巨大的预训练向量 或者我如何训练一个
  • C# 中的映射的映射相当于什么

    在 C 中我正在使用map
  • MVP模式(GWT)的优点是什么

    我刚刚读过本文 http code google com intl de DE webtoolkit doc latest DevGuideMvpActivitiesAndPlaces html这确实让我很困惑 其次 此模型允许我们最大限度
  • 什么是控制器类? [复制]

    这个问题在这里已经有答案了 什么是控制器类 例如 uiviewcontroller uiviewcontroller 和 uiview 有什么区别 谢谢 Cocoa 使用面向对象编程中的模型 控制器 视图概念进行工作 在此系统中 模型由存储
  • 如何获取 NameValueSectionHandler 类型的 ConfigurationSection 的值

    我正在使用 C Framework 3 5 VS 2008 我正在使用ConfigurationManager将配置 不是默认的 app config 文件 加载到 Configuration 对象中 使用 Configuration 类
  • 解析 SDK 1.7.1 无法在 Xcode 6.3 中工作

    我的代码在 Xcode 6 2 中运行良好 更新到 Xcode 6 3 后 我遇到了一些 Nullabilty 错误 下载 Parse SDK 1 7 1 后 我可以解决这些错误 所以我删除了项目中旧的 Parse 框架文件并将新的粘贴到其
  • 将浮点数转换为无符号整数,同时保留顺序

    我找到了很多关于 SO 的答案 专注于转换float to int 我只处理正浮点值 我一直在使用的一种简单方法是 unsigned int float2ui float arg0 float f arg0 unsigned int r u
  • 设计 RESTful 登录服务

    我经历过类似的问题here https stackoverflow com questions 4608225 how do i implement login in a restful web service 但我还不清楚概念 这是我的场
  • Spark 使用数据局部性吗?

    我正在尝试了解 Apache Spark 的内部结构 我想知道 Spark 是否使用某些机制来确保从 InputFormat 读取或写入 OutputFormat 或 Spark 本机支持的其他格式而不是从 MapReduce 派生的格式
  • System.NotSupportedException - 无法比较“System.Linq.IQueryable”类型的元素

    我目前收到以下错误 gt EntityFramework SqlServer dll 中发生 System NotSupportedException 类型的异常 但未在用户代码中处理 其他信息 无法比较 System Linq IQuer
  • python selenium 将密钥发送到只读文本框

    我正在尝试使用下面的 python selenium 代码将密钥发送到下面的字段
  • 单行删除重复项,保持列表的排序[重复]

    这个问题在这里已经有答案了 我有以下清单 Herb Alec Herb Don 我想在保持顺序的同时删除重复项 所以它是 Herb Alec Don 以下是我详细地执行此操作的方法 l new for item in l old if it
  • 如何在 r2dbc 中连接表?

    在java反应器中 r2dbc 我有两个表 A B 我还为它们定义了存储库 如何获取A连接B组成的数据 我只提出以下方法 从 A 调用databaseClient select 然后在循环中从 B 调用 select 但我想要更有效和反应性
  • 如何将浮点数转换为字符串而不考虑区域设置?

    我的产品面向葡萄牙受众 其中逗号是小数点符号 我通常使用 CString Format 将数字输入字符串 它会考虑计算机的区域设置 虽然总的来说这是一个很好的方法 但我在格式化 SQL 查询时遇到了问题 例如 CString szInser
  • PL/Python 和 postgreSQL:返回多列表的最佳方法是什么?

    在 Pl Python 中 RETURNS setof 或 RETURNS table 子句用于返回类似结构化数据的表 在我看来 必须提供每一列的名称才能返回表 如果您有一个包含几列的表格 那么这很容易 但是 如果您有一个包含 200 列的
  • 如何将多列连接成单列(事先不知道其数量)?

    假设我有以下数据框 agentName original dt parsed dt user text qwertyuiop 0 0 16102 0 0 我希望创建一个新的数据框 其中多一列 该列连接了该行的所有元素 agentName o
  • 用 python 求解超越方程组

    假设我有以下四个方程 cos x x a 余弦 y y b a b 1 c sinc x d sinc y 对于未知变量x y a and b 注意cos x x a有多种解决方案 变量也类似y 我只感兴趣x and y值 首先是正根 如果
  • CSS“框架”可以解释浏览器的异常情况吗?

    我为一家小型媒体公司建立网站 不幸的是 我们大约 45 50 的客户群使用 IE6 而另一半则几乎均等地使用 Firefox 和基于 Webkit 的浏览器 还有少数 Opera 用户 我的每一个网站都使用类似于 Eric Meyer 的重
  • 如何从多个嵌套if条件调用json

    我正在使用 CodeIgniter 我正在研究一个小项目 它是一个批次列表 现在 如果管理员想要创建批次列表 那么应该输入开始日期和结束日期以及开始时间和结束时间 然后它将在数据库中检查批次是否在相同的日期和时间运行 如果是 那么它将显示该