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


Вы можете увидеть эти два скриншота выше.Если пользователь нажимает радиокнопку 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;
}
}
}
}