Доброго времени суток уважаемый читатель Блога RS. Сегодня мы с Вами поговорим о работе с базой данных mysql в php. Нам предстоит научиться создавать базу данных, научиться создавать таблицы в ней, так же будем практиковаться в создание новых строк в таблицах, удаление их, и обновление. Ну и само собой научимся делать выборку данных из базы... Пост обещает быть большим, но это не страшно, если Вы читаете эти строки, значит собираетесь постигнуть азы программирование!
Работать я буду с денвером, если у Вас его до сих пор нет, то ставьте быстрее!
Ну что ж, для того что бы создать базу данных, необходимо перейти по этой ссылке ( ссылка должна открыться если у Вас стоит денвер, и он запущен ) и ввести произвольное имя новой базы данных вот в эту форму:

Свою базу я назвал "phptest". После нажатие на кнопку "Создать" Вас автоматом должно перекинуть в созданную Вами базу данных.
В этой процедуре тоже ничего сложного нет. Давайте создадим таблицу в которой мы будем хранить заголовок наших статей и непосредственно сам текст:

Как Вы могли заметить в количестве полей я поставил цифру 3, почему? Ведь нам нужно создать два поля, под заголовок и текст. Дело в том, что у таблицы в базе данных должно быть одно дополнительное поле. Для чего? Это поле представляет собой поочередный идентификационный номер, ( то есть мы как бы считаем наши строки в таблице ) таким образом мы получаем у каждой строчки таблицы свой неповторимый номер. Это пригодится для поиска нужной нам строки в базе данных. Поле это обычно называют id и выставляют ему AUTO_INCREMENT ( покажу ниже где он выставляется ). AUTO_INCREMENT позволяет присваивать каждой сточки свой неповторимый номер, тем самым Вы в таблице базы данных не встретите запись с одинаковым номером!
после заполнение имени и количество полей, жмет "ОК" попадаем на страницу создание полей. Признаюсь Вам я не особо понимаю что делаю при создание полей, но мне это не мешает с ними работать
Заполним вот так:
Длина/значения я выставил максимум, то есть 255 символовЖмем кнопку сохранить, и вуаля, первая наша таблица создана! Теперь давайте в ручную вставим одну строку в таблицу, для этого щелкните на кнопку "Вставить"

И заполните два нужных нам поля:
Почему только два? Потому что первое поле id будет заполняться автоматически за счет AUTO_INCREMENT. Жмем "ОК". Теперь во вкладке "Обзор" можно увидеть созданную нами строчку в таблице:

Что ж, мы научились создавать таблицы и строки через панель phpmyadmin, это уже прогресс
Кстати хочу отметить что интерфейс у этой панели интуитивно понятен, Вы вполне можете потыкать там кнопочки и разобраться что к чему 
Пришло время научится создавать удалять и обновлять строки в созданных таблицах посредством php. Для того что бы Вы лучше восприняли то что я Вам говорю, будем писать небольшую админскую панель сайта, и походу дела я Вам расскажу что да как.
Начнем с этого, так как при создание какого либо проекта необходимо наглядно видеть процесс, а без вывода это очень сложно сделать ( я буду работать с файлом test.php, не удивляйтесь когда увидите ссылки в коде на этот файл ). Как будем выводить? Ну для начала нам необходимо подключиться к базе данных, после циклом do while ( Изучаем PHP - Циклы ) мы вытащим записи из базы данных. Приступим
Как осуществляется подключение? Внимание на синтаксис:
mysql_select_db(Название БД, mysql_connect(Сервер,Имя пользователя БД,Пароль пользователя БД));
Название базы данных, сервер пользователь и пароль создается Вами или предоставляется Вашим хостером. На примере локального сервера, вы создаете некоторые данные самостоятельно, или же пользуетесь уже созданными. Вот как будет выглядеть подключения к созданной мной базе данных:
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$nameDB = "phptest";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
Сервер, пользователь и пароль был создан по умолчанию ( в данном случае можно сказать, что почти все данные нам предоставляет хостер ). Из своих данных я лишь указал имя базы данных. Кстати, это php код, и поэтому должен находиться в спец скобках ( <?php ... ?> )
Нам необходимо вывести данные из таблицы page. Внимание на синтаксис вывода:
$result = mysql_query("SELECT Что вытаскиваем FROM имя таблицы в БД");
$myrow = mysql_fetch_array($result);Первая строчка позволяет указать какие колонки нам необходимо вытащить, и из какой базы данных.
Вторая строчка помещает все найденное в переменную...
ВНИМАНИЕ есть пару моментов которые я бы хотел пояснить. Давайте решим несколько задач:
Как вытащить все поля из таблицы page? вот так:
$result = mysql_query("SELECT * FROM page");
$myrow = mysql_fetch_array($result);Вы могли заметить, что я поставил звездочку ( * ) после SELECT. Звездочка означает, что мне необходимо извлечь все поля из таблицы
Как вытащить только поле text из таблицы? вот так:
$result = mysql_query("SELECT text FROM page");
$myrow = mysql_fetch_array($result);Для того что бы вытащить не все поля, а только некоторые, необходимо после SELECT через запятую перечислить необходимые поля.
Как вытащить все поля из первой строчки? Нам известно что первая строчка имеет id равную единице, воспользуемся этими знаниями:
$result = mysql_query("SELECT title,text FROM page WHERE id=1");
$myrow = mysql_fetch_array($result);После SELECT я через запятую пояснил какие поля необходимо извлечь, после добавил новую строчку WHERE ( что означает "где" ) id равен 1. Таким образом я вытаскиваю нужные мне поля из строки где id равен единице
Ну что ж, приступим к созданию вывода наших статей? Выводить будем только заголовки, приступим:
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);
do
{
echo "<a href='test.php?id=".$myrow[id]."'>".$myrow[title]."</a><br>";
}
while ($myrow = mysql_fetch_array($result));Что мы сделали? Мы вытащили из таблицы два поля, id и title. Далее запустили цикл do while ( Изучаем PHP - Циклы ) и сформировали ссылки, с помощью данных которые вывели из БД. Данные хранятся в переменной $myrow, эта переменная является массивом, ключами к массиву являются имена наших полей в базе данных. Вот что получилось:

Обратите внимание куда ведет эта ссылка. С помощью id мы позже будем обращаться к базе данных непосредственно через GET запрос
Вывод заголовков есть, теперь давайте организуем вывод полных сообщений при щелчке мыши по ссылке с заголовком. Для того что бы это осуществить в одном файле, добавим условия if(){}:
<?php
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$nameDB = "phptest";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
//ВЫВОД ЗАГОЛОВКОВ
if(!isset($_GET['id']))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);
do
{
echo "<a href='test.php?id=".$myrow[id]."'>".$myrow[title]."</a><br>";
}
while ($myrow = mysql_fetch_array($result));
}
//ВЫВОД ЗАГОЛОВКОВ
//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET['id']))
{
$result = mysql_query("SELECT text FROM page WHERE id='$_GET[id]'");
$myrow = mysql_fetch_array($result);
echo $myrow[text];
}
//ВЫВОД ПОЛНОГО ТЕКСТА
?>
Я добавил два условия. Список с заголовками мы будем видеть только в случае если не существует глобальная переменная $_GET['id']. Полный же текст мы увидим только если эта переменная существует. При этом из базы данных мы будем выводить лишь одну нужную нам запись. Вот, что мы получили:

Теперь думаю пора научится добавлять новые строки в таблицу.
Добавление начнем с создание формы, вот кусочек кода который необходимо добавить в конец нашего файла:
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET['add']))
{
echo "<br><br><form action='test.php' method='post' name='form_add'>
<input type='text' name='title_post'><br>
<textarea name='text_post' cols=\"40\" rows=\"10\"></textarea><br>
<input type='submit' value='Добавить пост'>
</form>";
}
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
Эта форма появиться только в случае если будет существовать глобальная переменная $_GET['add'], поэтому где-нить в низу необходимо вставить ссылку на добавление новой статьи. Лучше всего это сделать в коде вывода заголовков, так же можно отредактировать условие вывода наших заголовков вот так:
//ВЫВОД ЗАГОЛОВКОВ
if(!isset($_GET['id']) AND !isset($_GET['add']))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);
do
{
echo "<a href='test.php?id=".$myrow[id]."'>".$myrow[title]."</a><br>";
}
while ($myrow = mysql_fetch_array($result));
echo "<br><br><br><a href='test.php?add=1'>Добавить пост</a>";
}
//ВЫВОД ЗАГОЛОВКОВ
Отредактировал условие таким образом, что бы список заголовков не появлялся при выводе формы, вот что получилось:

