81

(15 відповідей, залишених у Бази даних)

funivan написав:

Додайте індекси

Це в phpMyadmin "додати індекс"?
Бо там є "повнотекстовий, унікальний"...

82

(15 відповідей, залишених у Бази даних)

Djalin написав:

дурне питання таблиця створюється кожного разу?

та звичайно, що ні.

Скоріше за все, відповіді я буду зберігати в таблиці запитань, а варіанти відповіді розділяти, наприклад==|||== а потім через explode витягувати їх. У базі результатів зберігати лише порядковий номер варіанту відповіді.... це буде максимальна оптимізація

83

(15 відповідей, залишених у Бази даних)

koala написав:

SQL - не єдине, що може навантажувати сервер. Ви певні, що саме запити довго ходять?
Пододавайте індекси, MySQL це за вас не зробить.
Ну і ORDER BY RAND() - це повільна операція (фактично перебудовується вся таблиця, а ви забираєте з неї всього 10 значень). Ось вам краще (в плані швидкості, не якості коду) рішення: http://stackoverflow.com/questions/1244 … d-function

так, близько 90% часу - запит до БД.

84

(15 відповідей, залишених у Бази даних)

VTrim написав:

Хай OPTIMIZE TABLE table_name все зробить за вас.

Всеодно довго виконується - близько 2,5сек грузиться сторінка.
Можливо змінити формат збереження тестів у базі, або якийсь більш оптимізований запит?

85

(15 відповідей, залишених у Бази даних)

Привіт усім! У мене написаний сайт онлайн тестування. Але він сильно навантажує сервер, тому треба оптимізувати. І ось як я його переписав:
База запитань:

