Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据PHP OOP中选定的单选按钮验证2个字段_Javascript_Php_Jquery - Fatal编程技术网

Javascript 根据PHP OOP中选定的单选按钮验证2个字段

Javascript 根据PHP OOP中选定的单选按钮验证2个字段,javascript,php,jquery,Javascript,Php,Jquery,我在我的电子商务网站上创建了一个问题表单,将产品添加到购物车中 以下是截图: 您可以在上面看到这两个屏幕截图。如果用户单击Daily单选按钮,则会隐藏两个div,因为在Daily选项上,用户不需要回答这两个问题。但是,如果用户单击每周或每月单选按钮,则会出现这两个div。我使用jQueryhide()和show()隐藏和显示这两个div。所以,我正在验证这一切,但我想正确地验证这一点,如果用户单击Daily按钮,则两个隐藏的divs不应按要求在后端进行验证,但如果用户单击每周或每月则两个di

我在我的电子商务网站上创建了一个问题表单,将产品添加到购物车中

以下是截图:



您可以在上面看到这两个屏幕截图。如果用户单击
Daily
单选按钮,则会隐藏两个
div
,因为在
Daily
选项上,用户不需要回答这两个问题。但是,如果用户单击
每周或每月
单选按钮,则会出现这两个
div
。我使用jQuery
hide()
show()
隐藏和显示这两个div。所以,我正在验证这一切,但我想正确地验证这一点,如果用户单击
Daily
按钮,则两个隐藏的
div
s不应按要求在后端进行验证,但如果用户单击
每周或每月
则两个
div
s应按要求进行验证。我无法理解如何实现这一点

这是我的密码:

<form method="post">
    <div class="select_package_validity">
        <input type="radio" class="custom-control-input plan_name" name="plan_name_selector" value="Daily">
        <input type="radio" class="custom-control-input plan_name" name="plan_name_selector" value="Weekly">
        <input type="radio" class="custom-control-input plan_name" name="plan_name_selector" value="Monthly">
        <input type="hidden" name="plan_name" class="selected_plan_name" />
    </div>
    <div class="select_days">
        <input type="radio" class="custom-control-input plan_days" name="plan_days_selector" value="5">
        <input type="radio" class="custom-control-input plan_days"name="plan_days_selector" value="6">
        <input type="radio" class="custom-control-input plan_days" name="plan_days_selector" value="7">
        <input type="hidden" name="plan_days" class="selected_plan_days" />
    </div>
    <div class="days_names">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Monday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Tuesday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Wednesday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Thursday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Friday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Saturday">
        <input type="checkbox" class="custom-control-input" name="day_name_selector" value="Sunday">
        <input type="hidden" class="selected_days_names" name="days_names" />
    </div>
    <div class="food_time">
        <input type="checkbox" class="custom-control-input" name="food_time_selector" value="Breakfast">
        <input type="checkbox" class="custom-control-input" name="food_time_selector" value="Lunch">
        <input type="checkbox" class="custom-control-input" name="food_time_selector" value="Dinner">
        <input type="hidden" name="calculated_order_price" id="calculatedFinalPrice" />
        <input type="hidden" class="selected_food_time" name="food_time" />
    </div>
</form>

功能代码:

public function addToCartOrderPackage($data, $proId){

    // Note: $plan_days and $days_names are that 2 div's which i am hiding and showing and wanna validate only on if these are showing 

    $pro_id = mysqli_real_escape_string($this->db->link, $proId);
    $plan_name = mysqli_real_escape_string($this->db->link, $data['plan_name']);
    $plan_days = mysqli_real_escape_string($this->db->link, $data['plan_days']);
    $days_names = mysqli_real_escape_string($this->db->link, $data['days_names']);
    $calOrderPrice = mysqli_real_escape_string($this->db->link, $data['calculated_order_price']);
    $food_time = mysqli_real_escape_string($this->db->link, $data['food_time']);
    $starts_from = mysqli_real_escape_string($this->db->link, $data['starts_from']);

    $query = "SELECT * FROM products WHERE pro_id = '$pro_id' AND pro_type = 'Plan'";
    $result = $this->db->select($query);
    $value = $result->fetch_assoc();
    $pro_name = mysqli_real_escape_string($this->db->link, $value['pro_name']);
    $pro_desc = mysqli_real_escape_string($this->db->link, $value['pro_desc']);

    $withLogin = $this->withLoginAddToCart($pro_id, $pro_name, $calOrderPrice, $pro_desc, $plan_name, $plan_days, $days_names, $food_time, $starts_from);
    return $withLogin;
}

