Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Оптимальный подход

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Danir
Отправлено: 31 Января, 2013 - 11:17:48
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Как нибудь можно оптимизировать? Помогите пожалуйста!

У меня такая программа:
Есть задания task_base
Есть выполнение задания task_act
Есть выполненные задания task_end
Мне надо пользователю выводить задания проверяя нет ли их в task_act и в task_end

Я делаю так

//Беру в массив айди выполненных заданий:
$result_end = mysql_query("SELECT * FROM `task_end` WHERE `uid_end` = '".$user."'");
while($url_end = mysql_fetch_assoc($result_end)){
$id_end[$vi] = $url_end['id'];
$vi++;
}

//Беру все задания
$result = mysql_query("SELECT * FROM `task_base` WHERE AND `uid_admin` <> '".$user."'");
while($urls = mysql_fetch_assoc($result)){

//Проверяю на выполненность (прогоняю массив)
if($id_end[$i] == $urls['id']){
$view=false;
break;
} else {
$view=true;
}

//Если выводить
if($view==true){

//Тут еще проверяю не выполняется ли задание
$url_act = mysql_num_rows(mysql_query("SELECT * FROM `task_act` WHERE `id` = ".$urls['id']." AND `uid` = '".$user."' LIMIT 1"));
if($url_action == 0){
echo 'ВЫВОЖУ';
}

}
 
 Top
DelphinPRO
Отправлено: 31 Января, 2013 - 11:45:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




у вас три таблицы что ли? почему выбрали такой вариант?

по-моему лучше все в одной:
ID, TASK, ..., STATUS

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `tasks` WHERE `status` = 0; // Задача есть, но не выполняется
  2. SELECT * FROM `tasks` WHERE `status` = 1; // Задача выполняется
  3. SELECT * FROM `tasks` WHERE `status` = 2; // Задача выполнена
  4. SELECT * FROM `tasks`; // Все задачи

(Отредактировано автором: 31 Января, 2013 - 11:47:30)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Danir
Отправлено: 31 Января, 2013 - 11:55:17
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




DelphinPRO
У меня задачи для многоих пользователей, так что
task_base должно быть отдельно)

А прогон по массиву как Вам? не считаете, что будет сильно грузить цп?
 
 Top
DelphinPRO
Отправлено: 31 Января, 2013 - 12:32:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Danir пишет:
А прогон по массиву как Вам? не считаете, что будет сильно грузить цп?
хз
одно могу сказать точно - архитектура бд неверная, отсюда всякий гемморой с циклами и запросами в циклах.
Danir пишет:
У меня задачи для многоих пользователей, так что

нужна связь пользователей с заданиями - сделайте таблицу связи

ИМХО


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Danir
Отправлено: 31 Января, 2013 - 12:40:25
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




DelphinPRO вот оно что мне надо) посоветуешь где можно почитать по понятней о этих связях мускула?Улыбка
 
 Top
DelphinPRO
Отправлено: 31 Января, 2013 - 13:03:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




вот вам стартовая ссылка http://habrahabr[dot]ru/qa/11916/
оттуда поймете общие понятия, и направление дальнейшего поиска

лучше вот http://www.online-academy.ru/demo/access/urok1/teor/teor4.htm

(Отредактировано автором: 31 Января, 2013 - 13:07:54)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB