Генератор форм

Для веб-мастера

Реклама


Создаем счетчик закачек и счетчик просмотров своими руками. Часть №3

Рейтинг:
Дата: 19 октября 2009 Просмотры 7582

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

Сегодня же мы создадим страничку с помощью которой можно будет легко редактировать и удалять созданные раннее ссылки.

Выглядеть она будет таким образом:

счетчик закачек
счетчик просмотров

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

Итак, давайте создадим новый php-документ и назовем его edit.php . Для начала давайте сделаем так, чтобы у нас выводился весь список имеющихся в базе данных файлов. Для этого мы будем использовать цикл do-while, и в цикле будем выводить все записи из базы. Выглядеть это будет так:

<?php
/* Подключаемся к базе данных */
include("bd.php");

?>
<html>
<head>
<title>Редактор файлов</title>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>

<table border="1" align="center" cellpadding="10"
cellspacing="0" bordercolor="#000000">
<tr> <td align="center">
<h2 style="color:#990000; text-decoration:underline">Редактор файлов!</h2>
<?php
/* Делаем выборку всех записей из базы данных */
$result=mysql_query("SELECT * FROM download ORDER BY count DESC",$db);

if (!$result){
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об
этом администратору<br> <strong>Код ошибки:</strong></p>";
exit();
}

/* Если в таблице есть записи  */
if (mysql_num_rows($result) > 0){
/* Извлекает результирующий ряд как ассоциативный массив */
$myrow = mysql_fetch_array($result);

/* Выводим шапку таблицы */
echo "<div id='link'><p align='left'><a href='index.html'>
<<< На главную</a></p>
<table border=1 width=100% align='center' cellpadding='0' cellspacing='0'
bordercolor='#000000'><tr bgcolor='#FFFFCC'>
<td><b>Название ссылки</b></td><td><b>Число закачек</b></td>
</tr>";

/* Выводим в цикле все записи из базы данных */
do {
echo "<tr><td width='80%' align='left'>
<a href='edit.php?id=".$myrow['id']."'><li>".$myrow['title']."</li></a>
</td><td width='20%'>".$myrow['count']."</td></tr>";
}
while ($myrow=mysql_fetch_array($result));
echo "</table></div>";
}
else {
echo "<p>Информация по запросу не может быть извлечена.
В таблице нет записей!</p>";
}
?>
</td>
</tr>
</table>

</body>
</html>

В принципе ничего нового для Вас здесь нет и я все закомментировал, так что проблем не должно возникнуть. Единственное с что для Вас может быть новым – это цикл do-while.

do {
 echo  "<tr><td width='80%' align='left'>
<a  href='edit.php?id=".$myrow['id']."'><li>".$myrow['title']."</li></a>
</td><td  width='20%'>".$myrow['count']."</td></tr>";
 }
 while ($myrow=mysql_fetch_array($result));  

Как видно из названия цикл do..while выполняет определенные действия (в нашем случае выводит записи из базы данных), пока выполняется определенное условие (в нашем случае пока имеются записи в базе данных)!

Циклы do-while очень похожи на циклы while, но условное выражение проверяется в конце каждой итерации, а не в начале, поэтому действие хотя бы один раз, но обязательно выполнится.

Если Вы заметили, то при выводе записей из базы данных, ссылка имеет вид edit.php?id=".$myrow['id'].". Это означает, что при нажатии на такую ссылку файлу edit.php методом GET мы передаем переменную id, которая будет равна уникальному id (идентификатору) файла в базе данных.

Зная этот идентификатор можно легко доработать наш скрипт и выводить информацию для редактирования.

Давайте посмотрим на эти изменения:

<?php 
   /* Делаем выборку всех записей из базы данных */
 $result=mysql_query("SELECT  * FROM download ORDER BY count DESC", $db); 

