Начало - первый шаг в создании управляемого сайта - подключение к Базе Данных (БД)
Тексты наших страниц мы будем хранить в базе данных. Почему не в файлах? Да потому что MySQL гораздо удобнее и проще, чем текстовые файлы! А если еще подумать о том, что БД еще и функциональнее, то все вопросы отпадут. Итак, наша первая задача - создать пользователя БД и саму базу. Заходим в нашу панель управления на хостинге, выбираем пункт меню "Управление пользователями MySQL" и жмем "Добавить", вводим описание "пользователь админки" и жмем еще раз на кнопку "Добавить". Пользователь создан, запоминаем имя пользователя(dbuser) и пароль(password), они нам скоро понадобятся. Жмем "Далее" и в следующем окне "Назад". Дальше создаем БД. Для этого заходим в "Управление базами данных MySQL" и нажимаем "Добавить", в описании пишем "админка" и жмем еще раз на "Добавить". База данных(dbname) создана. Запоминаем имя БД и жмем "Далее" и в следующем окне "настроить". Тут добавляем ранее созданного пользователя и можем идти перекурить/попить чаю! Первый шаг выполнен ;-) Хотя, нет. Давайте еще немножко потрудимся, не так много то и сделали. Итак заходим на FTP нашего сайта и создаем папку 'inc'. HYPERLINK "http://phpanel.ru/6163" \t "_blank" Создаем ее в директории '/www/site1/public_html/'. Как Вы понимаете, раз уж мы создали папку, значит в нее надо что-то записать! Этим что-то будет файл connect.php, который будет содержать настройки подключения к БД. Код этого файла следующий:
<?php /*этой строкой говорим, что пхп код начался. В дальнейшем будем писать проще: "<?", т.к. наш хостинг позволяет делать урощенную запись.*/ $link = mysql_connect('dbhost', 'dbuser', 'password') or die("Не могу соединиться"); mysql_select_db('dbname', $link); // а в последней строке мы укажем, что пхп код закончился ?>
Описание необходимых данных для второй и третьей строки:
? dbhost: mysql.доменное_имя_сайтаХост (адрес mysql-сервера) для подсоединения к базе данных. Например, если доменное имя сайта mysite.ru, то для соединения с mysql-сервером нужно указывать имя mysql.mysite.ru.В качестве доменного имени сайта можно использовать техническое доменное имя сайта.
? dbname: db_username_Nимя базы данных MySQL из принадлежащих Вашему аккаунту (можно посмотреть список баз данных в панели управления)
? dbuser: dbu_username_Nимя субпользователя MySQL, которому присвоены права на соответствующую базу данных
? password: парольпароль субпользователя базы данных, можно посмотреть в панели управления
Создание Базы Данных (БД)
Для удобства управления базой данных MySQL создана программа PhpMyAdmin. На примере нашего хостинга, мы попадаем в нее из пункта меню WEBSQL. Нажав кнопку войти, мы увидим дружественный интерфейс интересующей нас программы. В левом фрейме выбираем интересующую нас БД в выпадающем списке, потом нажимаем на появившееся название нашей БД и после этого выбираем пункт меню SQL. В окне для ввода запросов пишем:
CREATE TABLE `pages` (`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,`body` TEXT NOT NULL) TYPE = MYISAM ;
Ну, и нажимаем на кнопочку "Пошел". Наша таблица pages создана! В первое поле (id) будем записывать идентификаторы, а говоря проще номера наших страниц. Поэтому поле id числовое (INT), беззнаковое, т.е. не имеет отрицательных значений(UNSIGNED) и, самое интересное - это поле при каждой новой записи самостоятельно увеличивается на единичку(AUTO_INCREMENT).Второе поле(body) в нашей табличке текстовое, в него в общем то мы и будем записывать данные наших страничек.
Создаем файл index.php
Теперь возвращаемся к FTP и создаем папку 'adm' и переходим к самой сложной и главной задаче - создаем файл index.php, который будет ключевым в нашей админке. Не ищем легких путей и делаем все очень сложно. Поехали.Пишем нашу первую функцию на php:
<? function show_form(){         // подключаем файл с настройками подключения к БД         require '../inc/connect.php';         //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, поскольку на данном этапе они еще не используются.         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);         $row = mysql_fetch_array($result); ?> <!-- далее идет обычный HTML --> <form action="" method="post"> <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td><p>Текст страницы</p></td> </tr> <tr bgcolor="#ffffff">   <td>       <textarea name="body" rows="20" cols="59" class="enter">                 <?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?>                 <?=stripslashes($row['body']);?>       </textarea>   </td> </tr> <tr>   <td bgcolor="#1F2760" align="right">       <input type="hidden" name="id" value="<?=$_GET['id'];?>">       <input type="submit" value="отправить" name="edit">   </td> </tr> </table> </form> <?php } // функция закончилась // теперь запустим нашу функцию show_form(); ?>
Вы уже сейчас можете закачать эту страничку на сервер и посмотреть, что у нас получилось. Но впринципе - ничего интересного - пока у нас обычная форма для ввода данных. Поэтому предлагаю сразу же добавить еще одну функцию и уже потом наслаждаться тем, как много мы уже сделали.
<? function complete(){       // подключаем файл с настройками подключения - это мы уже знаем.       require '../inc/connect.php';       // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.       $result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);       // перекидываем данные из MySQL в пхпшный ассоциативный массив       $row = mysql_fetch_array($result);       // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД       if(empty($row['id']))             $query = "INSERT INTO pages (body) VALUES ('".mysql_real_escape_string($_POST['body'])."' )";       // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем       else             $query = "UPDATE pages SET                                      body = '".mysql_real_escape_string($_POST['body'])."'                      WHERE id = '".$_POST['id']."';";       // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)       mysql_query($query, $link);       // ну и просто выводим крикливую надпись, что скрипт отработал       echo '<h3>Данные обновлены</h3>'; } // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete() if($_POST['edit']) complete();?> ?>
Теперь наш файл index.php, который лежит на сервере в папке 'adm' выглядит так:
<? function show_form(){         // подключаем файл с настройками подключения к БД         require '../inc/connect.php';         //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);         $row = mysql_fetch_array($result); ?> <!-- далее идет обычный HTML --> <form action="" method="post"> <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td><p>Текст страницы</p></td> </tr> <tr bgcolor="#ffffff">   <td>       <textarea name="body" rows="20" cols="59" class="enter">                 <?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?>                 <?=stripslashes($row['body']);?>       </textarea>   </td> </tr> <tr>   <td bgcolor="#1F2760" align="right">       <input type="hidden" name="id" value="<?=$_GET['id'];?>">       <input type="submit" value="отправить" name="edit">   </td> </tr> </table> </form> <?php } // функция show_form() закончилась function complete(){       // подключаем файл с настройками подключения - это мы уже знаем.       require '../inc/connect.php';       // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.       $result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);       // перекидываем данные из MySQL в пхпшный ассоциативный массив       $row = mysql_fetch_array($result);       // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД       if(empty($row['id']))             $query = "INSERT INTO pages (body) VALUES ('".mysql_real_escape_string($_POST['body'])."' )";       // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем       else             $query = "UPDATE pages SET                                      body = '".mysql_real_escape_string($_POST['body'])."'                      WHERE id = '".$_POST['id']."';";       // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)       mysql_query($query, $link);       // ну и просто выводим крикливую надпись, что скрипт отработал       echo '<h3>Данные обновлены</h3>'; } show_form(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete() if($_POST['edit']) complete(); ?>
Заливаем на сервер, запускаем в браузере наш файл, пишем в форму любой текст, отправляем данные, заходим в websql, нажимаем обзор и радуемся! Но и на этом пока рано останавливаться. Можно перекурить, либо попить чайку и скорее-скорее продолжить написание нашего файла. Уже через 10 минут Вы можете увидеть, что простейшая админка готова! Итак, добавляем функцию, которая позволит видеть какие странички есть у нас в базе:
<?function show_pages() {         require '../inc/connect.php';         echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td>      <a href="?id=new">Добавить страницу</a>   </td> </tr> </table>';         echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td>      <b>Номер страницы</b>   </td> </tr>';         $result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);         while($row = mysql_fetch_array($result)){                echo ' <tr bgcolor="#ffffff">   <td>      <a href="?id='.$row['id'].'">'.$row['id'].'</a>   </td> </tr>';         }         echo ' </table>'; } // функция настолько простая, что мне даже и объяснять там нечего. Опять идет обычный html, в котором встречается запрос к БД, в котором мы просим вывести все наши записи отсортировав их по id. Соответственно, каждый полученный из базы id мы выводим ссылкой, чтобы в него можно было зайти. Короче, ща запустим и будет все понятно ;-) //А вот поправленный вывод стоит прокоментировать if($_POST['edit']) complete(); // это так и было if($_GET['id']) show_form(); // это новый момент, если мы нажали на ссылку в нашей новой функции, то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички. else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу последнюю функцию выбора id. ?>
А вот теперь наш файл пора протестировать. На данный момент Вы уже сможете почувствовать себя создателем полноценной админки ;-) На всякий случай дублирую новый полный код файла index.php из папки 'adm'
<? function show_form(){         // подключаем файл с настройками подключения к БД         require '../inc/connect.php';         //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);         $row = mysql_fetch_array($result); ?> <!-- далее идет обычный HTML --> <form action="" method="post"> <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td><p>Текст страницы</p></td> </tr> <tr bgcolor="#ffffff">   <td>       <textarea name="body" rows="20" cols="59" class="enter">                 <?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?>                 <?=stripslashes($row['body']);?>       </textarea>   </td> </tr> <tr>   <td bgcolor="#1F2760" align="right">       <input type="hidden" name="id" value="<?=$_GET['id'];?>">       <input type="submit" value="отправить" name="edit">   </td> </tr> </table> </form> <?php } // функция show_form() закончилась function complete(){       // подключаем файл с настройками подключения - это мы уже знаем.       require '../inc/connect.php';       // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.       $result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);       // перекидываем данные из MySQL в пхпшный ассоциативный массив       $row = mysql_fetch_array($result);       // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД       if(empty($row['id']))             $query = "INSERT INTO pages (body) VALUES ('".mysql_real_escape_string($_POST['body'])."' )";       // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем       else             $query = "UPDATE pages SET                                      body = '".mysql_real_escape_string($_POST['body'])."'                      WHERE id = '".$_POST['id']."';";       // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)       mysql_query($query, $link);       // ну и просто выводим крикливую надпись, что скрипт отработал       echo '<h3>Данные обновлены</h3>'; } function show_pages() {         require '../inc/connect.php';         echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td>      <a href="?id=new">Добавить страницу</a>   </td> </tr> </table>';         echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3">   <td>      <b>Номер страницы</b>   </td> </tr>';         $result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);         while($row = mysql_fetch_array($result)){                echo ' <tr bgcolor="#ffffff">   <td>      <a href="?id='.$row['id'].'">'.$row['id'].'</a>   </td> </tr>';         }         echo ' </table>'; } // функция настолько простая, что мне даже и объяснять там нечего. Опять идет обычный html, в котором встречается запрос к БД, в котором мы просим вывести все наши записи отсортировав их по id. Соответственно, каждый полученный из базы id мы выводим ссылкой, чтобы в него можно было зайти. Короче, ща запустим и будет все понятно ;-) if($_POST['edit']) complete(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete() if($_GET['id']) show_form(); // если мы нажали на ссылку в функции show_pages(), то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички. else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу функцию выбора id.
Вывод данных нашего сайта с админкой
Создаем файл index.php в корень нашего сайта (на примере нашего хостинга он будет в папке '/www/site1/public_html/'
<?           require 'inc/connect.php';         //htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались.         $_GET['id'] = htmlspecialchars($_GET['id']);         // если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию         if(empty($_GET['id'])) $_GET['id'] = 1;         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);         $row = mysql_fetch_array($result); ?> <html> <head>   <title></title> </head> <body> <!-- меню делаем ручками, по принципу: --> <a href="?id=1">первая страница</a> <a href="?id=2">вторая страница</a> <a href="?id=3">контакты</a><br /><br /> <?//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?> <?=stripslashes($row['body']);?> </body> </html>
В общем за 2 минуты у нас готов вывод данных. А следовательно, можно считать админку и сайт готовыми ;-) Как Вы понимаете, оформление сайта с помощью html я объяснять не буду, думаю очень просто догадаться куда вставить Ваш замечательный код для дизайна сайта.