81

Re: Вивчаю базу даних MySql

VTrim написав:

$result->data_seek(0); там взагалі не потрібно

прибрав $result->data_seek(0); з обєктного стилю,- точно теж працює.

82

Re: Вивчаю базу даних MySql

Анатолій написав:

На шляху створення статті "Вибірка даних з таблиць БД, об'єкт даних"

http://не-дійсний-домен/picture/select_06.jpg

Питання до спільноти, які є варіанти щоб вивести одне значення даного з БД?
Мої варіанти поки що:
обєктно-орієнтований стиль програмування

<?php 
$con->connect("localhost","my_user","my_password","my_db"); 
// Отримуємо об'єкт $result 
$result = $con->query("SELECT Town_from FROM Transit WHERE Id=1003");
//Отримуємо результуючу вибірку даного 
$row = $result->fetch_assoc(); 
printf ("Місто відправлення:%s \n", $row["Town_from"]); 
$con->close();
?> 

та процедурний

<?php 
$con=mysqli_connect("localhost","my_user","my_password","my_db"); 
// Отримуємо об'єкт $result 
$sql="SELECT Town_from FROM Transit WHERE Id='1003'";
$result=mysqli_query($con,$sql); 
//Отримуємо результуючу вибірку даного 
$row=mysqli_fetch_assoc($result); 
printf ("Місто відправлення:%s \n", $row["Town_from"]); 
mysqli_close($con);
?> 

А де, власне, в об`єктно-орієнтованому варіанті створення об`єкта?

83 Востаннє редагувалося Анатолій (16.02.2015 11:32:23)

Re: Вивчаю базу даних MySql

власне я розумію під об'єктом, дані що ми отримуємо з БД
наприклад, якщо розглядати дані, то
4 - число ,
'mars' - строковий тип даного,
2, 4, 45, 2, 56, 5 - масив даних,
малюнок знизу презентує обєкт, тобто це якась суть що має декілька параметрів
http://не-дійсний-домен/ForumReplace/Obect.png

А де, власне, в об`єктно-орієнтованому варіанті створення об`єкта?

в моєму прикладі обєктом буде $result - саме він складається з набору різних даних

84

Re: Вивчаю базу даних MySql

У вашому прикладі php видасть помилку на $con, як неозначену змінну.

85

Re: Вивчаю базу даних MySql

Sensetivity написав:

У вашому прикладі php видасть помилку на $con, як неозначену змінну.

ось сторінка з живими даними і прикладами, все виводить і все працює,
можливий варіант, що я помилився коли код презентував  для перегляду, але сам код php на сервері запит до відповідних даних виконує та виводить дані на сторінку сайту
що ж до $con, то я не переймався код працює кінцевий результат є; можливо він і виконується некоректно і десь там в логах помилку фіксує, чи ще яким чином, то наразі я не знаю

86 Востаннє редагувалося Sensetivity (16.02.2015 13:41:58)

Re: Вивчаю базу даних MySql

Процитований вами код, не може працювати.
Ви звертаєтеся до методу об`єкта $con->connect
Але ви НЕ ІНІЦАЛІЗУЄТЕ сам об`єкт $con, чи то пак mysqli.

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

Подякували: Анатолій1

87 Востаннє редагувалося Анатолій (16.02.2015 16:21:19)

Re: Вивчаю базу даних MySql

Sensetivity написав:

Процитований вами код, не може працювати.
Ви звертаєтеся до методу об`єкта $con->connect
Але ви НЕ ІНІЦАЛІЗУЄТЕ сам об`єкт $con, чи то пак mysqli.

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

Дякую Sensetivity, перепрошую; працює, але в такому варіанті, напевно про що мова і була

$con = new mysqli("localhost","my_user","my_password","my_db");
$con->set_charset("utf8");
$result = $con->query("SELECT Town_from FROM Transit WHERE Id=3");
$row = $result->fetch_assoc();
printf ("Місто відправлення:%s \n", $row["Town_from"]);
$con->close();

88

Re: Вивчаю базу даних MySql

дописав нарешті сторінку "Шаблон вибірки даних з таблиць Бази Даних", приємно

P.S. Я правда ледь в'їхав в об'єктний та процедурний стиль, а PDO розгляну дещо пізніше
P.S.S. Будуть пропозиції, зауваження, побажання буду вдячний

http://не-дійсний-домен/picture/select_07.jpg

89

Re: Вивчаю базу даних MySql

Так, саме про це й була мова.

90 Востаннє редагувалося Анатолій (17.02.2015 14:13:37)

Re: Вивчаю базу даних MySql

Проста задачка SQL. Розглядаю задачку

1. Вивести значення id, cpu, memory комп'ютерів в яких об'єм памяті 3000 Mb.
2. Мінімальний об'єм жорсткого диску, що є на складі. Вивести hdd.
3. Кількість комп'ютерів з мінімальним об'ємом жорсткого диску, що є на складі. Вивести count, hdd.

http://не-дійсний-домен/picture/tasks_001.jpg

і відразу ж практикую в зв'язці "сторінка сайту-PHP-БД" - сторінка з завданням

так ще вчора розглядав яким чином можна виводити результати запитів на сторінку веб-сайту, але якщо розглядати 2 частину завдання, де SQL-запит має вигляд

SELECT min(hdd) 
FROM PC ; 

то скажімо результат виконання кодування мене влаштовує, але чи є він досить коректним, while здається тут лишній???

$con = new mysqli("localhost","my_user","my_password","my_db");
$con->set_charset("utf8");
$result = $con->query("SELECT min(hdd) AS min_hdd FROM PC;");
while ($row = $result->fetch_assoc()) 
{
 echo " Min hdd: ". $row['min_hdd'].'<br>' ;
}
$con->close();

91

Re: Вивчаю базу даних MySql

переписав так

<?php
$con = new mysqli("localhost","my_user","my_password","my_db");
$con->set_charset("utf8");
$result = $con->query("SELECT min(hdd) AS min_hdd FROM PC;");
$row = $result->fetch_assoc(); 
echo " Min hdd: ". $row['min_hdd'].' Gb <br>' ;
$con->close();
?>

92

Re: Вивчаю базу даних MySql

А як взагалі краще назвати розділ, можливо щоб і краще було для оптимізації веб-сайту?
Задачі з Базою Даних, Завдання по Базі Даних, Рішення задач БД, Приклади рішень завдань по СКБД MYSQL чи яким іншим чином?

Нехай буде поки "Задачі MySQL

P.S. Відмічу, що задачку я розглядаю, аналізую, створюю живу веб-сторінку, щоб перевірити чи справді запити та кодування працює, але все ж можливо будуть неточності у викладенні; тому по можливості приклади буду залишати на форумі для Незалежного Зовнішнього Оцінювання

Чергова задачка:

Необхідно вивести значення моделі PC та її вартість з таблиці Product_PC;
замінити відсутнє значення ціни на повідомлення "Модель відсутня"