if (!$result){
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом
администратору<br> <strong>Код ошибки:</strong></p>";
exit();
}
/* Если в таблице есть записи  */
if (mysql_num_rows($result) > 0){
/* Извлекает результирующий ряд как ассоциативный массив */        
$myrow = mysql_fetch_array($result);

/* Если не существует id файла выводим список всех файлов из базы */
if (!isset($id)){
/* Выводим шапку таблицы */
echo "<div id='link'><p align='left'><a href='index.html'>
<<< На главную</a></p><table border=1 width=100% align='center'
cellpadding='0' cellspacing='0' bordercolor='#000000'>
<tr bgcolor='#FFFFCC'><td><b>Название ссылки</b></td>
<td><b>Число закачек</b></td></tr>";

/* Выводим в цикле все записи из базы данных */
do {
echo "<tr><td width='80%' align='left'>
<a href='edit.php?id=".$myrow['id']."'><li>".$myrow['title']."</li></a>
</td><td width='20%'>".$myrow['count']."</td></tr>";
}
while ($myrow=mysql_fetch_array($result));
echo "</table></link>";
}
/* Если id файла имеется выводим таблицу для редактирования */
else {
/* Делаем выборку значений из базы данных  для указанного id */
$result=mysql_query("SELECT * FROM download WHERE id=$id", $db);
$myrow = mysql_fetch_array($result);

  echo "<ul style='color:#000033; font-weight:bold'>$message</ul>";

print ("<p align='left'><a href='edit.php'><<< Назад</a></p>
<form  method='post'>
Название ссылки: <br>
<input name='title' type='text' size='70' value='".$myrow['title']."'>
<br>
<br>                         
URL ссылки: <br>
<input name='url' type='text' size='70' value='".$myrow['url']."'>
<br>
<br>
Количество закачек: <br>
<input name='count' type='text' size='70' value='".$myrow['count']."'>
<br>
<br>
Вид ссылки для использования: <br>
<input  type='text' readonly='true' size='70'
value='http://".$_SERVER['SERVER_NAME']."/download.php?id=$myrow[id]'>
<input name='id' type='hidden' size='70' value='".$myrow['id']."'>
<br>
<br>       
<input name='save' type='submit' value='Сохранить'>
<input name='drop' type='submit' value='Удалить'>
</form>"
);
}         
}
else {
echo "<p>Информация по запросу не может быть извлечена.
В таблице нет записей!</p>";
}         
?>

Итак, если id файла присутствует, выводим форму для редактирования.

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

<?php 
 /* Подключаемся к базе данных */
 include("bd.php"); 

if (isset($_GET["id"])){           
$id = $_GET["id"];     
/* Проверяем является ли переменная числом */
if (!preg_match("|^[\d]+$|",$id)){
echo "<p>Не верный формат запроса! Проверьте URL!</p>";
}
}

if (isset($_POST['title'])){
$title = htmlspecialchars(trim($_POST['title']));
if ($title == '') unset($title);
}
if (isset($_POST['url'])){
$url = htmlspecialchars(trim($_POST['url']));
if ($url == '') unset($url); }
if (isset($_POST['save'])){$save = $_POST['save'];}
if (isset($_POST['drop'])){$drop = $_POST['drop'];}

if (isset($_POST['count'])){
$count = htmlspecialchars(trim($_POST['count']));
/* Проверяем является ли переменная числом */
if (!preg_match("|^[\d]+$|",$count)){
$message .= "<li>Не верный формат \"Количество закачек\"!</li>";
}
}

/* Если нажата кнопка "Сохранить" и есть id файла и нет ошибок */
if (isset($save) and isset($id) and $message==""){
/* Проверяем на заполнение все поля */
if (isset($title) && isset($url) && isset($count)){
/*  Если все ОК, заносим информацию в базу данных*/
$result = mysql_query("UPDATE download SET title='$title',
url='$url', count='$count' WHERE id='$id'",$db);

    if ($result == true){
$message .= "Изменения сохранены!";
}
else {
$message .= "Изменения не сохранены!";
}

} else{ $message .= "Вы ввели не всю информацию, поэтому файл в базу не может быть добавлен!"; } }

/* Если нажата кнопка "Удалить" */
if (isset($drop)){

   if(isset($id)){

/*  Удаляем файл из базы данных*/ $result = mysql_query("DELETE FROM download WHERE id='$id'",$db);

if ($result == true){
$message .= "Выбранный файл успешно удален!";
header("location:edit.php");

}
else {
$message .= "Выбранный файл не удален!<br>";
}
}
else{
$message .= "<p>Вы не выбрали файл для удаления, поэтому он
не удален!</p>";
}
}

?>

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

Кому не понятно, исходники здесь.

На этом все!

Оцените эту статью:

Курс "PHP за 3 недели" - это полная комплексная система обучения программированию на языке PHP для начинающих.

Благодаря нашей новой, но уже зарекомендовавшей себя системе десятки человек стали настоящими PHP-программистами в течение 3-х недель! 

Подробнее ->

Похожие статьи
Интересно почитать

    Получать новые материалы этого сайта на свой email адрес?

    Отправлять мне комментарии по эл. почте?

Реклама

Топ комментаторы

  • Lonadels (2)
  • Бодрый (1)

Нашли ошибку в тексте

Система Orphus
https://biznesguide.ru/coding/82.html
4,53 из 5 на основе 6 оценок.
Твиттер Facebook Google plus RSS