Проверьте 2 поля в соответствии с выбранным переключателем в PHP OOP - PullRequest
0 голосов
/ 20 сентября 2019

Я создал форму вопроса на своем сайте электронной коммерции, чтобы добавить товар в корзину.

Вот скриншоты:

enter image description here

enter image description here

Вы можете увидеть эти два скриншота выше.Если пользователь нажимает радиокнопку Daily, тогда две div скрыты, поскольку при опции daily пользователю не нужно давать ответ на эти два вопроса.Но если пользователь нажимает радиокнопку Weekly or Monthly, то эти два div появляются.Я прячу и показываю эти два div'а с помощью jQuery hide() и show().Итак, я проверяю все это, но я хочу проверить это правильно, чтобы, если пользователь нажимал кнопку Daily, чтобы два скрытых div s не проверялись как требуется в бэк-энде, но если пользователь нажимал Weekly or monthly, тогдаДва div должны подтвердить, как требуется.Я не могу понять, как это можно реализовать.

Вот мой код:

<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;
            }
        }
    }
}

1 Ответ

1 голос
/ 20 сентября 2019

Это не совсем вопрос JQuery, и я думаю, что ответ может быть довольно простым.Вы знаете, что div-ы прячутся, когда пользователь выбрал ежедневную доставку, поэтому в коде вашего сервера наша проверка может быть

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

или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...