public function withLoginAddToCart($pro_id, $pro_name, $calOrderPrice, $pro_desc, $plan_name, $plan_days, $days_names, $food_time, $starts_from){
    $userid = Session::get("user_id");
    $user_id = mysqli_real_escape_string($this->db->link, $userid);
    $arraynames = explode(",", $days_names);
    $countdays = count($arraynames);

    // Note: $plan_days and $days_names are that 2 div's which i am hiding and showing and wanna validate only on if these are showing 

    if($plan_name == "" || $plan_days == "" || $days_names == "" || $calOrderPrice == "" || $food_time == ""){
        $msg = "<div class='alert alert-danger'>All fields are required. Please fill all fields.</div>";
        return $msg;
    } else {
        if($plan_days == '5' && $countdays != 5){
            $msg = "<div class='alert alert-danger'>Please select 5 days names.</div>";
            return $msg;
        } elseif($plan_days == '6' && $countdays != 6){
            $msg = "<div class='alert alert-danger'>Please select 6 days names.</div>";
            return $msg;
        } elseif($plan_days == '7' && $countdays != 7){
            $msg = "<div class='alert alert-danger'>Please select 7 days names.</div>";
            return $msg;
        } else {
            $queryO = "INSERT INTO plan_cart(user_id, pro_id, pro_name, pro_desc, pro_price, plan_name, plan_days, days_names, food_time, starts_from, pro_type) "
                    . "VALUES('$user_id', '$pro_id', '$pro_name', '$pro_desc', '$calOrderPrice', '$plan_name', '$plan_days', '$days_names', '$food_time', '$starts_from', 'Plan')";
            $resultO = $this->db->insert($queryO);
            if($resultO != false){
                header("location: plan-cart.php");
            } else {
                $msg = "<div class='alert alert-danger'>Something's went wrong, Please try again.</div>";
                return $msg;
            }
        }
    }
}
公共函数addToCartOrderPackage($data,$proId){
//注意:$plan_days和$days_名称是我正在隐藏和显示的2个div,仅在显示时才进行验证
$pro\u id=mysqli\u real\u escape\u字符串($this->db->link,$proId);
$plan\u name=mysqli\u real\u escape\u字符串($this->db->link,$data['plan\u name']);
$plan_days=mysqli_real_escape_字符串($this->db->link,$data['plan_days']);
$days\u names=mysqli\u real\u escape\u string($this->db->link,$data['days\u names');
$calOrderPrice=mysqli\u real\u escape\u string($this->db->link,$data['calculated\u order\u price']);
$food\u time=mysqli\u real\u escape\u字符串($this->db->link,$data['food\u time']);
$starts_from=mysqli_real_escape_string($this->db->link,$data['starts_from']);
$query=“从产品中选择*,其中pro_id='$pro_id'和pro_type='Plan';
$result=$this->db->select($query);
$value=$result->fetch_assoc();
$pro_name=mysqli_real_escape_字符串($this->db->link,$value['pro_name']);
$pro_desc=mysqli_real_escape_字符串($this->db->link,$value['pro_desc']);
$withLogin=$this->WithLoginAdToCart($pro_id、$pro_name、$calOrderPrice、$pro_desc、$plan_name、$plan_days、$days_names、$food_time、$start_from);
返回$withLogin;
}
带有LoginAdToCart的公共函数($pro_id、$pro_name、$calOrderPrice、$pro_desc、$plan_name、$plan_days、$days_names、$food_time、$starts_from){
$userid=Session::get(“user_id”);
$user\u id=mysqli\u real\u escape\u字符串($this->db->link,$userid);
$arraynames=explode(“,”,$days\u名称);
$countdays=计数($arraynames);
//注意:$plan_days和$days_名称是我正在隐藏和显示的2个div,仅在显示时才进行验证
如果($plan|U name==“”| |$plan|$days==“”| |$days | name==“”| |$calOrderPrice==“”| |$food|U time==“”){
$msg=“所有字段都是必填字段。请填写所有字段。”;
返回$msg;
}否则{
如果($plan_days='5'&&$countdays!=5){
$msg=“请选择5天名称。”;
返回$msg;
}其他($plan_days='6'和&$countdays!=6){
$msg=“请选择6天名称。”;
返回$msg;
}其他($plan_days='7'&&$countdays!=7){
$msg=“请选择7天名称。”;
返回$msg;
}否则{
$queryO=“插入计划车(用户id、专业id、专业名称、专业描述、专业价格、计划名称、计划天数、天数名称、食物时间、起始日期、专业类型)”
“值(“$user_id”、“$pro_id”、“$pro_name”、“$pro_desc”、“$calOrderPrice”、“$plan_name”、“$plan_days”、“$days_names”、“$food_time”、“$start_from”、“plan”);
$resultO=$this->db->insert($queryO);
如果($resultO!=false){
标题(“位置:plan cart.php”);
}否则{
$msg=“出现问题,请重试。”;
返回$msg;
}
}
}
}

这不是一个真正的jquery问题,我想答案可能很简单。您知道,当用户选择了每日交付时,div正在隐藏,因此在您的服务器代码中,我们的验证可能会被隐藏

if($plan_name == "" || (($plan_days == "" || $days_names == "")&&$plan_name!='Daily') || $calOrderPrice == "" || $food_time == "")

或者类似的东西。

我已经发布了我的问题的答案,我尝试了什么。请在答案列表中检查我的答案。如果这是好的或不好的,让我知道你的答案也工作,我想,但它是多一点代码:-)你的代码工作。但是兄弟。你减去了我努力的名声。没关系。你的代码工作得很好,实现了你的代码实现方式,并删除了我的代码。多谢了,负号不是我的。我可以理解为什么有人会认为这个问题不是很有用,但我不同意。让客户端代码和服务器代码很好地协同工作是一个非常常见的难题。哦,对不起,兄弟。我以为是你。但是你的代码成功了,我已经实现了。真是太好了,当然,兄弟。我会的,但有人告诉我mysqli\u real\u escape\u string()函数可以逃避SQL注入,我正在使用它?不要听他们的。谢谢兄弟。我会做的