CREATE TABLE IF NOT EXISTS `zno_questions` (
  `zno_questions-id` int(11) NOT NULL AUTO_INCREMENT,
  `zno_questions-toppic` int(11) NOT NULL,
  `zno_questions-type` int(11) NOT NULL,
  `zno_questions-showtext` int(11) NOT NULL,
  `zno_questions-text` text NOT NULL,
  `zno_questions-img` varchar(200) NOT NULL,
  `zno_questions-form` int(11) NOT NULL,
  PRIMARY KEY (`zno_questions-id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `zno_questions` (`zno_questions-id`, `zno_questions-toppic`, `zno_questions-type`, `zno_questions-showtext`, 
`zno_questions-text`, `zno_questions-img`, `zno_questions-form`) VALUES
(1, 1, 1, 0, 'Вопрос. Один верный ответ!', '', 0),
(2, 1, 2, 0, 'Выберите несколько ответов', '', 0),
(3, 1, 3, 0, 'Установите соответствия', '', 0);

база з відповідями:

CREATE TABLE IF NOT EXISTS `zno_answers` (
  `zno_answers-id` int(11) NOT NULL AUTO_INCREMENT,
  `zno_answers-question` int(11) NOT NULL,
  `zno_answers-answer` text NOT NULL,
  `zno_answers-true` text NOT NULL,
  `zno_answers-inf` int(11) NOT NULL,
  PRIMARY KEY (`zno_answers-id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;


INSERT INTO `zno_answers` (`zno_answers-id`, `zno_answers-question`, `zno_answers-answer`, `zno_answers-true`, `zno_answers-inf`) VALUES
(1, 1, 'ответ 1', '', 0),
(2, 1, 'ответ 2 верный', '1', 0),
(3, 1, 'ответ 3', '', 0),
(4, 1, 'ответ 4', '', 0),
(5, 2, 'ответ 1', '', 0),
(6, 2, 'ответ 2 верный', '1', 0),
(7, 2, 'ответ 3 верный', '1', 0),
(8, 2, 'ответ 4', '', 0),
(9, 3, 'Ответ А', 'Верный ответ к А', 0),
(10, 3, 'Ответ В', 'Верный ответ к В', 0),
(11, 3, 'Ответ Г', 'Верный ответ к Г', 0),
(12, 3, '', 'Лишний ответ Д', 0);

В полі zno_questions-type зазначаєтися тип запитання: 1 - одна вірна в-дь, 2 - декілька вірних відповідей, 3 - завдання на встановлення відповідності.
Як можна одним запитом вибрати питання і відповіді, впорядкувати їх рандомно і відповіді також рандомно?
Я вибирав декількома запитами:

SELECT *
FROM `zno_questions`
LEFT JOIN `zno_resultsinf` ON (`zno_resultsinf`.`zno_resultsinf-q` = `zno_questions`.`zno_questions-id`)
WHERE `zno_questions-toppic` = '".$TSTtoppic['zno_toppic-id']."' ".$search_if_saved."
ORDER BY `zno_resultsinf-id`,`zno_questions-form`, RAND()

І відповіді:

SELECT *
FROM `zno_answers`
LEFT JOIN `zno_resultsinf` ON (
    `zno_resultsinf`.`zno_resultsinf-a1` = `zno_answers`.`zno_answers-id` AND
    `zno_resultsinf`.`zno_resultsinf-res` = '".$TSTresults['zno_results-id']."'
)
WHERE `zno_answers-question` = ".$TSTquestion['zno_questions-id']."
ORDER BY `zno_resultsinf-id`, RAND()
LIMIT 10

Через LEFT JOIN додається таблиця, де зберігаються дані про питання та відповіді. Якщо вони вже збережені - то впорядковуються як в zno_resultsinf, а якщо ні - рандомно. так само і відповіді




А ще його треба зберегти. Ось таблиця, де зберігається інформація про тест, час початку і закінчення і т.д:

CREATE TABLE IF NOT EXISTS `zno_results` (
  `zno_results-id` int(11) NOT NULL AUTO_INCREMENT,
  `zno_results-user` int(11) NOT NULL,
  `zno_results-toppic` int(11) NOT NULL,
  `zno_results-d-start` datetime NOT NULL,
  `zno_results-d-finish` datetime NOT NULL,
  `zno_results-t-all` int(11) NOT NULL,
  `zno_results-t-true` int(11) NOT NULL,
  `zno_results-status` int(1) NOT NULL,
  `zno_results-deleted` int(1) NOT NULL,
  PRIMARY KEY (`zno_results-id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 

А тут інформація про ідентифікатор питання та відповідей, і відповідь яку вибрав користувач:

CREATE TABLE IF NOT EXISTS `zno_resultsinf` (
  `zno_resultsinf-id` int(11) NOT NULL AUTO_INCREMENT,
  `zno_resultsinf-res` int(11) NOT NULL,
  `zno_resultsinf-q` int(11) NOT NULL,
  `zno_resultsinf-a1` int(11) NOT NULL,
  `zno_resultsinf-a2` int(11) NOT NULL,
  `zno_resultsinf-val` varchar(200) NOT NULL,
  PRIMARY KEY (`zno_resultsinf-id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1130 ;

Скажіть будь ласка хоча б на словах - як можна це все максимально спростити?

86

(2 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Привіт! Хотів запитати... От задаю я фон  DIV при натисканні:

this.style.background= '#FFEC8B';

Але потім захотів, щоб воно виділялося іншим кольором при наведенні крім тих DIV, у яких фон #FFEC8B.
Проста перевірка не працює:

onmouseover="if(this.style.background != '#FFEC8B'){this.style.background= '#E6E6FA';}"

Задавав колірв RGB... також не працює(

87

(7 відповідей, залишених у Бази даних)

Привіт всім! Скажіть будь ласка, чи вірна конструкція запиту:

SELECT *
FROM `zno_questions`
RIGHT JOIN `zno_answers` ON (`zno_answers`.`zno_answers-question` = `zno_questions`.`zno_questions-id`)
WHERE `zno_questions-toppic` = 1
ORDER BY `zno_questions-id`, RAND(`zno_answers-answer`)

88

(8 відповідей, залишених у PHP)

А як зберігається інфа про прочитану тему в PunBB?

89

(5 відповідей, залишених у Бази даних)

А мені треба, щоб вивело один запис з таблиці `testing_questions`, а потім приєднало до нього стільки полей з `testing_answers`, стільки буде знайдено `testing_answers`.`testing_answers-question` = `testing_questions`.`testing_questions-id`
Двома запитами я це запросто зроблю, питання в тому - як зробити ОДИН

90

(5 відповідей, залишених у Бази даних)

Привіт усім! Підкажіть будь ласка, як в цьому запиті

SELECT *
FROM `testing_questions`
RIGHT JOIN `testing_answers` ON ( `testing_answers`.`testing_answers-question` = `testing_questions`.`testing_questions-id` )
WHERE `testing_questions-toppic` = '1'
LIMIT 0 , 1

зробити так, щоб воно взяло один запис з таблиці testing_questions, і додало справа стільки рядочків з іншої таблиці, скільки буде співпадінь  `testing_answers`.`testing_answers-question` = `testing_questions`.`testing_questions-id` ???

91

(5 відповідей, залишених у PHP)

Привіт усім! У мене є дві дати у форматі DATETIME
Мені треба дізнатися, чи є між ними різниця в 30хв?

date("Y-m-d H:i:s")
$GLOBAL_user['users_lastactive']

Дякую!

92

(4 відповідей, залишених у Бази даних)

Привіт всім! Чи вірно я побудував запит до бази даних?
(частинка)

Прихований текст

`users_logfalse-date` > NOW() - INTERVAL 30 MINUTE

93

(7 відповідей, залишених у PHP)

Singularity написав:
ktretyak написав:

написаний не на ООП, а тому з масштабованістю можуть бути проблеми.

що?

ООП!=Масштабованість

ООП - це що таке?

94

(8 відповідей, залишених у PHP)

Replace написав:

Може зберігати краще те, що користувач прочитав?

так, але питання де - в базі чи в куках, і як сильно воно буде навантажувати сайт при великій к-сті користувачів?

95

(8 відповідей, залишених у PHP)

Singularity написав:

в редіс

це що таке?

96

(8 відповідей, залишених у PHP)

Привіт усім! Я пишу свій форум, і в мене виникло питання: як зберігати інформацію про теми, які користувач ще не читав? Так, щоб не сильно навантажувати сервер?

97

(7 відповідей, залишених у PHP)

Всім привіт! Хотів би дізнатися у адмінів сайту - як вам форум PunBB у швидкодії, навантаженні на сервер і в боротьбі зі спам-ботами?
Хочу свій MyBB замінити на PunBB.