41

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

Він має бути унікальний на всю базу даних, так?

42

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

fk_address - де воно взялося тут? І для чого воно?

звичайно, що працює

43

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

Аааа ось, знайшов!

CREATE TABLE IF NOT EXISTS `pages` (
  `pages_id` int(11) NOT NULL AUTO_INCREMENT,
  `pages_address` int(11) NULL,
  `pages_type` int(11) NOT NULL,
  `pages_user` int(11) NOT NULL,
  `pages_date` int(11) NOT NULL,
  `pages_update` int(11) NOT NULL,
  `pages_title` varchar(200) NOT NULL,
  `pages_text` text NOT NULL,
  PRIMARY KEY (`pages_id`),
  CONSTRAINT `fk_address` FOREIGN KEY `fk_address` (`pages_address`)
  REFERENCES `pages` (`pages_id`)
  ON DELETE CASCADE
) ENGINE=InnoDB;

44

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

ktretyak написав:

Що ви маєте на увазі "видаляються дочірні елементи", якщо ви кажете що це все робиться в одній таблиці?

Наприклад, додаєш запис А, до нього дочірніми записи Б і В
при видаленні в таблиці запису А автоматично видаляються записи Б і В

45

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

ktretyak написав:

Те, що вам потрібно, називається "зовнішні ключі" або "foreign key". Для новачків це не проста тема, але головне правило при роботі із зовнішніми ключами: не створювати таблицю, поля якої посилаються на неіснуючу таблицю... хоча це я сходу згадав це правило, а там здається ще знайдете щось непросте...

А для того щоб видалялись поля в одній таблиці і автоматично це робилось в іншій, то дивіться у вашому редакторі SQL згадування про каскадність

та я колись таке робив, воно все в одній таблиці - видаляєш батьківський запис - видаляються всі дочірні. от тільки ніде не можу знайти це =(

46

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

Привіт усім!
Мені потрібно створити деревоподібну структуру таблиці в SQL. Хочу реалізувати категорії, підкатегорії і т.д на сайті, щоб при видаленні категорії видалялися всі підкатегорії. Як правильно побудувати цей запит, щоб створити таку таблицю?
Необхідні поля:
id
parrent_id
type - тип, категорія чи власне текст статті
title - заголовок
text - опис

Наперед дякую

47

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

VTrim написав:

Тоді можна ще так.

function foo() { return ['foo'=>'foo1', 'bar'=>'bar2', 'baz'=>'baz3']; }
 
extract(foo());
 
echo $foo, $bar, $baz;

Але скрипт з ООП працює повільніше, ніж звичайне?

48

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

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

та я щось ніяк не можу зрозуміти це ООП і в яких випадках і як правильно його використовувати на практиці

Ось це розуміння потреби використання ООП, якраз дуже близько стосується теми "області видимості".

Як правило новачкам не зрозуміло для чого воно, бо вони роблять якісь досить маленькі проекти щоб заплутатись в них. ООП просто додатково розділяє області видимості для випадку, коли у вас є великий проект.

Грубо кажучи, область видимості повинна приблизно дорівнювати області видимості програмістом свого проекту в певній функції, яку він програмує.

ну наприклад при написанні сторінки реєстрації користувачів, активації їх сторінки і авторизації де ООП може пригодитися?

49

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

ktretyak написав:

Для чого взагалі області видимості? - Для того щоб не плутатись у вашому коді.

Важко заплутатись у 10-ти рядках коду, але дуже легко це зробити, якщо ваш код, скажімо, хоча б не вміщається на одному екрані монітора. Бо дуже часто програміст в своїй роботі використовує звичні для нього імена змінних.

З появою ООП у PHP, ще більше додалось областей видимості, і все це робиться для тієї ж самої мети - не плутати змінні, які виконують різні призначення, але мають однакові імена.

Свого часу я точно так само як і ви хотів щоб все кругом було доступно. Але все ж необхідно приділити час для вивчення областей видимості, це варте того.

та я щось ніяк не можу зрозуміти це ООП і в яких випадках і як правильно його використовувати на практиці

50

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

Привіт усім!

function abc(){
 $a = 'text_1';
 $b = 'text_2';
}

як заставити $a и $b бути доступними за межами функції? Я робив ось так:

function abc(){
 $return['a'] = 'text_1';
 $return['b'] = 'text_2';
 RETURN $return;
}

$temp = function abc();
$a = $temp['a'];
$b = $temp['b'];

може є простіший спосіб?

51

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

Djalin написав:

http://тестування.укр/users/

Forbidden

You don't have permission to access /users/ on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.26 (Unix) mod_ssl/2.2.26 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at xn--80adi8aaufcj8j.xn--j1amh Port 80

я усе розумію, але нащо це показувати усім?

Вже давно оновив)