<?php 
$con = new mysqli("localhost","my_user","my_password","my_db"); 
$result = $con->query(" 
SELECT DISTINCT Product_PC.model,
CASE 
WHEN price IS NULL 
THEN 'Модель відсутня' 
ELSE price 
END price 
FROM Product_PC;");
while ($row = $result->fetch_assoc()) 
{ echo $row['model'].' '. $row['price']. "<br>";};
$con->close();
?>

93

Re: Вивчаю базу даних MySql

- Може хтось прокоментувати чому не виконується умова "Якщо ціна NULL, то не виводить повідомлення модель відсутня" ?

http://не-дійсний-домен/picture/tasks_002.jpg

якщо я вибираю NULL значення іншим чином, видає (більше ніж один варіант вибору значення зрозуміло ж  - 2 рядки NULL значень)

http://не-дійсний-домен/picture/tasks_003.jpg

код, щоб скоректувати

SELECT model,price, 
CASE price 
WHEN (SELECT MAX(price) FROM Product_PC) THEN 'Найбільша ціна' 
WHEN (SELECT MIN(price) FROM Product_PC) THEN 'Найменша ціна' 
WHEN (SELECT price FROM Product_PC WHERE price IS NULL) THEN 'Модель відсутня'
ELSE 'Середня ціна' 
END comment
FROM Product_PC;

Напевно, проблема в тому, що має бути лише один варіант відповіді оператора CASE для price, якщо більше ніж один варіант то все це має бути в ELSE

94

Re: Вивчаю базу даних MySql

Анатолій написав:

А як взагалі краще назвати розділ, можливо щоб і краще було для оптимізації веб-сайту?
Задачі з Базою Даних, Завдання по Базі Даних, Рішення задач БД, Приклади рішень завдань по СКБД MYSQL чи яким іншим чином?

Нехай буде поки "Задачі MySQL

P.S. Відмічу, що задачку я розглядаю, аналізую, створюю живу веб-сторінку, щоб перевірити чи справді запити та кодування працює, але все ж можливо будуть неточності у викладенні; тому по можливості приклади буду залишати на форумі для Незалежного Зовнішнього Оцінювання

Чергова задачка:

Необхідно вивести значення моделі PC та її вартість з таблиці Product_PC;
замінити відсутнє значення ціни на повідомлення "Модель відсутня"

<?php 
$con = new mysqli("localhost","my_user","my_password","my_db"); 
$result = $con->query(" 
SELECT DISTINCT Product_PC.model,
CASE 
WHEN price IS NULL 
THEN 'Модель відсутня' 
ELSE price 
END price 
FROM Product_PC;");
while ($row = $result->fetch_assoc()) 
{ echo $row['model'].' '. $row['price']. "<br>";};
$con->close();
?>

Таку перевірку можна зробити вже при виводі даних (в php),чи вам такий варіант не підходить?

95

Re: Вивчаю базу даних MySql

Логічно припустити що такі перевірки можна виконати і в php, але я більше орієнтований на SQL.
Тай розглядаю поки що SQL, тому рішення потрібно реалізувати через коректний SQL-запит.

96 Востаннє редагувалося Sensetivity (18.02.2015 15:14:10)

Re: Вивчаю базу даних MySql

SELECT model,price, 
CASE price 
WHEN (SELECT MAX(price) FROM Product_PC) THEN 'Найбільша ціна' 
WHEN (SELECT MIN(price) FROM Product_PC) THEN 'Найменша ціна' 
WHEN (SELECT price FROM Product_PC WHERE price IS NULL) THEN 'Модель відсутня'
ELSE 'Середня ціна' 
END comment
FROM Product_PC;

SELECT price FROM Product_PC WHERE price IS NULL
Поверне 2 значення. Костиль:
SELECT price FROM Product_PC WHERE price IS NULL LIMIT 1;

Подякували: Анатолій1

97

Re: Вивчаю базу даних MySql

Правильніше рішення:

WHEN NULL THEN 'Модель відсутня'

Правда перевірте синтаксис, не знаю, NULL чи is NULL.

98 Востаннє редагувалося Анатолій (18.02.2015 15:36:31)

Re: Вивчаю базу даних MySql

:) які ще варіанти

http://не-дійсний-домен/picture/tasks_004.jpg

http://не-дійсний-домен/picture/tasks_005.jpg

99 Востаннє редагувалося Sensetivity (18.02.2015 16:37:13)

Re: Вивчаю базу даних MySql

WHEN price IS NULL THEN 'Модель відсутня'

загуглив синтаксис

100

Re: Вивчаю базу даних MySql

ні :(

http://не-дійсний-домен/picture/tasks_006.jpg