PHP SQL
PHP SQL .ru
  Главная  Уроки  PHP  MySQL  jQuery  RegEx  CSS  Книги  Форум  
 Функции


  На главную

  Назад  Вперед

  Печать

Пишем админку

Админка - это 70% сайта.

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

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

Перейдем к коду.

1. Файл connect.php - подключение к базе данных (будет подключаться из сайта и админки)

<?php
  $DBASE = mysql_connect("localhost","login", "password") or die("Could not connect: " . mysql_error());
  mysql_select_db("basename") or die("Could not select database");
  mysql_query("SET NAMES cp1251");
?>

Вместо "login" "password" пишем логин и пароль подключения к базе данных.
Их должны дать на хостинге, где хостится Ваш сайт либо для денвера это "root" и "".

"basename" имя базы - опять же дает хостер или для денвера заходим на
localhost/Tools/phpMyAdmin/ и под Create new database набираем любое имя для базы данных и нажимаем Create. Его и заносим вместо basename.


2. Файл install.php - создаем структуру базы данных blog с текстовыми полями tema и text (вызывается один раз вначале)

<?php
require "connect.php";
//mysql_query("DROP TABLE blog");

mysql_query("
CREATE TABLE blog (
  id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
  tema VARCHAR(255),
  text TEXT,  
  date TIMESTAMP,
  INDEX (tema)
) DEFAULT CHARSET=cp1251;" 
);
echo mysql_error();
?>
<br> Готово!

id здесь - уникальный идентификатор-ключ, номер записи: 1,2,3,... Добавляйте во все базы данных без раздумий.
tema символьное поле до 255 символов
text текстовое поле
date типа timestamp само заполняет дату и время редактирования записи, что бывает полезно.
INDEX(tema) создает индекс для данного поля для ускорения поиска.
cp1251 кодировка базы данных, может быть и utf8.


3. Создаем базу данных выполнив предыдущий файл
http://наш сайт/install.php
где наш сайт - это или домен сайта или папка где он лежит если работаем в денвере.

Написали Готово! - все отлично, если пишет ошибки, правим и разбираемся в чем дело.


4. Файл admin.php - сама админка. Начало.

<?php
if($_COOKIE["pass"]!=="password"){ 
  sleep(1);
  if(isset($_POST["pass"])){
    setcookie("pass",$_POST["pass"], time()+3600*24*14);
    die("Обновите страницу");
  }
?>
<html><head><title>Админка</title></head><body>
<form method="post">
<input type="password" name="pass" value="">
<input type="submit" name="submit" value="Пароль">
</form></body></html>
<?php
  exit();
}
?>

Заместо "password" набираете свой пароль.
Получив сообщение "Обновите страницу" нажмите на браузере кнопку "Обновить текущую страницу" или F5.

В этом коде проверяем кук и если он не содержит требуемый пароль, то выводим простейшую форму ввода пароля и затем устанавливаем кук с паролем сроком на 2 недели.
sleep(1) нужен для создания паузы в 1 секунду чтобы усложнить подбор пароля.
Если пароль верен движемся дальше.
Т.е. весь остальной код выполняется только при правильно введенном пароле.


5. Ниже сделаем поиск по теме статьи и форму для редактирования записей.
Продолжим заполнять файл admin.php

<br>
<form method="post">
<input type="text" name="find" value="">
<input type="submit" name="search" value="Поиск">
</form>

<?php
require "connect.php";

if(isset($_POST["search"])){
  $search=trim($_POST["find"]);
  $query = "SELECT * FROM blog WHERE tema LIKE `%$search%` ORDER by id DESC";
  $result = mysql_query($query);
  echo `<table>`;
  while($row = mysql_fetch_array($result)){
    echo `<tr><td><a href="?id=`,$row[`id`],`">`,$row[`id`],`</a></td><td>`,$row[`tema`],
      `</td><td>`,$row[`text`],`</td></tr>`;
  }
  exit();
}
// А это форма редактирования записи

echo<<<HERE
<form method="post"><table border="0">
<tr><td>id</td><td>$row[id]</td></tr>
<tr><td>Заголовок</td><td><input type="text" size=32 name="tema" value=`$row[tema]`></td></tr>
<tr><td>Статья</td><td><textarea name="text" cols=80 rows=2>$row[text]</textarea></td></tr>
<input type="hidden" name="id" value=`$_GET[id]`>
<tr><td></td><td>
HERE;

if(!empty($_GET[`id`])){
  echo ` <input type="submit" name="edit" value="Сохранить">`;
  echo ` <input type="submit" name="delete" value="Удалить">`;
}else{
  echo `<input type="submit"name="insert" value="Добавить">`;
}
echo `</tr></table></form>`;
?>

