Для тех из вас, кто следил за последними несколькими скринкастами, вы, должно быть, заметили, что каждый урок был посвящен теме «фото сайта». (См. « Сканирование папок с помощью PHP» , « Как динамически создавать миниатюры и создание фото-админ-сайта с использованием PHP и jQuery» . Сегодня мы создадим бэкэнд для фото-сайта. Из этого туториала вы узнаете, как добавлять, удалять и обновить фотографии.
Наша миссия
- Создайте базу данных, в которой будут храниться наши изображения.
- Создайте домашнюю страницу, которая извлекает все фотографии, хранящиеся в нашей базе данных.
- Разрешить пользователю загружать фотографии.
- Напишите некоторую проверку, чтобы убедиться, что пользователь вводит правильное описание и выбирает изображение
- Используйте jQuery, чтобы позволить пользователю асинхронно обновлять и удалять определенные фотографии.
Там просто слишком много, чтобы покрыть как письменное руководство. Я включил несколько ключевых моментов. Обратитесь к скринкасту для полного урока.
Структура базы данных
Получить фотографии из базы данных
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function getPhotos() {
require ‘database.php’;
$q = «SELECT id, tn_src FROM photo ORDER BY id desc»;
$result = $mysqli->query($q) or die($mysqli_error($mysqli));
if($result) {
while($row = $result->fetch_object()) {
$tn_src = $row->tn_src;
$src = $row->src;
$id = $row->id;
print ‘<li>
<a href=»review_image.php?id=’ . $id . ‘»>
<img src=»‘ . $tn_src . ‘» alt=»images» id=»‘ . $id . ‘» />
</a>
</li>’;
print «\n»;
}
}
}
|
Загрузить фотографии
Проверка формы
1
2
3
4
5
|
if(strlen($_POST[‘description’]) < 4)
$error[‘description’] = ‘<p class=»alert»>Please enter a description for your photo.
if($filename == » || !preg_match(‘/[.](jpg)|(gif)|(png)|(jpeg)$/’, $filename))
$error[‘no_file’] = ‘<p class=»alert»>Please select an image, dummy!
|
Обновите описание фотографии асинхронно
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$(‘#description’).click(function() {
var originalelement = this;
var currentText = $(this).text();
$(this).fadeOut(100).before(‘<textarea id=»input» cols=»40″ rows=»12″>’ + currentText + ‘</textarea>’);
$(‘#input’).livequery(‘change’, function() {
var id = <?php echo $_GET[‘id’] ?>;
var thisparam = this;
var newText = $(this).val();
if (newText == ») {
newText = ‘Please enter a description’;
}
$.ajax({
type: ‘post’,
url: ‘updatePhoto.php’,
data: ‘id=’ + id + ‘&description=’ + newText,
success: function() {
$(thisparam).remove();
$(originalelement).text(newText).fadeIn(1000);
}
});
});
});
});
|
UpdatePhoto.PHP
01
02
03
04
05
06
07
08
09
10
11
|
require ‘database.php’;
$id = $_POST[‘id’];
$d = addslashes($_POST[‘description’]);
if ($d == ») $d = ‘Click here to enter a description.’;
$q = «UPDATE photo SET description=’$d’ WHERE id = $id»;
$result = $mysqli->query($q) or die(‘There was a problem updating this information.’);
if($result) echo «Your photo has been successfully updated.»;
|
Удалить фото
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
$(function() {
$(‘img’).click(function() {
var id = $(this).attr(‘id’);
var thisparam = $(this);
$.ajax({
type: ‘post’,
url: ‘delete.php’,
data: ‘id=’ + id,
success: function() {
$(thisparam).parent(‘li’).fadeOut(‘slow’);
$(‘#result’).remove();
var response = ‘<div id=»result»><h4>Success.
response += ‘<a href=»index.php»>Return to Home Page</a></div>’;
$(‘body’).append(response);
}
});
});
})
|
Delete.PHP
1
2
3
4
5
6
7
8
|
require ‘database.php’;
$id = $_POST[‘id’];
$q = «DELETE from photo WHERE id = $id»;
$result = $mysqli->query($q) or die(«There was a problem!»);
if($result) header(«location: index.php»);
|
завершение
Так что это делает. Вы могли бы реализовать немного больше безопасности в этом приложении. Но идея в том, что эти страницы уже будут защищены с помощью чего-то похожего на файл ht-access. С этого момента небо — это предел. Вы должны рассмотреть возможность добавления тегов к изображениям, создания альбомов и т. Д. Это должно помочь вам начать.