簡體   English   中英

從 Codeigniter 中的 DB MySQL 獲取復選框值

[英]Fetch checkbox values from DB MySQL in Codeigniter

好的,所以我經歷了一些與我的問題類似的問題,但我不知道該怎么處理我的問題。 我在我的 model 中有一個 function 從 db 獲取單個餐廳,並且我有一個字段將特定餐廳的所有營業日作為逗號分隔值保存,(1,2,3) 1 = 星期日 2 = 星期一 3 = 星期二以此類推,直到 7...

數據庫表

我想在餐廳有營業日時選中復選框,比如如果餐廳有 1、2、3,它應該從前端視圖檢查周日、周一和周二。這是我的 model ......抱歉這么久問題...請幫助如何做到這一點...

function get_single_restaurant($id){
    $this->db->from('restaurants');
    $this->db->where('id', $id);
    $query = $this->db->get();
    $output = '' ;
    foreach($query->result() as $row)
    {
        $output .= '<div class="modal-header">
        <h5 class="modal-title"><i class="fas fa-utensils"></i> View Restaurant</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label for="view_restaurant_name">Restaurant Name </label>
                    <input type="text" class="form-control" name="view_restaurant_name" id="view_restaurant_name" value="'.$row->restaurant_name.'" readonly>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <label for="view_max_pax">Maximun No. of Pax </label>
                    <input type="number" min="0" class="form-control" name="view_max_pax" id="view_max_pax" value="'.$row->max_pax.'" readonly>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                    <label for="name"><b>Opening Days </b></label>
                      <div class="row">
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_sunday" value="1" disabled>
                            <label class="custom-control-label" for="view_sunday">'.$row->opening_days.'</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_monday" value="2" disabled>
                            <label class="custom-control-label" for="view_monday">Monday</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_tuesday" value="3" disabled>
                            <label class="custom-control-label" for="view_tuesday">Tuesday</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_wednesday" value="4" disabled>
                            <label class="custom-control-label" for="view_wednesday">Wednesday</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_thursday" value="5" disabled>
                            <label class="custom-control-label" for="view_thursday">Thursday</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_friday" value="6" disabled>
                            <label class="custom-control-label" for="view_friday">Friday</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_days" name="opening_days[]" id="view_saturday" value="7" disabled>
                            <label class="custom-control-label" for="view_saturday">Saturday</label>
                          </div>
                        </div>
                      </div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                    <label for="name"><b>Meal Times </b><span class="text-theme-color">*</span></label>
                      <div class="row">
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_meal_times" name="view_breakfast" id="view_breakfast" value="1" disabled>
                            <label class="custom-control-label" for="view_breakfast">Breakfast</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_meal_times" name="view_lunch" id="view_lunch" value="2" disabled>
                            <label class="custom-control-label" for="view_lunch">Lunch</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_meal_times" name="view_dinner" id="view_dinner" value="3" disabled>
                            <label class="custom-control-label" for="view_dinner">Dinner</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_meal_times" name="view_evening_class" id="view_evening_class" value="4" disabled>
                            <label class="custom-control-label" for="view_evening_class">Evening Class</label>
                          </div>
                        </div>
                        <div class="col-sm-3">
                          <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input add_meal_times" name="view_morning_class" id="view_morning_class" value="5" disabled>
                            <label class="custom-control-label" for="view_morning_class">Morning Class</label>
                          </div>
                        </div>

                      </div>
                </div>
            </div>
        </div>
        <div class="row">
          <div class="col-md-12">
            <div class="form-group">
              <label for="description"><b>Description</b></label>
              <textarea name="view_restaurant_description" id="view_restaurant_description" class="form-control" disabled>'.$row->restaurant_description.'</textarea>
            </div>
          </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                      <label for="view_restaurant_status"><b>Restaurant Status</b></label><br>
                      <h6>'.$row->restaurant_status.'</h6>
                </div>
            </div>
        </div>
      </div>

      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
      </div>                        
                    ';
    }

    return $output;
}

這是我在前端的視圖

前端視圖

這是我的 Controller

function getRestaurant(){
    $id = $this->input->post('restaurant_id');
    $data = $this->sm->get_single_restaurant($id);
    if($this->sm->get_single_restaurant($id)){
        echo $data;
    }else{
        $data = array(
            'StatusCode' => '0',
            'message' => 'Invalid request'
        );
        echo json_encode($data);
    }
}

您的問題似乎與javascript而不是php/codeigniter有關。
不過,您需要的是制作一個單獨的checkbox ,並為clicked時要選擇的所有字段賦予一個值(就像您正在做的那樣),給它一些id ,添加一個event(change) ,然后給attribute所有inputs及其日期編號和 select 相應。

