Алина, привет! Вот пошаговая реализация загрузки фото профиля на PHP с сохранением в папку и записью пути в базу данных. Код будет простым и рабочим.
---
### 1. Подготовка
- У тебя должен быть сервер с PHP и MySQL.
- Создай папку, например, `uploads/` в корне проекта для хранения фото. Дай ей права записи (chmod 755 или 777 на Linux).
- Настрой базу данных: таблица `users` с полями `id` (int, автоинкремент), `username` (varchar), `profile_photo` (varchar, для пути к фото).
Пример SQL для таблицы:
```sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
profile_photo VARCHAR(255)
);
```
---
### 2. HTML-форма
Создай файл `profile.php` с формой для загрузки фото. Важно указать `enctype="multipart/form-data"` для работы с файлами.
```html
<!DOCTYPE html>
<html>
<head>
<title>Загрузка фото профиля</title>
</head>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="profile_photo" accept="image/*" required>
<button type="submit">Загрузить</button>
</form>
</body>
</html>
```
---
### 3. PHP-скрипт для обработки загрузки
Создай файл `upload.php`. Он будет:
- Проверять файл.
- Сохранять его в папку `uploads/`.
- Записывать путь в базу данных.
```php
<?php
// Подключение к БД (настрой под свои данные)
$db = new mysqli("localhost", "username", "password", "database"

;
if ($db->connect_error) {
die("Ошибка подключения: " . $db->connect_error);
}
// ID пользователя (например, из сессии, тут для примера фиксированное значение)
$user_id = 1; // Замени на $_SESSION['user_id'] при авторизации
// Проверка загрузки файла
if (isset($_FILES['profile_photo'])) {
$file = $_FILES['profile_photo'];
// Проверка на ошибки и тип файла
if ($file['error'] === UPLOAD_ERR_OK) {
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];
if (in_array($file_ext, $allowed_ext)) {
// Уникальное имя файла (чтобы не перезаписывать)
$new_file_name = uniqid() . '.' . $file_ext;
$upload_path = 'uploads/' . $new_file_name;
// Перемещение файла в папку
if (move_uploaded_file($file_tmp, $upload_path)) {
// Обновление пути в БД
$query = "UPDATE users SET profile_photo = ? WHERE id = ?";
$stmt = $db->prepare($query);
$stmt->bind_param("si", $upload_path, $user_id);
if ($stmt->execute()) {
echo "Фото успешно загружено!";
### 4. Отображение