Пояснения:
В строке $query = "SELECT * FROM blog WHERE tema LIKE `%$search%` ORDER by id DESC";
ищем все записи где тема включает символы введенные через поиск
Сортировка здесь задана по уменьшению id просто для примера.
Если нужно ограничить число записей, то в конце запроса добавляем "LIMIT 0,20" - 20 записей начиная с нулевой, цифры любые.
$result = mysql_query($query); - здесь выполняется сам запрос.
while($row = mysql_fetch_array($result)){ - пока найдены записи цикл. Если не найдены, то в цикл не попадаем.
$row[`id`] - поле id из записи row, полученой строчкой выше. В нашей базе можно обращаться еще к $row[`tema`] и $row[`text`]. Название поля берется в одиночную кавычку, можно в двойную.
echo - оператор вывода, как print в бейсике. Отображает строки, а для переменных их значения.
echo<<<HERE разновидность оператора вывода. Выводит все от него и до строки HERE ниже в блоке.
$_POST - массив переменных, переданных с формы методом post
$_GET - массив переменных, полученных при переходах на страницу вида http://имя сайта/?id=5
имеем соответственно $_GET[`id`]=5


6. Осталось добавить в код сами действия:
Их добавляем в admin.php ПЕРЕД строкой echo<<<HERE

<?php
if(!empty($_GET[`id`])){  
  $query="SELECT * FROM blog WHERE id=$_GET[id]";
  $result = mysql_query($query);
  $row = mysql_fetch_array($result);
}
// Добавление
if(isset($_POST[`insert`])){
  $query="INSERT INTO blog (tema,text) VALUES (`$_POST[tema]`,`$_POST[text]`)";
  mysql_query($query);
}
//Корректировка
if(isset($_POST[`edit`])){
  $query="UPDATE blog SET tema=`$_POST[tema]`,text=`$_POST[text]`  WHERE id=`$_POST[id]`";
  $result = mysql_query($query);
  unset($row);  
}
/Удаление
if(isset($_POST[`delete`])){
  $query="DELETE FROM text WHERE id=`$_POST[id]`";
  mysql_query($query);
  unset($row);
}
?>


7. Запускаем админку командой http://имя сайта/admin.php
Исправляем ошибки. Наслаждаемся :)


ВНИМАНИЕ! ВСЕ СИМВОЛЫ ` в коде МЕНЯЕМ на символ одиночной кавычки '

 
Предыдущая   На главную   Следующая          

Ламер   18.02.2011 в 19:39
чёт не понял ничего..ВСЕ СИМВОЛЫ ` в коде МЕНЯЕМ на символ одиночной кавычки \\ - поставить косую надо чтоль?

Владимир   14.03.2011 в 12:34
` меняем на \

владимир   14.03.2011 в 12:37
Форма добавления коментариев извращает инфу короче меняем ё на э

Гость   21.03.2011 в 08:17
Спасибо автору за статью, нашёл очень нужный мне момент. Без него работа встала.

Ещё раз спасибо.

Павел   28.04.2011 в 15:27
Спасибо за статью, если можно -подскажите, вывожу список из базы в виде ссылок , при нажатии должна заполнятся форма исходя из чилсла id ссылки,в адресной строке видно что id появляются и меняются исходя из ссылки, а вот сама форма не появляется не говоря уже про заполнение . В php вставлен htmt(форма) через

PAPich   17.05.2011 в 05:26
Ура, всё получилось!!!
Спасибо за ваш труд, я всего неделю занимаюсь PHP сайтом, много просмотрел всякого мануала, ваш самый доходчивый для новичка!!!!
P.S. Нашёл на этой странице маленький недочёт, после кнопки ОТПРАВИТЬ в форме добавления сообщения, в коде видно лишняя одинарная скобка, присмотритесь на досуге :))

Deagle   25.08.2011 в 01:41
я скачал готовый сервер а не могу а полнить поля мржете помочь плиЗ што и как ато я 2 часа про плакал! кагда не смог заполнить! =`(

ArchAngeL_EviL   16.11.2011 в 22:25
setcookie(\"pass\",$_POST[\"pass\"], time()+3600*24*14);
эта строка заработала тока вот так:
@setcookie(\"pass\",$_POST[\"pass\"], time()+3600*24*14);

иван   30.11.2011 в 15:11
не пойму через че потом заходить

Алексей   11.02.2012 в 23:46
Отлично работает)спасибо)

Ольга   10.04.2012 в 00:54
Ни чего не получилось, после как в admin.php добавила последний код что перед строкой echo

Ольга   10.04.2012 в 00:56
=> строкой echo

Я же   10.04.2012 в 00:57
=> знак ` заменила на \

Яж   10.04.2012 в 00:58
вылазит эта строка:

Гость   10.04.2012 в 00:59
Parse error: syntax error, unexpected in адрес сайта on line 39

Кирилл   21.04.2012 в 15:58
Ввел пароль пишет обновите страницу и виснет

Гость   05.07.2012 в 16:41
не работает

Magi   25.07.2012 в 08:39
Вот такая ошибка возникает:

Warning: Cannot modify header information - headers already sent by (output started at Z:\\home\\localhost\\www\\adminka\\admin.php:1) in Z:\\home\\localhost\\www\\adminka\\admin.php on line 5

вот в этой строке:
// setcookie(\"pass\",$_POST[\"pass\"], time()+3600*24*14);
уже все перепробовала ничего не помогает...

Magi   25.07.2012 в 08:40
строка естественно без // в коде написана

VLE_harbecox   19.09.2012 в 12:21
все работает кроме INFO INSERT... но не понял по чему

Петр   19.09.2012 в 18:43
Parse error: syntax error, unexpected in адрес сайта on line 39
как исправить?

Петр   19.09.2012 в 18:53
Если у кого то возникает ошибка Parse error: syntax error, unexpected in адрес сайта on line 39
Нужно закрыть php Тегом ?> в линии 39

андрей   20.09.2012 в 11:08
да я нге могу свою то найти админку раньше была сейчас пропала

андрей   20.09.2012 в 11:11
не могу выплатить деньги челом помогите кто может найти админку

Artem   22.10.2012 в 13:53
Warning: mysql_connect() [function.mysql-connect]: Access denied for user \

Гость   22.10.2012 в 23:09
логин пароль локалхост неправильно указал. если на эмуляторе денвере делаешь то смотри в нем примеры как подключаться. А вообще то ворнинги это некритично, должно работать. Еррор критичен.

юлия   07.12.2012 в 19:26
Parse error: syntax error, unexpected \

юлия   07.12.2012 в 19:28
Такая же проблема на 31 линии. Ничего не помогает

Гость   31.01.2013 в 19:17
внимательно проверяйте синтаксис и комментарии //...

Гость   31.01.2013 в 19:18
синтаксис

Гость   31.01.2013 в 19:20
блять. короче удаляйте все < ?phр и ? > в середине, оставляйте только первый и последний

ТОр   21.02.2013 в 06:19
епрст.а почему файлы уже не созданы?я что сам их должен создавать??

Илья   11.04.2013 в 19:21
Нормально! Постоянно нахожу, что надо!

Гость   01.05.2013 в 08:16
где файл admin.php
\\\"?php\\\"
\\\"if($_COOKIE[\\\"pass\\\"]!==\\\"password\\\")\\\"
Вместо \\\"password\\\" ввела $_POST[\\\"pass\\\"]
И все ОК.Спасибо!!!

Гость   06.05.2013 в 08:11
Когда выводит ошибку типа
Warning: Cannot modify header information - headers already sent by (output started at Z:\\\\home\\\\localhost\\\\www\\\\adminka\\\\admin.php:.. in
тогда нужно менять в php.ini строку output_buffering = Off на on и затем перезапустите ваш локальный сервер

Ксения   14.08.2013 в 13:06
В итоге получилось "Обновите страницу". И как этим пользоваться? Что дальше?

Гость   31.08.2013 в 10:05
Тем кто не нашёл: В коде действий вместо "/Удаление" нужно "//Удаление" - пропущен слеш.

Гость   28.10.2013 в 17:32
Синтаксическая ошибка: синтаксическая ошибка, неожиданный T_CONSTANT_ENCAPSED_STRING, ожидая

Гость   04.12.2013 в 10:16
Эта админка не подойдет для простых пользователей. Как простые пользователи будут добавлять в пост не простой текст, а плюс еще списки, курсивы, выделения, ссылки на скачиваемые файлы?

Кирилл   11.12.2013 в 01:36
указываю верный пароль, всплывает "обновите страницу" - обновляю и все,далее пустое окошко браузера, ни какие формы не отображаются. что делать?

lehish   11.12.2013 в 22:11
Интересует
1) Почему надо именнот акие кавычки
2) Почему нельзя было в тексте использовать нужные кавычки? CMS не пропустила?

Гость   16.12.2013 в 19:11
указываю верный пароль, всплывает "обновите страницу" - обновляю и все,далее пустое окошко браузера, ни какие формы не отображаются. что делать?

Артем   07.02.2014 в 22:41
а как получить id статьи которые выводятся?

Гость   08.02.2014 в 15:41
$_GET[id]

Влад   20.03.2014 в 02:58
Отличная статья! Все очень хорошо написано, дословно обо всем рассказано. Усвоил админку за час и еще за час подстроил полностью под себя хотя долго этого не понимал. Автору отдельное спасибо!

Наталья   03.04.2014 в 15:02
Все получилось, огромное спасибо! А как теперь вывести все статьи на странице сайта или админки???

Гость   04.04.2014 в 09:21
$query = "SELECT * FROM blog";
$result = mysql_query($query);
while($r = mysql_fetch_array($result)){
echo r[названия полей];
}

Мак   15.05.2014 в 21:00
Нормальная админка. внимательней быть надо и что то самому допереть. И не путать саму базу с таблицей в ней.
Ну это ладно.
Кто пробовал дополнить её, что бы была кнопка добавить запись. Сохранить есть, удалить есть.. а добавить?

Гость   18.05.2014 в 21:09
тут вроде есть код чтобы добавить

Игорь   05.08.2014 в 04:19
Получилось круто!
Только хотел добавить кое-что (сам долго с этим провозился):
в пункте 4 вот эту часть:

?php
exit();
}

нужно поставить между тегами /form и /body. Знаки "больше/меньше" пропустил.
Дальше все можно вставлять по пунктам.

Автору спасибо!

Ваш комментарий:

'

Реклама на сайте | Обмен ссылками | Ссылки | Контакты
Добавить статью | Добавить исходник
2010-2014 © phpsql.ru