52

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

VTrim написав:

Тоді краще записуйте кількість постів на форумі у таблицю самого користувача.
Наприклад є таблиця users і є колонка forum_posts  і в ній  (через скрипт) при додаванні/видаленні повідомленяя на форумі оновлюйте її значення на +1/-1

Тоді для CRON'у просто виводьте інформацію по користувачам,типу

SELECT forum_posts FROM users

так і є
Якщо я адмін, і видаляю цілу тему, тоді всім користувачам, які писали в тему треба перерахувати к-сть повідомлень. Я заганяю ід  користувача, який написав у массив, потім видаляю ІД користувачів, які повторюються і оновлюю їм к-сть повідомлень

53

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

SELECT `u`.`users_id` , (

SELECT COUNT( `forum_posts-id` )
FROM `forum_posts`
WHERE `forum_posts`.`forum_posts-user` = `u`.`users_id`
) AS posts
FROM `users` `u`
WHERE `u`.`users_id`

так буде правильно?

54

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

koala написав:
SELECT `forum_posts`, COUNT(`forum_posts`)
FROM `forum_posts`
GROUP BY `forum_posts`
WHERE `forum_posts-users` IN (8,25,9,5)

Здається, так.

тоді в результаті один рядочок, де forum_posts-users=8 а решта ігнорує

55

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

yarko написав:

Використайте COUNT

Я знаю, що COUNT рахує к-сть записів. Але як підрахувати к-сть записів для кожного користувача?
Я може запроста це зробити: запит в циклі FOREACH, але так неправильно.

56

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

Привіт усім!

SELECT *
FROM `forum_posts`
WHERE `forum_posts-users` IN (8,25,9,5)

Чи можливо дізнатися, скільки знайдено рядочків для кожного користувача? Це я пишу для CRON, щоб щоночі перераховував к-сть повідомлень кожного користувача на форумі)
Може якось через GROUP BY?

Буду вдячний за відповідь.

57

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

Привіт усім! Хотів запитати, чи можливо перевірити чи виконався запит mysql_query("DELETE.... UPDATE...."). Тобто чи немає помилки в самому запиті незалежно від того чи були видалені (оновлені) записи чи ні?
Крім or die()

58

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

Vo_Vik написав:

Попробуйте в ручну добавити до урл хеш таг і переконайтесь що браузер його зігнорує, бо то та сама сторінка,

Рішення з випадковим додатковим параметром хороше. Також можете спробувати щось таке:

    if (window.location.hash) {
        location.hash = window.location.hash;
    }

та от в тому і проблема, що бравзер ігнорує... А як заставити його оновити сторінку незалежно від того яка сторінка?
А це випадкові числа щоб адреса сторінки відрізнялася?

59

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

Така сама ситуація
Я знахожуся на сторінці http://newsite.ua/forum/t-32.html?page=1
після того, як я додаю перше повідомлення - все працює, воно перевантаує сторінку на адресу:
http://newsite.ua/forum/t-32.html?page=1#75
Якщо знову додати повідомлення - сторінка не оновлюється

60

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

Тако. Є форма з додаванням нового повідомлення. Відправляє ajax запит з новим повідомленням і у відповідь одержує адресу сторінки з новим повідомленням. ВОна може бути така ж сама, якщо повідомлення буде на тій же сторінці, а може бути інша, якщо повідомлень на сторінці більше 20. Так от, коли додати повідомлення вперше, воно переходить на сторінку. Коли зробити це вдруге - воно додає повідомлення в базу даних проте не переходить, бо сторінка одна і та ж, просто # різне. МЕні потрібно примусити бравзер переходити на сторінку, або оновлювати її при необхідності