Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.05.2024
Сообщений: 24

Выгрузка файла в PHP

11.05.2024, 16:03. Показов 703. Ответов 7

Студворк — интернет-сервис помощи студентам
Есть следующая форма для регистрации на конференцию:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 <form method="POST" action="php/registration.php" enctype="multipart/form-data">
                <div class="form-group">
                  <input type="text" class="form-control" name="name" placeholder="Имя" required>
                </div>
                <div class="form-group mt-3">
                  <input type="text" class="form-control" name="surname" placeholder="Фамилия" required>
                </div>
                <div class="form-group mt-3">
                  <input type="text" class="form-control" name="email" placeholder="Email" required>
                </div>
                <div class="form-group mt-3">
                  <label for="FormControlFile1">Бланк заявления:</label>
                  <input type="file" name="statement" class="form-control-file" id="FormControlFile1" required>
                </div>
                <div class="form-group mt-3">
                  <select id="your ticket-type" name="ticket-type" class="form-select" required>
                    <option value="no theme">-- Тема Конференции --</option>
                    <option value="Net system">Системы связи</option>
                    <option value="Radiolocate system">Радиолокационные системы</option>
                    <option value="Work with info & tech">Работа с информацией и техникой</option>
                  </select>
                </div>
                <div class="text-center mt-3">
                  <button type="submit" class="btn">Регистрация</button>
                </div>
              </form>
Для регистрации с помощью встроенного в хостинг spaceweb phpmyadmin сделан php файл со следующим содержанием:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$servername="localhost";
$username="vladlubnev";
$password="Basedata1147!-";
$dbname="vladlubnev";
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения
if ($conn->connect_error) {
    die("Ошибка подключения: " . $conn->connect_error);
}
// Получение данных из формы
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$statement = $_FILES['statement']['name'];
$ticket_type = $_POST['ticket-type'];
// Загрузка файла заявления
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["statement"]["name"]);
move_uploaded_file($_FILES["statement"]["tmp_name"], $target_file);
// Вставка данных в базу данных
$sql = "INSERT INTO registrations (name, surname, email, statement, ticket_type) VALUES ('$name', '$surname', '$email', '$statement', '$ticket_type')";
if ($conn->query($sql) === TRUE) {
    echo "Регистрация прошла успешно!";
} else {
    echo "Ошибка регистрации: " . $conn->error;
}
// Закрытие подключения к базе данных
$conn->close();
?>
В форме необходимо прикрепить бланк заявления в формате docx. Как итог, всё загружается в базу данных, но вся проблема в том, что посмотреть загруженный docx файл не получается, скачивается docx в котором написано название самого файла, что нужно изменить в коде или в базе данных что бы файл был доступен для просмотра? На скриншотах изображены таблица бд в которую загружен файл и сама структура.
Миниатюры
Выгрузка файла в PHP   Выгрузка файла в PHP  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2024, 16:03
Ответы с готовыми решениями:

Выгрузка данных из MySQL в PHP
Всем доброго времени суток... В phpMyAdmin создал базу данных из которой на свой сайт, хочу выгружать данные. Написал в php код (ну как...

PHP Выгрузка содержимого БД на сайт без перезагрузки страницы
Добрый вечер! Изучаю PHP, дошло дело до комментариев, создал PHP файл с формой ввода и ссылкой на файл-обработчик соединения и коннекта с...

Обращение к Excel и выгрузка в php
Добрый день товарищи программисты и любители. Сразу к вопросу. Есть ексель файл со следующим содержанием: ...

7
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
11.05.2024, 16:26
В базу надо сохранять имя файла. В вашем случае $target_file. И нужно изменить тип поля statement на varchar
0
0 / 0 / 0
Регистрация: 11.05.2024
Сообщений: 24
11.05.2024, 16:29  [ТС]
sash23, не совсем понял что вы имеете в виду, то есть нужно в поле VALUES ('$name', '$surname', '$email', '$statement', '$ticket_type') заместо statement вставить $target_file?
0
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
11.05.2024, 16:38
Цитата Сообщение от VladosTSF Посмотреть сообщение
вставить $target_file?
да. то есть хранить надо имя сохраненного файла. в данном случае будет что-то типа "uploads/Document.docx"
0
0 / 0 / 0
Регистрация: 11.05.2024
Сообщений: 24
11.05.2024, 18:00  [ТС]
Понял, но суть немного не в этом, возможно ли именно сохранение самого форматирования документа, то есть текста в нём и таблиц, и его просмотр? при загрузке с phpmyadmin скачивается docx файл в котором кроме "uploads/Document.docx" ничего нет.
Вложения
Тип файла: docx Заявка на участие- приложение к инф письму.docx (14.2 Кб, 3 просмотров)
0
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
11.05.2024, 20:39
Вы хотите хранить файлы в самой базе. Но так делать не рекомендуется. Файлы лучше хранить в файловой системе и у вас это и происходит (используя move_uploaded_file). А в базе нужно хранить путь до файла (имя). phpmyadmin тут не поможет. Придется написать еще один скрипт на php в котором будут выводиться все записи из базы и формироваться ссылки для скачивание файлов.
1
0 / 0 / 0
Регистрация: 11.05.2024
Сообщений: 24
12.05.2024, 08:14  [ТС]
Понял, спасибо, написал новый скрипт, но теперь при нажатии скачать вылетает ошибка 404.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
$servername="localhost";
$username="vladlubnev";
$password="Basedata1147!-";
$dbname="vladlubnev";
 
$conn = new mysqli($servername, $username, $password, $dbname);
 
// Проверка подключения
if ($conn->connect_error) {
    die("Ошибка подключения: " . $conn->connect_error);
}
 
// Получение всех записей из базы данных
$sql = "SELECT * FROM registrations";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // Вывод заголовков таблицы
    echo "<table border='1'>";
    echo "<tr><th>ID</th><th>Имя</th><th>Фамилия</th><th>Email</th><th>Заявление</th><th>Тип билета</th></tr>";
 
    // Вывод данных из базы данных
    while ($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>" . $row["id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["surname"] . "</td>";
        echo "<td>" . $row["email"] . "</td>";
 
        // Формирование ссылок для скачивания файлов
        echo "<td><a href='uploads/Заявка на участие- приложение к инф письму.docx" . $row["statement"] . "'>Скачать</a></td>";
 
        echo "<td>" . $row["ticket_type"] . "</td>";
        echo "</tr>";
    }
 
    echo "</table>";
} else {
    echo "Заявок нет";
}
 
// Закрытие подключения к базе данных
$conn->close();
?>
Изначально в строке echo "<td><a href='uploads/...> не было прописано название документа, но была та же ошибка

Добавлено через 1 час 20 минут
Маленько поменял код, заменил раздел для скачивания
PHP
1
2
3
4
5
6
 $file_path = "uploads/" . $row["statement"];
        if (file_exists($file_path)) {
            echo "<td><a href='$file_path'>Скачать</a></td>";
        } else {
            echo "<td>Файл не найден</td>";
        }
Файл по итогу всегда не найден...
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3942 / 2046 / 829
Регистрация: 13.03.2010
Сообщений: 6,735
13.05.2024, 08:02
Проблема с выгрузкой файла
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2024, 08:02
Помогаю со студенческими работами здесь

Выгрузка прайса в excel из БД средствами php
Здравствуйте, форумчане! Имеется задача из магазина выгружать прайс в ексель. Все данные в БД. Какие есть способы, может стандартные методы...

Выгрузка php запроса в html странице без перезагрузки
Выгрузка php запроса в html странице без перезагрузки какие есть способы дайте примеры плизз ! ! !

Выгрузка с 1с 8,2 в XML, а потом в PHP
Здравствуйте. Вот планируется диплом связан с 1с. И тут вопрос как визгрузить БД 1с 8,2 в PHP(как то так)??? Мне чтото говорили, что...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Закрытая тема Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru