Питание

Основы работы с PHP MySqli. Взаимодействие PHP и MySQL Можно ли в php работать с mysql

В этой статье мы на примерах разберем такие очень важные моменты в работе с базами данных MySQL (БД), как выборка из базы данных, запись в базу данных, обновление информации в базе данных, а также ее удаление из базы данных. Все это будет производиться при помощи четырех – операторов SELECT, INSERT, UPDATE и DELETE о которых и пойдет речь в данной статье.

Итак, если нужно вытащить все поля из базы данных используем следующий код.

$result = mysql_query("SELECT * FROM first_table",$db);

Звездочка означает, что нужно вытащить все поля из таблицы.

Если нужно вытащить только некоторые поля, например, имя и фамилию.

$result = mysql_query("SELECT name, last_name FROM first_table",$db);

name, last_name – поля с именами и фамилиями пользователей.

Если нужно получить точные данные, например, фамилию всех пользователей в базе данных с определенным именем (имя будет занесено в переменную $name).

name=’$name’ – поле name равняется переменной $name.

Кроме одного условия мы также можем перечислить несколько, например, нужно получить идентификатор всех пользователей с определенным именем и фамилией (имя и фамилия будут занесены в переменные $name и $last_name соответственно). Для этого можем использовать следующий код.

Если же нам нужно получить записи, где выполняется одно условие из нескольких, например, получить идентификаторы всех пользователей у которых имя или фамилия отвечают заданным в условиях.

Если вам нужно отсортировать результат по каким-то параметрам, например, по имени.

$result = mysql_query("SELECT * FROM first_table ORDER BY name ",$db);

ORDER BY name – отсортировать по имени.

Если нужно отсортировать в обратном порядке.

$result = mysql_query("SELECT * FROM first_table ORDER BY name DESC ",$db);

DESC – в обратном порядке.

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

$result = mysql_query("SELECT * FROM first_table ORDER BY id LIMIT 5 ",$db);

LIMIT 5 – вытащить из БД только первые пять результатов.

Это были небольшие примеры выборки из базы данных. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, например, для вывода результата на экран. Для этого в PHP существует специальная mysql_fetch_array() .

Результат выполнения функции мы можем поместить в переменную, например, переменную $myrow, которая будет хранить в себе . В качестве параметра функции mysql_fetch_array() будет передан результат выполнения функции mysql_query() . Все это будет выглядеть следующим образом.

$myrow = mysql_fetch_array($result);

Теперь мы можем обращаться к элементам ассоциативного массива $myrow. В качестве примера давайте рассмотрим код, который выводит на экран имя пользователя с идентификатором id =1. В качестве базы данных будет использоваться база db_first из предыдущей статьи.

/*Подключаемся к БД*/ $db = mysql_connect("Сервер MySQL","Пользователь БД","Пароль для доступа к БД"); mysql_select_db("db_name", $db); /*Делаем запрос к БД*/ $result = mysql_query("SELECT name FROM first_table WHERE id="$id"",$db); /*Преобразовываем результат в массив*/ $myrow = mysql_fetch_array($result); /*Выводим результат на экран*/ echo $myrow["name"];

Как видите все очень просто и понятно.

Ну а теперь перейдем к следующему оператору INSERT, который отвечает за добавление информации в базу данных.

Добавление информации в базу данных. Оператор INSERT

Оператор INSERT применяется для добавления информации в базу данных. Код, отвечающий за добавление, имеет следующий синтаксис.

$result = mysql_query ("INSERT INTO таблица (поле 1, поле 2, поле N) VALUES ("значение 1", "значение 2", "значение N")");

Например, нам нужно добавить в таблицу first_table имя и фамилию нового пользователя. Для этого можно использовать следующий код.

$result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES ("$name", "$last_name")");

Где, $name и $last_name – переменные с именем и фамилией нового пользователя.

Для того чтобы проверить результат можно использовать .

$result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES ("$name", "$last_name")"); if ($result == "true") { echo "Запись добавлена успешно!"; } else { echo "Запись не добавлена!"; }

Другими словами, если в переменную $result попадет истина, то выведется сообщение, что запись добавлена. В противном случае выведется, что запись в базу данных не добавлена.

Обновление информации в базе данных. Оператор UPDATE

Оператор UPDATE применяется для обновления уже существующей информации в базе данных. Синтаксис функции mysql_query в данном случае следующий.

Теперь перейдем к примеру. Допустим нам нужно изменить имя и фамилию для пользователя с идентификатором $id в таблице db_name. Для этого можно использовать следующий код.

Теперь давайте перейдем к заключительной части статьи и рассмотрим последний оператор DELETE, который отвечает за удаление информации из базы данных.

Удаление информации из базы данных. Оператор DELETE

Оператор DELETE применяется для удаления полей из базы данных. Синтаксис функции mysql_query() в данном случае следующий.

Теперь как обычно перейдем к примеру. Допустим нам нужно удалить пользователя с идентификатором $id из таблицы db_name. Для этого можно использовать следующий код.

На этом данная статья подошла к концу. Материал не сложный, но объяснять его посредством текста достаточно сложно. Все же я думаю, вы поняли всю суть вышеизложенного материала. Если у вас остались какие-то вопросы по данной статье, вы всегда можете задать их в комментариях.

На этом все. Удачи вам и успехов в изучении PHP и MySQL.

Всё, что я могу сказать в качестве рекомендации к использованию БД - это то, что жизнь без них - просто смерть! База данных - луч exe-шного света в тёмном царстве обработки данных интерпретируемой программой. База данных приносит немножко головной боли, но снимает гораздо больше.

В качестве примера взят сервер баз данных MySQL (полагаю, что освоив его, вы без большого труда освоите и другие. Когда-нибудь я напишу и о них, если сам освою:).

Первый разговор пойдет о функциях PHP, используемых для работы с MySQL. Итак, начнём.

1. Администрирование базы данных

Способы администрирования БД в порядке убывания удобства:

  • phpMyAdmin (весьма рекомендую!)
  • Написать скрипт, который бы передёргивал базу (см. пример)
  • mysql.exe в пакете mysql
  • mysql_manager.exe (там, вроде, как-то можно, только на грани шаманства)

Особенно рекомендую первый способ. С ним не придётся изучать запросы ALTER TABLE, ADD COLUMN и т.п. Я их не знаю до сих пор. Тем более, что "такие вопросы, товарищ посол, с кондачка не решаются" - когда вам понадобится автоматически изменить структуру базы или таблицы? Пару слов о втором способе. Это так сказать обходная технология, которую я применял, не зная про phpMyAdmin и утилиту mysqldump. В скрипте пишутся команды, удаляющие базу и создающие её вновь. Когда-то помогало, но вообще это, ещё раз скажу, обходная технология, "подпорка".

На будущее: если у вас будет несколько сайтов, использующих БД, то хотя бы в пределах домашнего сервера создайте несколько баз. Это облегчит работу серверу и исключит возможность путаницы таблиц. В общем, правила работы с БД те же, что и с сайтом - держать в отдельной директории от других.

2. Соединение с сервером БД

Осуществляется при помощи функции mysql_connect: $connect = mysql_connect(<хост>, <логин>, <пароль>); По умолчанию, на mysql-сервере в таблице пользователей есть пользователь root, который может иметь доступ только с localhost-а, то бишь с того же самого компьютера, где стоит сервер mysql. ВНИМАНИЕ! "Иметь доступ с localhost-а" значит, что доступ имеет ваш скрипт PHP, а вы можете обращаться к нему с любого другого компьютера.

Что происходит, когда мы вызываем функцию mysql_connect? С началом выполнения вашего скрипта, php выделяет в своей памяти место для информации о нём и его переменных. В информации о выполняемом скрипте хранится, в том числе, и информация о соединениях с базами данных. Переменная $connect - грубо говоря указатель на место, где данная информация хранится. Переменная эта точно такая же, как и остальные - если вы используете функции, то надо объявлять глобальные переменные, чтобы обратиться к ней.

Почему вообще используется переменная? Это на случай, если для работы вам необходимо использовать несколько серверов баз данных (или, например, для обеспечения бОльшей безопасности вы используете разные логины, у которых могут быть разные привилегии). В таких случаях в каждом запросе нужна определённость, по какому, так сказать, каналу идёт команда. Но если вы используете только одно соединение, указывать его в параметрах функций запросов (о них - ниже) не нужно - php находит первое (и в данном случае единственное) установленное соединение и использует его.

Механизм работы функций запросов к БД такой же, как и у функции соединения: функции передаются параметры запроса и (если надо) соединения, а результат записывается в переменную:

$result = mysql_db_query(string база данных, string запрос [, переменная соединения]);

$result = mysql_query(string запрос [, переменная соединения]);

ВНИМАНИЕ! Чтобы использовать функцию mysql_query, в которой база данных не указывается, надо предварительно выбрать используемую базу данных:

mysql_select_db(string база данных);

Теперь у нас есть переменная $result. Это указатель на результат выполнения запроса. Там есть сколько-то строк таблицы. Получить эти строки можно через функции mysql_fetch_row и mysql_fetch_array:

Echo "

"; while ($row = mysql_fetch_array($result)) echo ""; echo "
", $row["field1"], "", $row["field2"], "
";

Функция mysql_fetch_array выдаёт в указанную переменную (в данном случае $row) массив, индексы которого - имена полей (причём, если вы в списке полей запроса пишете table.field, то индекс массива будет field). mysql_fetch_row выдаёт массив, индексы которого - числа, начиная с 0.

Какой функцией лучше пользоваться? Если вы запрашиваете звёздочку, т.е. все поля таблицы, а выводить поля нужно в определённой последовательноси (когда, например, у таблицы рисуется шапка), лучше пользоваться mysql_fetch_array. Если вы запрашиваете одно-два-три поля, чётко зная их последовательность, можно делать mysql_fetch_row - это уменьшит объем кода программы.

Это команды DELETE и UPDATE. Подобные запросы - в "правах" такие же, как и SELECT, поэтому отправка команды серверу происходит тем же способом - mysql_query (mysql_db_query). Но в данном случае функция не возвращает результата:

$result = mysql_query("SELECT * FROM sometable"); но mysql_query("DELETE FROM sometable WHERE id=...");

Соответственно, если мы выполним запрос-выборку и не запишем результат в переменную, данные не будут храниться нигде.

5. Обработка ошибок запросов

Сообщение о последней ошибке можно получить через функцию mysql_error:

echo "Ошибка базы данных. MySQL пишет:", mysql_error();

Если результат функции пишется в переменную, можно проверить её:

$result = mysql_query($request); if (!$result) echo "Ошибка базы данных. MySQL пишет:", mysql_error(); else { echo "

"; while ($row = mysql_fetch_array($result)) echo ""; echo "
", $row["field1"], "", $row["field2"], "
"; };

Если в переменную не пишем, то так.

4.5K

В тексте использован перевод официальной документации сделанный Всероссийским клубом Веб-Мастеров.

Вся работа с базами данных сводится к подключению к серверу, выбору базы данных, посылке запроса, обработке запроса и отключении от баз. Итак, рассмотрим все это дело по пунктам. Для наглядности всего текста представим себе что на локальной машине установлен сервер MySQL. Порт для работы с ним стандартный. Для подключения будем использовать имя пользователя «root» и пароль «no_one».

Подключение

Подключение к базе данных производится с помощью функции «mysql_connect()». Ей передается три параметра: имя сервера (или имя сервера:порт для подключения), имя пользователя и пароль. В случае, если будет сделан второй вызов «mysql_connect()» с теми же аргументами, никакая новая связь не установится - вместо этого, будет возвращен идентификатор связи уже открытой связи (т.е. работа продолжится с той же базой данных). Если вы работаете только с одной базой данных, то идентификатор соединения создавать не надо. Как только выполнение сценария закончится, связь с сервером закроется, если оно не было явно закрыто более ранним вызовом «mysql_close()».

Пример: $connect = mysql_connect(‘localhost’, ‘root’, ‘no_one’); В данном случае переменная $connect явяется идентификатором соединения. Если работа ведется только с одной базой то код пишется без идентификатора: mysql_connect(‘localhost’, ‘root’, ‘no_one’);

Выбор базы данных

«mysql_select_db» — выбирает базу данных MySQL. Это значит, что на сервере может находится не одна база данных, а несколько. Этой командой мы выберем ту, которую надо (на которую у нас есть права). Параметром этой функции является имя базы. Выбранная таким образом база становится активной и связывается с определенным идентификатором. Если идентификатор связи не определен, то используется последнее подключение к базе.

Пример: mysql_select_bd(‘test’, $connect); - где test это имя базы данных, а $connect это идентификатор соединения. Если работа ведется только с одной базой то код пишется без идентификатора: mysql_select_bd(‘test’);

Посылаем запрос

mysql_query() посылает запрос в базу данных, к настоящему времени активную на сервере, который связан с определенным идентификатором связи. Если идентификатор не указан, используется последняя открытая связь. Параметром этой функции является строка с sql-запросом.

Пример: $tmp=mysql_query(«slect * from table», $connect); - эта комнда выдаст все содержимое таблицы table из активной базы данных на которую указывает идентификатор $connect. Если работа ведется только с одной базой то код пишется без идентификатора: $tmp=mysql_query(«slect * from table»);

Обработка запроса

Для обработки запросов существует несколько функций. Выбор того или иного метода обработки запросов зависит от стиля программирования, поставленной задачи. Следует также учитывать, что разные варианты по разному «загружают» сервер (некоторые сильно некоторые не очень). Разберем несколько из них.
mysql_fetch_object - возвращает объект php в качестве результата обработки. Этот метод хорош для тех, кто привык к объектному программированию
Пример: while($result= mysql_fetch_object($tmp)) echo($result->name);

При помощи php...

Создание соединения с БД на PHP разными способами :

1) старый дедовский способ подключения к MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) or die ("Нет подключения к серверу");
mysql_select_db($db_database,$conn) or die ("Нет удалось соединиться с БД");

Пояснения к переменным ниже.

При этом используются функции:

  • mysql_connect() - для подключения к серверу;
  • mysql_select_db() - для подключения к БД;

При этом постоянно проверяем на наличие ошибки таким способом: or die ("Ошибка такая то"); - переводится как или умри с такой-то ошибкой - чтобы сразу найти где ошибка.

config.php

// переменные для соединения с БД
$host = "localhost"; / хост
$username = "root"; // пароль для подключения к БД
$password = ""; // пароль для подлючения к базе данных - на локальном компьютере он может иметь пустое значение.
$database_name = "my-dolgi"; // имя БД

// старый способ соедения с БД
mysql_connect($host, $username, $password) or die("Не могу соединиться создать соединение");

// выбрать БД. Если ошибка - вывести
mysql_select_db($database_name) or die(mysql_error());

index.php

require_once "config.php";


$result = mysql_query("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") or die(mysql_error());



";


while ($row = mysql_fetch_assoc($result)) {
";
}


mysql_free_result($result);

// Закрываем соединение
mysql_close();

2) Более прогрессивный процедурный стиль - соединение с БД при помощи mysqli:

Данный способ:

  1. удобнее;
  2. быстрее до 40 раз;
  3. повышена безопасность;
  4. есть новые возможности и функции;

Пример соединения с БД на php с выборкой из таблицы

config.php

// соедения с БД
$link = mysqli_connect("localhost", "username", "password", "name-database"); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

// вывод ошибки соединения
if (!$link) {
echo "Ошибка подключения к БД. Код ошибки: " . mysqli_connect_error();
exit;
}

Обратите внимание - везде используется mysqli , а не mysql !!!

index.php

require_once "config.php";

// Выполнить запрос. Если ошибка - выводим
if ($result = mysqli_query ($link, "SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5")) {

Echo "Кому я должен по убыванию:

";

// Выборка результатов запроса
while ($row = mysqli_fetch_assoc ($result)) {
echo $row["Name"] . " с долгом " . $row["Money"] . " рублей.
";
}

// освобождение используемой памяти
mysqli_free_result ($result);

// Закрываем соединение
mysqli_close ($link );
}

Как видим, некоторые моменты поменялись (выделены курсивом).

3) Объектно-ориентированный метод подключения к бд MySQL - с помощью методов и классов:

Минусы: сложнее и менее восприимчив к ошибкам.

Плюсы: краткость и удобство для программистов с опытом.

$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if($conn->connect_errno){
die($conn->connect_error);
} else {echo "Соединение с БД успешно установлено";}

тут в принципе все интуитивно понятно:

  • $db_hostname - это хост (в основном localhost),
  • $db_database - имя БД ;
  • $db_username и $db_password - имя пользователя и пароль соответственно!

Пример соединения с БД на php стиль ООП с выборкой из таблицы

config.php

// соедения с БД
$mysqli = new mysqli ("localhost", "username", "password", "name-database"); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

// вывод ошибки соединения
if ($mysqli->connect_error) {
die ("Ошибка подключения к БД: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}

Обратите внимание - везде используется mysqli , а не mysql !!! и в отличие от предыдущего метода появляются стрелочки "->", которые показывают, что это стиль ООП.

index.php

require_once "config.php";

// Выполнить запрос. Если ошибка - выводим
if ($result = $mysqli->query ("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5")) {

Echo "Кому я должен по убыванию:

";

// Выборка результатов запроса
while ($row = $result->fetch_assoc ()) {
echo $row["Name"] . " с долгом " . $row["Money"] . " рублей.
";
}

// освобождение используемой памяти
$result->close() ;

// Закрываем соединение
$mysqli->close ();
}

Задание вам такое - найти отличия.

4) Связь с БД при помощи PDO:

При соединении с базой данных MySQL используются подготовленные выражения(методом prepare) и в результате большая безопасность и сильно увеличивает быстродействие.

config файл от предыдущего метода! - такой же

index.php

// PDO стиль для связи с MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money < ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$summa = 100000;

//запускаем выполнение
$stmt->execute();

// Объявление переменных для заготовленных значений
$stmt->bind_result($col1, $col2);

Echo "Кому я должен по убыванию:

";

// Выборка результатов запроса
while ($stmt->fetch()) {
echo $col1 . " с долгом " . $col2 . " рублей.
";
}

// освобождение используемой памяти
$stmt->close();

// Закрываем соединение
$mysqli->close();

Как видим, тут намного сложнее и надо изучать PDO - это отдельная тема.

Свою базу я назвал "phptest". После нажатие на кнопку "Создать" Вас автоматом должно перекинуть в созданную Вами базу данных.

Создаем таблицу в базе данных

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

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

после заполнение имени и количество полей, жмет "ОК" попадаем на страницу создание полей. Признаюсь Вам я не особо понимаю что делаю при создание полей, но мне это не мешает с ними работать Заполним вот так:

И заполните два нужных нам поля:

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

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

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

Вывод записей из базы данных

Начнем с этого, так как при создание какого либо проекта необходимо наглядно видеть процесс, а без вывода это очень сложно сделать (я буду работать с файлом test.php, не удивляйтесь когда увидите ссылки в коде на этот файл). Как будем выводить? Ну для начала нам необходимо подключиться к базе данных, после циклом do while (Изучаем PHP - Циклы) мы вытащим записи из базы данных. Приступим

  • Подключение к базе данных

Как осуществляется подключение? Внимание на синтаксис:

mysql_select_db(Название БД, mysql_connect(Сервер,Имя пользователя БД,Пароль пользователя БД));

Название базы данных, сервер пользователь и пароль создается Вами или предоставляется Вашим хостером. На примере локального сервера, вы создаете некоторые данные самостоятельно, или же пользуетесь уже созданными. Вот как будет выглядеть подключения к созданной мной базе данных:






//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)

Сервер, пользователь и пароль был создан по умолчанию (в данном случае можно сказать, что почти все данные нам предоставляет хостер). Из своих данных я лишь указал имя базы данных. Кстати, это php код, и поэтому должен находиться в спец скобках ()

  • Вывод данных

Нам необходимо вывести данные из таблицы page. Внимание на синтаксис вывода:

$result = mysql_query("SELECT Что вытаскиваем FROM имя таблицы в БД");

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

Вторая строчка помещает все найденное в переменную...

ВНИМАНИЕ есть пару моментов которые я бы хотел пояснить. Давайте решим несколько задач:

  • Нам необходимо вытащить все поля из таблицы.

Как вытащить все поля из таблицы 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 равную единице, воспользуемся этими знаниями:

После SELECT я через запятую пояснил какие поля необходимо извлечь, после добавил новую строчку WHERE (что означает "где") id равен 1. Таким образом я вытаскиваю нужные мне поля из строки где id равен единице

Ну что ж, приступим к созданию вывода наших статей? Выводить будем только заголовки, приступим:


$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}

Что мы сделали? Мы вытащили из таблицы два поля, id и title. Далее запустили цикл do while (Изучаем PHP - Циклы) и сформировали ссылки, с помощью данных которые вывели из БД. Данные хранятся в переменной $myrow, эта переменная является массивом , ключами к массиву являются имена наших полей в базе данных. Вот что получилось:

Вывод заголовков есть, теперь давайте организуем вывод полных сообщений при щелчке мыши по ссылке с заголовком. Для того что бы это осуществить в одном файле, добавим условия if(){}:

//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$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 "".$myrow."
";
}
while ($myrow = mysql_fetch_array($result));
}
//ВЫВОД ЗАГОЛОВКОВ

//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET["id"]))
{

$myrow = mysql_fetch_array($result);

echo $myrow;
}
//ВЫВОД ПОЛНОГО ТЕКСТА
?>

Я добавил два условия. Список с заголовками мы будем видеть только в случае если не существует глобальная переменная $_GET["id"]. Полный же текст мы увидим только если эта переменная существует. При этом из базы данных мы будем выводить лишь одну нужную нам запись. Вот, что мы получили:

Теперь думаю пора научится добавлять новые строки в таблицу.

Добавление данных в БД

Добавление начнем с создание формы , вот кусочек кода который необходимо добавить в конец нашего файла:

//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET["add"]))
{
echo "







";
}
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ

Эта форма появиться только в случае если будет существовать глобальная переменная $_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 "".$myrow."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Добавить пост";
}
//ВЫВОД ЗАГОЛОВКОВ

Отредактировал условие таким образом, что бы список заголовков не появлялся при выводе формы, вот что получилось:

$result = mysql_query("INSERT INTO имя таблицы в БД (поле 1 БД,поле 2 БД) VALUES ("данные 1","данные 2")");

Сейчас напишем обработчик для нашей мини админки и вы все поймете . Вот кусочек кода, который я разместил сразу после подключение к базе данных:

//ДОБАВЛЕНИЕ ЗАПИСЕЙ

{

header("location: test.php");
exit;
}
//ДОБАВЛЕНИЕ ЗАПИСЕЙ

Условием является глобальная переменная $_POST то есть если мы заполнили форму, нажали на кнопку "Добавить пост" то сработает наше условие. В поле title запишутся данные из глобальной переменной $_POST, а в поле text - $_POST. Далее сработает строчка header("location: test.php") Она позволяет перенаправить пользователя на другую страницу, в данном случае этой страницей будет test.php. А строчка exit; прерывает выполнение остальных скриптов. Вот что получилось:

Редактирование данных в БД

Для того что бы редактировать определенную запись в нашей БД нам естественно необходимо определить какую именно запись необходимо отредактировать...Я предлагаю выводить кнопку редактирование в коде вывода полного текста, давайте отредактируем его:

//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редактировать пост";
}
//ВЫВОД ПОЛНОГО ТЕКСТА


if(isset($_GET["edd"]))
{

$myrow = mysql_fetch_array($result);

Echo "








";
}
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ

Я добавил этот кусочек кода после формы добавление записей. Эта форма почти аналогична форме добавление постов. Как Вы могли заметить, я переделал атрибуты name, и добавил атрибут value. В этот атрибут я поместил данные которые вывел из базы данных. Так же тут присутствует невидимое поле. Оно нужно для того чтобы переслать идентификатор записи в файл обработчик.

Теперь для того что бы при выводе этой формы на экране не было списка заголовков, исправим условие:

//ВЫВОД ЗАГОЛОВКОВ

{
$result = mysql_query("SELECT id,title FROM page");
$myrow = mysql_fetch_array($result);

do
{
echo "".$myrow."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Добавить пост";
}
//ВЫВОД ЗАГОЛОВКОВ

Пришло время узнать как редактируются записи в базе данных. Вот синтаксис:

Теперь напишем обработчик. Вот кусочек кода который я добавил сразу после обработчика добавление записей:

//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ

{

header("location: test.php");
exit;
}
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ

По условию видно, что обработчик запустится только в случае если мы нажали на кнопку "редактировать пост". Далее идет обновление базы данных. В поле title мы поместим значение глобальной переменной $_POST а в поле text - $_POST. Редактировать будем строку у которой id равен глобальной переменной $_POST. После мы перенаправляем пользователя обратно к списку заголовков:

Удаление записей из БД

Ну что ж, последнее что осталось нам изучить, это удаление.. Оно проще всех остальных, так что внимание на синтаксис:

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

//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редактировать пост";
echo "
Удалить пост";
}
//ВЫВОД ПОЛНОГО ТЕКСТА

Результат работы

Вот полный код сегодняшнего поста:

//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$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","$_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", text="$_POST" WHERE id="$_POST"");
header("location: test.php");
exit;
}
//РЕДАКТИРОВАНИЕ ЗАПИСЕЙ

//УДАЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET["del"]))
{
$result = mysql_query ("DELETE FROM page WHERE id="$_GET"");
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 "".$myrow."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Добавить пост";
}
//ВЫВОД ЗАГОЛОВКОВ

//ВЫВОД ПОЛНОГО ТЕКСТА
if(isset($_GET["id"]))
{
$result = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

echo $myrow;
echo "


Редактировать пост";
echo "
Удалить пост";
}
//ВЫВОД ПОЛНОГО ТЕКСТА

//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ
if(isset($_GET["add"]))
{
echo "







";
}
//ФОРМА ДОБАВЛЕНИЕ ЗАПИСЕЙ

//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
if(isset($_GET["edd"]))
{
$result = mysql_query("SELECT * FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($result);

Echo "








";
}
//ФОРМА РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
?>

Заключение

Довольно сложный получился материал. Но! Вы могли заметить, что я использовал лишь ту информацию которую давал ранее . А это значит, что имея эти знание, можно создавать простейшие проекты на php! Если Вы все это освоили, то можете с гордостью заявить, что вы начинающий программист! Ну что ж, теперь Вы вполне можете приступить к созданию свой первой cms . Если есть какие то вопросы, а они скорее всего есть, задавайте, помогу чем смогу! Удачи Вам, на сегодня у меня все!

P.S.: Что такое mdf файл? Чем его открыть? Как его открыть? На эти и многие вопросы можно найти ответ на voprosi4ek.ru