Огромное количество запросов одновременно и заполнить флажок с данными на странице просмотра - PullRequest
0 голосов
/ 21 декабря 2011

У меня 365 номеров запросов, подобных следующим. Я создал это в сыром PHP давным-давно, но так как сейчас я использую codeigniter, я хочу сохранить запрос в моей модели.

На самом деле я создал календарь с функцией флажка для вставки даты в базу данных, и когда я заполнил свои флажки этими данными, я использовал следующий скрипт.

Теперь я не уверен, как сделать то же самое в Codeigniter, поскольку оно соответствует структуре MVC. Не могли бы вы сказать мне, если я хочу добиться того же, используя codeigniter, как будут выглядеть моя модель и вид?

<--Query 1 january 01 -->

<input type="checkbox" name="date[]" value="<? echo"$year-01-01 "; ?>" <? include('connect.php');
$check = mysql_query("SELECT wdt FROM workingdayteacher WHERE date='$year-01-01' AND teachername='$teacherid'");
if(mysql_num_rows($check))
 {
  echo "checked=\"checked\""; 
  } ?> > Jan 01 

<--Query 2 January 02 -->

 <input type="checkbox" name="date[]" value="<? echo"$year-01-02 "; ?>" <? include('connect.php');
 $check = mysql_query("SELECT wdt FROM workingdayteacher WHERE date='$year-01-02' AND teachername='$teacherid'");
 if(mysql_num_rows($check))
  {
  echo "checked=\"checked\""; 
  } ?> > Jan 02

<--Query 3 January 03 -->
 <input type="checkbox" name="date[]" value="<? echo"$year-01-03 "; ?>" <? include('connect.php');
 $check = mysql_query("SELECT wdt FROM workingdayteacher WHERE date='$year-01-03' AND teachername='$teacherid'");
  if(mysql_num_rows($check))
 {
  echo "checked=\"checked\""; 
   } ?> > Jan 03

Когда я показываю календарь, это выглядит следующим образом. Спасибо :)

enter image description here

Редактировать

Теперь я пытаюсь достичь того же, что и этот ...

           <input type="checkbox" name="date[]" value="<? echo"2011-05-18"; ?>" <? 
        if (in_array("2011-05-18", $date))
        {
        echo "checked=\"checked\""; 
        } ?> > Jan 03

Теперь вот эта $ date .. Я должен получить от моей модели через контроллер ...

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

CodeIgniter - это MVC, это означает, что вы должны поместить запрашиваемый код данных в модель и код для отображения объектов в представлении.Итак, первое, что вы должны сделать, это придумать структуру со всей информацией, которая вам нужна в представлении.В этом случае array представляет год, содержащий arrays, представляющий дни.Таким образом, в представлении вы можете проверить дату, проверяя содержимое $YOUR_ARRAY[$month][$day].

В вашей модели вы вызываете запросы, необходимые для заполнения этого массива.В Контроллере вы вызываете Модель для получения массива и передаете его в представление.

Ваш код в представлении будет выглядеть (отредактируйте соответствующим образом):

<?php $arr_months = array('Jan', 'Feb', 'Mar', ..., 'Dec'); ?>
<?php foreach($month in array_keys($YOUR_ARRAY)): ?>
    <?php foreach($month in array_keys($YOUR_ARRAY)): ?>
        <input type="checkbox" name="date[]" <?php if (isset($YOUR_ARRAY[$month][$day])) echo 'checked="checked"'; ?>><?php echo $arr_months[$month] . " " . $day; ?>
    <?php endforeach; ?>
<?php endforeach; ?>

Ив вашей модели вы, вероятно, могли бы выполнить только один запрос, примерно так:

$YOUR_ARRAY = array(array()); // init your array
$result = mysql_query("SELECT wdt, date FROM workingdayteacher WHERE date LIKE '$year-%' AND teachername='$teacherid'");
while ($row = mysql_fetch_assoc($result)) {
    list($year, $day, $month) = explode('-', $row['date']);
    $YOUR_ARRAY[int($month)][int($day)] = TRUE;
}

Надеюсь, это поможет!

0 голосов
/ 21 декабря 2011

В коде, вместо этого утомительно, почему бы не пройти через 2 цикла foreach, один для месяцев и один для дней, и продолжать проверять, совпадают ли месяц и дата цикла с любыми из таблицы, и показывать их.

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