|
|
|
| Я загружаю картинку на свой сайт:
Вот форма:
<form action="File_upload.php" method="post" enctype="multipart/form-data" name="file_upload" id="file_upload">
<p>
<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="165536">
</p>
<p>Фаил:
<label></label>
<label>
<input name="sendfile" type="file" id="sendfile">
</label>
</p>
<p>
<label>
<input name="Submit" type="submit" id="Submit" value="Отправить">
</label>
</p>
</form>
|
Скрипт отправки:
<?php
if (isset($_POST["MAX_FILE_SIZE"])) {
$tmpFile = $_FILES["sendfile"]["tmp_name"];
$destFile = $_SERVER["DOCUMENT_ROOT"] . "/uploads/" .
$_FILES["sendfile"]["name"];
move_uploaded_file($tmpFile, $destFile);
}
header("Location: Files.php");
?>
|
Всё прекрастно работает, но я бы хотел чтобы при загрузки картинок путь записывался в базу данных mysql долго бьюсь но не как не могу реализовать, прошу помощи у проффесионалов.
Помогите разобраться :) | |
|
|
|
|
|
|
|
для: qwelp
(23.10.2006 в 00:44)
| | Что вызывает сложность? У вас какая структура таблицы? | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 02:54)
| | Структура
table: url_foto
id_im int(11) auto_increment
path_im varchar(200)
|
Как я понимаю в скрипт нужно добавить значения для, того чтобы вместе с отправленным файлом отправлялась ещё запись в таблицу с адрессом файла или проще с имянем файла. Вообще я планирую применять это к новостям, но для начала решил розобраться с созданием записи в таблице.
Потом я вроде смогу связать таблицы картинок с таблицей новосте, добавить поле catid и запрос вроде этого Items.id=url_foto.catid | |
|
|
|
|
|
|
|
для: qwelp
(23.10.2006 в 03:20)
| | Тогда вам следует сформировать INSERT-запрос и выполнить его при помощи кода
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Формируем и выполняем SQL-запрос
$query = "INSERT INTO url_foto VALUES(NULL, '$destFile')";
if(!mysql_query($query)) exit("Ошибка при выполнении запроса - ".mysql_error())
?>
|
Пример файла config.php можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=19122 | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 12:42)
| | Вот так я зделал но в базу всё равно не пишит посмотри пожайлуста где ошибка?
<?php require_once('../Connections/u26661.php'); ?>
<?php
if (isset($_POST["MAX_FILE_SIZE"])) {
$tmpFile = $_FILES["sendfile"]["tmp_name"];
$destFile = $_SERVER["DOCUMENT_ROOT"] . "/uploads/" .
$_FILES["sendfile"]["name"];
move_uploaded_file($tmpFile, $destFile);
}
header("Location: Files.php");
// Формируем и выполняем SQL-запрос
$query = "INSERT INTO url_foto VALUES(NULL, '$destFile')";
if(!mysql_query($query)) exit("Ошибка при выполнении запроса - ".mysql_error())
?>
|
| |
|
|
|
|
|
|
|
для: qwelp
(23.10.2006 в 13:57)
| | Переместите строку
<?php
header("Location: Files.php");
?>
|
в конец файла - это редирект и код вставки записи не успевает срабатывать, так как происходит переход на другую страницу. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 14:16)
| | Переместил, пробывал несколько вариантов, не получаеться. посмотри где у меня ошибка. Заранее спасибо
<?php require_once('../Connections/u26661.php'); ?>
<?php
if (isset($_POST["MAX_FILE_SIZE"])) {
$tmpFile = $_FILES["sendfile"]["tmp_name"];
$destFile = $_SERVER["DOCUMENT_ROOT"] . "/uploads/" .
$_FILES["sendfile"]["name"];
move_uploaded_file($tmpFile, $destFile);
// Формируем и выполняем SQL-запрос
$query = "INSERT INTO url_foto VALUES(NULL, '$destFile')";
if(!mysql_query($query)) exit("Ошибка при выполнении запроса - ".mysql_error())
?>
<?php
header("Location: Files.php");
?>
|
| |
|
|
|
|
|
|
|
для: qwelp
(24.10.2006 в 17:13)
| | А какое-нибудь сообщение об ошибке выводится? | |
|
|
|
|
|
|
|
для: cheops
(24.10.2006 в 19:18)
| | Сообщение об ошибке не выводится. Идёт переход на страницу скрипта и перенаправление не происходит обратною прото пустая страница. | |
|
|
|
|
|
|
|
для: qwelp
(24.10.2006 в 21:48)
| | Ошибки происходят только с этим скриптом? Другие скрипты, использующие MySQL, работают нормально? | |
|
|
|
|
|
|
|
для: cheops
(24.10.2006 в 21:55)
| | да всё работает отлично. masterhost | |
|
|
|
|
|
|
|
для: qwelp
(24.10.2006 в 22:37)
| | Возможно я ослеп и не вижу, а может как всегда туплю, но я не вижу, чтобы if закрывался..также не вижу ещё две штуки, но про них промолчу, т.к. сомневаюсь и не хочу нести бред. | |
|
|
|
|
|
|
|
для: qwelp
(24.10.2006 в 22:37)
| | У вас скорее всего отключен вывод ошибок в окно браузера - посмотрите их в логе в системе администрирования. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 00:25)
| | Может надо вставить закрывающую скобку ? или в запросе что то | |
|
|
|
|
|
|
|
для: qwelp
(25.10.2006 в 02:29)
| | Закрывающую скобку однозначно поставить следует, slonik, всё правильно говорит. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 02:57)
| | может есть похожий рабочий скрипт? | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 14:16)
| | Вот этот момент мне непонятен. Разве функция header прерывает выполнение php-скрипта? | |
|
|
|
|
|
|
|
для: Trianon
(25.10.2006 в 09:51)
| | Нет, но PHP является интерпретатором, который выполняет строки последовательно, встретив заголовок он его отправит, а дальше зависит от растороности клиента, переключиться он на другую страницу разорвав это соединение или нет и будет сервер продолжать работу скрипта, работа которого прервана или нет. В любом случае таких скользких моментов лучше избегать, чтобы можно было однозначно локализовать проблему. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 12:20)
| | >Нет, но PHP является интерпретатором, который выполняет строки последовательно,
>встретив заголовок он его отправит,
Разве?
А по-моему, лишь запомнит для отправки. А отправлен он будет не раньше, чем придет требование отправить первый байт тела отклика.
Иначе я не представляю себе, как смогли бы работать headers_sent(), да и второй параметр (replace) самой функции header() | |
|
|
|
|
|
|
|
для: Trianon
(25.10.2006 в 13:30)
| | Да вы правы, но лучше программировать без учёта этого факта. Если я вынужден использовать header() я стараюсь разместить в наиболее безопасном, по моему мнению месте, т.е. после всего кода, отсюда мой совет. Лучше, чтобы header() размещался после всего кода, так как его реализация может быть изменена, да и соблазн написать ещё что-то будет существенно меньше, так как в середине кода забыть про воткнутый header() проще, чем в конце.
Использование функции header() и тем более учёт в программе алгоритма их обработки - это нарушение инкапсуляции - PHP берёт на себя низкоуровневую работу с протоколом, а при помощи header() можно влиять на эту работу - в результате получается не очевидная среда, зависищая от прядка вызова функций. Что во всех методических работах называют одним из серьёзных промахов проектирования. Абстрактные уровни для того и разводят, чтобы они не влияли друг на друга и они могли бы быть заменены без ущерба друг для друга. Например, я вообще стараюсь не вызывать фукнции header(), так как это влечёт за собой целый ряд последствий: буферизация не на всех серверах включена, поэтому файл, использующий header() не может быть просто включён в другой файл, нужно помнить, что впереди него не должно быть вывода. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 15:21)
| | Кто б спорил :) | |
|
|
|