2011-12-21 2 views
0

моя структура таблицы базы данных, как следующее:Как запросить мою базу данных, чтобы получить результат как массив?

wdt  date   teacherid 
1  2011-01-11   1001 
2  2011-01-11   1002 
3  2011-01-12   1001 
4  2011-01-12   1002 

Теперь то, что я хочу сделать, это выбрать поле даты из таблицы, где teacherid = «1001», а затем возвращает результат в виде массива, как this- массив («2011-01-11», «2011-01-12»)

так что в моем файле зрения я могу проверить, существует ли конкретные данные в массиве result- как следующее:

if (in_array("2011-05-18", $date))  // here the $date would be the array result which - 
             // I am expecting to get from model via controller 
     { 
     echo "Found"; 
     } 

Мои контроллер выглядит следующим образом:

function index(){ 


    $this->load->model('mod_teacher_workingday'); 
    $data['date']= $this->mod_teacher_workingday->get(); 

    $data['main_content']='view_teacher_workingday'; 
    $this->load->view('includes/template',$data); 
    } 

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

Спасибо :)

+0

in_array может/должен быть заменен на array_flip && isset – malletjo

ответ

2

Должно быть:

$query = $this->db->select('date') 
        ->from('teachers') 
        ->where('teacherid',1001) 
        ->get(); 
$dates = array(); 
foreach($query->result() as $date) 
{ 
    $dates[] = $date->date; 
} 
return $dates; 

Возвращаемый массив будет просто пустым в случае результатов не найдено, что Я БЫ.

+0

привет, спасибо за ваш ответ .. Я пробовал так, как вы упомянули, но когда я запускаю сценарий, я нахожу ошибку в своем представлении в «if (in_array (« 2011-05-18 », $ date)) «.... сообщение говорит:« Сообщение: in_array() [function.in-array]: неправильный тип данных для второго аргумента « –

+0

UHm, я не могу проверить его сейчас, поэтому, пожалуйста, var_dump() или print_r() возвращенный массив Посмотрите, как это выглядит на самом деле –

+0

Спасибо Damien Pirsy. Я должен был внести небольшие изменения, и он работает именно так, как я хотел .. :) проверить отредактированную часть вашего кода .. :) Спасибо человеку –

1

Почему вы не смотрите на дату с MySQL, гораздо более эффективным.

Select teacherid from teachers where date = "2011-05-18" AND teacherid = 1001 

Если вы получите 0 результатов, вы знаете, что эта комбинация не существует

+0

На самом деле, если мне действительно нравится, как вы упомянули, мне приходится составлять 365 различных запросов, поскольку я работаю с календарем. После получения всей информации из базы данных .. в моем файле просмотра я просто хочу проверить, существует ли конкретная дата в результате массива. если существует, то я попрошу скрипт PHP проверить флажок. Спасибо :) –

0

Сделайте себе одолжение, загрузите IDE с поддержкой базы данных. Netbeans позволяет подключаться к базе данных с помощью драйвера JDBC. Вы можете сделать необработанный запрос «на лету» прямо в вашем приложении. Затем, как только вы закроете ваш запрос, просто переведите его в запись Codeigniter Active или все, что вы используете, или просто используйте необработанные запросы Active records.

Смежные вопросы