Далее необходимо создать обработчик, и научится наконец добавлять новые данные в базу. Вот синтаксис:
$result = mysql_query("INSERT INTO имя таблицы в БД (поле 1 БД,поле 2 БД) VALUES ('данные 1','данные 2')");Сейчас напишем обработчик для нашей мини админки и вы все поймете
. Вот кусочек кода, который я разместил сразу после подключение к базе данных:
//ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_POST['title_post']) AND isset($_POST['text_post']))
{
$result = mysql_query("INSERT INTO page (title,text) VALUES ('$_POST[title_post]','$_POST[text_post]')");
header("location: test.php");
exit;
}
//ДОБАВЛЕНИЕ ЗАПИСЕЙ
Условием является глобальная переменная $_POST то есть если мы заполнили форму, нажали на кнопку "Добавить пост" то сработает наше условие. В поле title запишутся данные из глобальной переменной $_POST[title_post], а в поле text - $_POST[text_post]. Далее сработает строчка header( "location: test.php" ) Она позволяет перенаправить пользователя на другую страницу, в данном случае этой страницей будет test.php. А строчка exit; прерывает выполнение остальных скриптов. Вот что получилось:

Для того что бы редактировать определенную запись в нашей БД нам естественно необходимо определить какую именно запись необходимо отредактировать...Я предлагаю выводить кнопку редактирование в коде вывода полного текста, давайте отредактируем его:
//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET['id']))
{
$result = mysql_query("SELECT text FROM page WHERE id='$_GET[id]'");
$myrow = mysql_fetch_array($result);
echo $myrow[text];
echo "<br><br><br><a href='test.php?edd=".$_GET['id']."'>Редактировать пост</a>";
}
//ВЫВОД ПОЛНОГО ТЕКСТА
Я лишь добавил ссылку на редактирование. Теперь давайте создадим форму где будем редактировать наш пост:
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
if(isset($_GET['edd']))
{
$result = mysql_query("SELECT * FROM page WHERE id='$_GET[edd]'");
$myrow = mysql_fetch_array($result);
echo "<br><br><form action='test.php' method='post' name='form_edd'>
<input type='hidden' name='id_post_edd' value='".$myrow[id]."'>
<input type='text' name='title_post_edd' value='".$myrow[title]."'><br>
<textarea name='text_post_edd' cols=\"40\" rows=\"10\">".$myrow[text]."</textarea><br>
<input type='submit' value='Редактировать пост'>
</form>";
}
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
Я добавил этот кусочек кода после формы добавление записей. Эта форма почти аналогична форме добавление постов. Как Вы могли заметить, я переделал атрибуты name, и добавил атрибут value. В этот атрибут я поместил данные которые вывел из базы данных. Так же тут присутствует невидимое поле. Оно нужно для того чтобы переслать идентификатор записи в файл обработчик.
Теперь для того что бы при выводе этой формы на экране не было списка заголовков, исправим условие:
//ВЫВОД ЗАГОЛОВКОВ
if(!isset($_GET['id']) AND !isset($_GET['add']) AND !isset($_GET['edd']))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);
do
{
echo "<a href='test.php?id=".$myrow[id]."'>".$myrow[title]."</a><br>";
}
while ($myrow = mysql_fetch_array($result));
echo "<br><br><br><a href='test.php?add=1'>Добавить пост</a>";
}
//ВЫВОД ЗАГОЛОВКОВ
Пришло время узнать как редактируются записи в базе данных. Вот синтаксис:
$result = mysql_query ("UPDATE имя таблицы в БД SET поле 1 в БД='новые данные 1', поле 2 в БД='новые данные 2' WHERE поле в БД по которому идет поиск строки в таблице='искомое значение'");Теперь напишем обработчик. Вот кусочек кода который я добавил сразу после обработчика добавление записей:
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
if(isset($_POST['title_post_edd']) AND isset($_POST['text_post_edd']))
{
$result = mysql_query ("UPDATE page SET title='$_POST[title_post_edd]', text='$_POST[text_post_edd]' WHERE id='$_POST[id_post_edd]'");
header("location: test.php");
exit;
}
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
По условию видно, что обработчик запустится только в случае если мы нажали на кнопку "редактировать пост". Далее идет обновление базы данных. В поле title мы поместим значение глобальной переменной $_POST[title_post_edd] а в поле text - $_POST[text_post_edd]. Редактировать будем строку у которой id равен глобальной переменной $_POST[id_post_edd]. После мы перенаправляем пользователя обратно к списку заголовков:

Ну что ж, последнее что осталось нам изучить, это удаление.. Оно проще всех остальных, так что внимание на синтаксис:
$result = mysql_query ("DELETE FROM имя таблицы в БД WHERE идентификатор по которому мы находим строчку в таблице БД='значение'");Для того чтобы удалять какие то записи, необходимо где-нить выставить ссылку с помощью который пользователь сможет удалить какую то запись...давайте разместим эту ссылку в выводе полного текста поста:
//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET['id']))
{
$result = mysql_query("SELECT text FROM page WHERE id='$_GET[id]'");
$myrow = mysql_fetch_array($result);
echo $myrow[text];
echo "<br><br><br><a href='test.php?edd=".$_GET['id']."'>Редактировать пост</a>";
echo "<br><a href='test.php?del=".$_GET['id']."'>Удалить пост</a>";
}
//ВЫВОД ПОЛНОГО ТЕКСТА
Теперь напишем обработчик:
//УДАЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET['del']))
{
$result = mysql_query ("DELETE FROM page WHERE id='$_GET[del]'");
header("location: test.php");
exit;
}
//УДАЛЕНИЕ ЗАПИСЕЙ
Добавил его я после кусочка кода отвечающего за редактирование поста. Теперь если зайти в полный текст поста, и жмякнуть по кнопке удаление, то мы удалим пост:

Вот полный код сегодняшнего поста:
<?php
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$nameDB = "phptest";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
//ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_POST['title_post']) AND isset($_POST['text_post']))
{
$result = mysql_query("INSERT INTO page (title,text) VALUES ('$_POST[title_post]','$_POST[text_post]')");
header("location: test.php");
exit;
}
//ДОБАВЛЕНИЕ ЗАПИСЕЙ
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
if(isset($_POST['title_post_edd']) AND isset($_POST['text_post_edd']))
{
$result = mysql_query ("UPDATE page SET title='$_POST[title_post_edd]', text='$_POST[text_post_edd]' WHERE id='$_POST[id_post_edd]'");
header("location: test.php");
exit;
}
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
//УДАЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET['del']))
{
$result = mysql_query ("DELETE FROM page WHERE id='$_GET[del]'");
header("location: test.php");
exit;
}
//УДАЛЕНИЕ ЗАПИСЕЙ
//ВЫВОД ЗАГОЛОВКОВ
if(!isset($_GET['id']) AND !isset($_GET['add']) AND !isset($_GET['edd']))
{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);
do
{
echo "<a href='test.php?id=".$myrow[id]."'>".$myrow[title]."</a><br>";
}
while ($myrow = mysql_fetch_array($result));
echo "<br><br><br><a href='test.php?add=1'>Добавить пост</a>";
}
//ВЫВОД ЗАГОЛОВКОВ
//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET['id']))
{
$result = mysql_query("SELECT text FROM page WHERE id='$_GET[id]'");
$myrow = mysql_fetch_array($result);
echo $myrow[text];
echo "<br><br><br><a href='test.php?edd=".$_GET['id']."'>Редактировать пост</a>";
echo "<br><a href='test.php?del=".$_GET['id']."'>Удалить пост</a>";
}
//ВЫВОД ПОЛНОГО ТЕКСТА
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET['add']))
{
echo "<br><br><form action='test.php' method='post' name='form_add'>
<input type='text' name='title_post'><br>
<textarea name='text_post' cols=\"40\" rows=\"10\"></textarea><br>
<input type='submit' value='Добавить пост'>
</form>";
}
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
if(isset($_GET['edd']))
{
$result = mysql_query("SELECT * FROM page WHERE id='$_GET[edd]'");
$myrow = mysql_fetch_array($result);
echo "<br><br><form action='test.php' method='post' name='form_edd'>
<input type='hidden' name='id_post_edd' value='".$myrow[id]."'>
<input type='text' name='title_post_edd' value='".$myrow[title]."'><br>
<textarea name='text_post_edd' cols=\"40\" rows=\"10\">".$myrow[text]."</textarea><br>
<input type='submit' value='Редактировать пост'>
</form>";
}
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
?>
Довольно сложный получился материал. Но! Вы могли заметить, что я использовал лишь ту информацию которую давал ранее. А это значит, что имея эти знание, можно создавать простейшие проекты на php! Если Вы все это освоили, то можете с гордостью заявить, что вы начинающий программист! Ну что ж, теперь Вы вполне можете приступить к созданию свой первой cms. Если есть какие то вопросы, а они скорее всего есть, задавайте, помогу чем смогу! Удачи Вам, на сегодня у меня все!
______
P.S.: Что такое mdf файл? Чем его открыть? Как его открыть? На эти и многие вопросы можно найти ответ на voprosi4ek.ru