我創建了一個工作片段(當然沒有php ),必要時會提到注釋。 看看對你有沒有幫助。

 document.querySelector('#special').addEventListener('change', (event) => { // add event 'change' to id='special' let elements = event.target.value.split(','); // get the value and create an array by splitting it let checked = false; // default false if (event.target.checked) { // check if the checkbox is checked or unchecked checked = true; // change if checked } elements.forEach((item) => { // change the property of all the checkboxes where data-day = item document.querySelector('[data-day="'+item+'"]').checked = checked; }); })
 <input type="checkbox" value="1,2,3" id="special">1,2,3&nbsp; <,-- Give an id='special' and value='1,2,3' for Sunday, Monday. Tuesday <input type="checkbox" class="custom-control-input add_days" id='special' name="opening_days[]" id="view_sunday" value="'.$row->opening_days.'"> <label class="custom-control-label" for="view_sunday">'.$row->opening_days;'</label> --> <input type="checkbox" value="1" data-day="1" name="opening_days[]" id="view_monday">Sunday&nbsp; <;-- add attribut data-day with its value = day number --> <input type="checkbox" value="2" data-day="2" name="opening_days[]" id="view_monday">Monday&nbsp; <input type="checkbox" value="3" data-day="3" name="opening_days[]" id="view_tuesday">Tuesday&nbsp; <input type="checkbox" value="4" data-day="4" name="opening_days[]" id="view_wednesday">Wednesday&nbsp; <input type="checkbox" value="5" data-day="5" name="opening_days[]" id="view_thursday">Thursday&nbsp; <input type="checkbox" value="6" data-day="6" name="opening_days[]" id="view_friday">Friday&nbsp; <input type="checkbox" value="7" data-day="7" name="opening_days[]" id="view_saturday">Saturday&nbsp;

編輯 1

好的,所以我想,我誤解了你的問題,你想要的是檢查checkboxes與已經存儲在database中的值。 你可以這樣做 -

<input type="checkbox" value="<?php echo $row->opening_days; ?>" id="special"><?php echo $row->opening_days; ?>

<?php 
    // make an array of the values - 
    $element = explode(",", $row->opening_days));
?>

<input type="checkbox" value="1" data-day="1" name="opening_days[]" id="view_sunday" <?php echo in_array("1", $element) ? 'checked' : ''; ?>>Sunday 
<!-- if 1(day number) is present in array element then check else unchecked -->
<input type="checkbox" value="2" data-day="2" name="opening_days[]" id="view_monday" <?php echo in_array("2", $element) ? 'checked' : ''; ?>>Monday
<input type="checkbox" value="3" data-day="3" name="opening_days[]" id="view_tuesday" <?php echo in_array("3", $element) ? 'checked' : ''; ?>>Tuesday
<input type="checkbox" value="4" data-day="4" name="opening_days[]" id="view_wednesday" <?php echo in_array("4", $element) ? 'checked' : ''; ?>>Wednesday
<input type="checkbox" value="5" data-day="5" name="opening_days[]" id="view_thursday" <?php echo in_array("5", $element) ? 'checked' : ''; ?>>Thursday
<input type="checkbox" value="6" data-day="6" name="opening_days[]" id="view_friday" <?php echo in_array("6", $element) ? 'checked' : ''; ?>>Friday
<input type="checkbox" value="7" data-day="7" name="opening_days[]" id="view_saturday" <?php echo in_array("7", $element) ? 'checked' : ''; ?>>Saturday

編輯 2

首先,你不應該在modelcontroller上寫HTML 現在要回答您的問題,請查看我的答案的Edit 1部分,該代碼將起作用。 您只需要確保不要使用PHP標簽,因為您已經在PHP HTML

$output = '' ;
foreach($query->result() as $row){

    $output .= 'bla bla bla';
    $output .= '<input type="checkbox" value="'.$row->opening_days.'" id="special">'.$row->opening_days;

    $element = explode(",", $row->opening_days));

    $output .= '<input type="checkbox" value="1" data-day="1" name="opening_days[]" id="view_sunday" '. in_array("1", $element) ? "checked" : "".' >Sunday';
    $output .= '<input type="checkbox" value="2" data-day="2" name="opening_days[]" id="view_monday" '. in_array("2", $element) ? "checked" : "".' >Monday';
    $output .= '...'; // same for rest of the days
    $output .= 'bla bla bla';

    return $output;
}

由於{'}{"}{.}放錯位置,您可能會在上面的代碼中遇到一些語法錯誤,但我相信您有足夠的能力自己修復它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM