Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Урок PHP и MySQL.Учимся работать с БД MySQL. - Форум

  • Сторінка 1 з 1
  • 1
Урок PHP и MySQL.Учимся работать с БД MySQL.
No-OneДата: П`ятниця, 24.12.2010, 16:36 | Сообщение # 1



No-One
Mr. (\/)Oo(\/)
Капрал
Группа: Пользователи
Сообщений: 85

Замечания:

Оффлайн
Введение

Проанализировав статистику переходов на сайт, я заметил что многие пользователи ищут уроки по MySQL. Поэтому я решил помочь, и открываю новую рубрику на сайте, её название будет MySQL. Хочу сказать вам что переход на БД в программировании открывает новые горизонты. В свое время я полностью изучил работу с файлами и знал все функции вдоль и поперек. Со временем для хранения информации, файлов становиться недостаточно, и зачастую решение какой либо задачи, выливается в танцы с бубном, громоздкий код и конечно потраченное время. В скором времени я опубликую достаточно большую статью по работе с файлами, а сейчас мы сделаем небольшой прыжок вперед и приступим к изучению элементарных функции для работы с MySQL.

Создание БД MySQL

Чтобы создать новую базу данных, нам необходим PhpMyAdmin. Если вы будете тестировать скрипты на локальном сервере, то создание БД не вызовет каких либо проблем. Набрав в адресной строке http://127.0.0.1/phpmyadmin, вы попадает в главное меню управления базами.

Указываете имя базы данных на латинице, в качестве «Сравнения» указываете utf8_unicode_ci и нажимаем кнопку создать. После перезагрузки страницы мы попадаем в нашу базу данных. В скобках указано количество таблиц в базе.

Создание таблиц

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

В ней вы указываете имя колонки (товар, описание, цена) и далее забиваете информацию. Очень похожий принцип и у таблиц MySQL. Я специально создал таблицу notebook, и продублировал туда все значения, вот что получилось:

Как вы видите у каждого столбца есть свое описание (id, model, price), они играют очень важную роль. В своих запросах мы будем выбирать нужные данные, удовлетворяющие каким либо условиям.

Повторите мой вариант. Создайте таблицу с именем notebook, введите количество полей 3 и нажмите ОК. После нажатия кнопки, вы попадаете в следующее меню, где необходимо задать имя полей таблицы и выбрать тип данных, которые будут в них содержаться.

Перед вами будут несколько полей, каждое из которых, будет иметь свое предназначение и хранить определенный тип данных.

Первое поле у нас будет носить имя столбца, в качестве первого будет id – идентификатор товара. Он необходим для совершения каких либо действий с этим товаром (редактирование или удаление). Далее указываем Тип. Т.к. идентификатор будет числовой, то тип данных принимает значение INT или INTEGER (ЦЕЛОЕ ЧИСЛО). Далее вводим Длина/значение, указываем 5 (5 это не значит что максимальное количество будет 5, а то что значение будет не более 99999, я думаю этого хватит для начала). Далее идет поле сравнение, в нем необходимо указать в какой кодировке будут храниться данные. Для поля id мы оставляем значение по умолчанию. Атрибуты пропускаем. Далее переходим к полю По умолчанию и ставим значение единицу, это будет означать что первый товар будет начинаться с единицы. Переходим к Дополнительно и выставляем атрибут auto_increment. Это позволяет при добавлении новой записи, автоматически присваивать идентификатор товару, причем не случайным образом, а в порядке возрастания.

Переходим к заполнению поля model. Тип мы выставим VARCHAR. VARCHAR (ПЕРЕМЕННОЕ ЧИСЛО СИМВОЛОВ), этот тип является текстовой строкой и может иметь любую длину до определённого реализацией максимума (обычно 254 символа). Для описания модели нам хватит длины строки в 200 символов, которые мы указываем в поле длина.

Далее переходим к полю price. Здесь тип переменных будет выражен числами, поэтому тип данных устанавливаем INT, и длину значения 5.

Ниже выставляем Тип таблиц – MyISAM, сравнение – utf8_unicode_ci и нажимаем кнопку сохранить. Если все значения были введены правильно то появиться окно, с выполненым запросом, структура таблицы и в левом меню вы увидите вашу новую таблицу notebook.

На этом этап создания таблицы завершен, переходим к программированию.

Подключение к БД MySQL

Чтобы выполнять запросы к базе нам необходимо к ней подключиться и выбрать таблицу . Это достаточно просто и выполняется при помощи 2 стандартных функций.
mysql_connect - Открывает соединение с сервером MySQL

Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться");
print ("Соединение выполнено");
mysql_close($link);
?>

mysql_select_db - Выбирает базу данных MySQL
Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" );
// сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');
?>

Функция mysql_select_db вызывается только после функции mysql_connect. Для того чтобы подключиться и выбрать базу test, мы берем второй фрагмент кода. Этот фрагмент мы будем использовать в каждом скрипте, где необходима работа с mysql.

Запись в БД

Чтобы создать запись в БД необходимо сформировать запрос, который будет вставлять значения в таблицу. Создаем новый файл в php expert editor‘е, вставляем фрагмент кода приведенный выше, который отвечает за подключение к БД и выбора нужной таблицы.

Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" ); // сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');

Далее необходимо создать запрос. Это достаточно просто сделать, смотрите далее
Code
$query = "INSERT INTO notebook VALUES(NULL,'Asus F5RL','25000')";

Давайте разберем то, что мы присвоили переменной $query. Транскрипция запроса выглядит следующим образом:

$query = «INSERT(ВСТАВИТЬ) INTO (КУДА/В) ‘notebook’ VALUES()ЗНАЧЕНИЯ(Значение 1го поля,значение 2го поля,значение 3го поля)»;

Обратите внимание на первое значение в скобках после VALUES. Мы указали тип переменной NULL, это значит что в это поле ничего записываться не будет. Вот так просто мы разобрали с вами запрос, что делать дальше?!

Далее есть функция, которая отвечает за выполнение запроса, и возвращает результат. Это функция
mysql_query - Посылает запрос MySQL

Code
$result = mysql_query($query);

if($result) {echo "Даные внесены в базу данных";} else {echo "Ошибка, данные не были внесены в БД";}

mysql_close($link);
?>

В нашем случае переменная $result будет содержать результат данного запроса. В конце мы добавим простое условие, которое укажет нам об успешном или неуспешном выполнении запроса.
Итог можете посмотреть при помощи PhpMyAdmin, перейдя в таблицу notebook и нажав вкладку Обзор

Чтение БД

Чтобы извлечь данные из базы, нам необходимо составить другой запрос, но прежде чем это сделать запишите в вашу таблицу несколько разных значений, пусть это будут разные модели ноутбуков с разными ценниками.

Для начала сделаем выборку всех ноутбуков с ценниками и выведем их в браузер. Для этого составляем следующий запрос:

Code
$query = "SELECT * FROM notebook";

здесь все достаточно просто:
Code
$query = «SELECT(ВЫБРАТЬ) *(ЗВЕЗДОЧКА ОЗНАЧАЕТ ВЫБРАТЬ ВСЁ) FROM(ОТКУДА) notebook»;

Т.е. выбираем все столбцы из таблицы ноутбук. Далее осуществляем запрос:
Code
$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]<br/>";

}
mysql_close($link);
?>

Используем функцию mysql_fetch_array чтобы получить массив значений, ключами которого являются имена столбцов (model и price).При обращении к файлу мы должны получить следующую картину:

Давайте теперь добавим условие, например вывести ноутбуки, цена которых превышает 30 000. Сделать это можно двумя способами. Можно просто внутри цикла while вставить условие

Code
if($r[price] >=30000) {echo "$r[model] - $r[price]";}

Такое условие будет обрабатывать уже полученные данные из базы, но можно пойти другим путем – создать условие при запросе к базе.

Предыдущий фрагмент кода остается без изменений, меняется лишь только запрос:

Code
$query = "SELECT * FROM notebook WHERE price>30000";

Транскрипция к запросу
Code
$query = «ВЫБРАТЬ ВСЁ ИЗ notebook ГДЕ price>30000″;

Code
$query = "SELECT * FROM notebook WHERE price>30000";

$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]";

}
mysql_close($link);
?>

Результатом выполнения этого скрипта будет вывод 2х позиций товаров, с ценой более 30 000.

Получение количества рядов можно сделать при использовании функции mysql_num_rows.
mysql_num_rows – Возвращает количество рядов результата запроса

Добавим её в наш скрипт и получим к общему списку товаров их количество:

Code
$query = "SELECT * FROM notebook ";

$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]<br/>";

}

echo "_____________<br/>
Всего позиций:".mysql_num_rows($result);
mysql_close($link);
?>


Изменение данных

Давайте представим, что у нас переоценка товара, и ноутбук Sony подешевел на 2 000. Чтобы нам изменить данные в таблице необходимо составить следующий запрос:

Code
$query = "UPDATE notebook SET price=52000 WHERE id=3";

Сделаю транскрипцию запроса:
Code
$query = «ИЗМЕНИТЬ notebook УСТАНОВИТЬ price=52000 ГДЕ id=3″;

Заметьте, что в этом запросе мы отталкивались от идентификатора товара:
Code
$result = mysql_query($query);

if($result) {echo "Данные изменены";} else {echo "Ошибка, данные не были изменены";}

mysql_close($link);

?>


 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2025 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz