Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт загрузки файлов на сервер, с последующей записью пути к файлу в базу данных
 
 автор: Lelik   (15.12.2005 в 11:46)   письмо автору
 
 

Люди, помогите. Дело такое - есть рабочий скрипт загрузки файлов на сервак - простая форма и её обработчик. Но вставляя скрипт в сценарий побольше и с попыткой записать путь к файлу в базу данных заканчивается полным крахом:

<form action="<?php echo $action ?>" method="post" enctype="multipart/form-data">
 <table border="0" cellcpacing="1" cellpadding="3" align="center">
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Текст 1</font></strong>
   </td>
   <td><input type="text" name="anch" value="<?php echo $anch ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Рисунок 1</font></strong>
   </td>
   <td>    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
           <input type="file" name="anch_pict" value="<?php echo $anch_pict ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Текст 2</font></strong>
   </td>
   <td><input type="text" name="work_title" value="<?php echo $work_title ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF" valign="top">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Текст 3</font></strong>
   </td>
   <td><textarea cols="50" rows="4" name="work_text"><?php echo $work_text ?></textarea>
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Рисунок 2</font></strong>
   </td>
   <td>
   <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
   <input type="file" name="work_pict" value="<?php echo $work_pict ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">Рисунок 3</font></strong>
   </td>
   <td>
   <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
   <input type="file" name="work_pict_big" value="<?php echo $work_pict_big ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td><strong><font style="color:#FFFFFF; font-family:Tahoma; font-size:12px">URL</font> </strong>
   </td>
   <td><input type="text" name="work_url" value="<?php echo $work_url ?>">
   </td>
  </tr>
  <tr bgcolor="#8080FF">
   <td colspan="2" align="center"><input type="submit" value="<?php echo $button ?>">
                                  <input type="hidden" name="id_work" value="<?php echo $_GET['id_work'?>">
  </tr>
 </table>
</form>

это код формы, обработчик которой, должен заносить путь к файлу в базу данных.
а вот скрипт обработчика этой формы:

<?php
 
include "config.php";
 include 
"fns.php";

 if(empty(
$_POST['anch'])) links($_POST['id_work'], "Введите текст 1");
 if(empty(
$_POST['work_title'])) links($_POST['id_work'], "Введите текст 2");
 if(empty(
$_POST['work_text'])) links($_POST['id_work'], "Введите текст 3");
 if(empty(
$_POST['work_url'])) links($_POST['id_work'], "Введите урл URL");

 if(isset(
$_POST['anch_pict']) && $_POST['anch_pict'] != "-"){
 
$userfile_a $_FILES['anch_pict']['tmp_name'];
 
$userfile_name_a $_FILES['anch_pict']['name'];
 
$upfile_a 'files/'.$userfile_name_a;
 if (
is_uploaded_file($userfile_a))
  {
     if (!
move_uploaded_file($userfile_a$upfile_a))
     {
        echo 
'Error';
        exit;
     }
  }
 }
 else{
  
$upfile_a "";
 }

 if(isset(
$_POST['work_pict']) && $_POST['work_pict'] != "-"){
 
$userfile_b $_FILES['work_pict']['tmp_name'];
 
$userfile_name_b $_FILES['work_pict']['name'];
 
$upfile_b 'files/'.$userfile_name_b;
 if (
is_uploaded_file($userfile_b))
  {
     if (!
move_uploaded_file($userfile_b$upfile_b))
     {
        echo 
'Error';
        exit;
     }
  }
 }
 else{
  
$upfile_b "";
 }


 if(isset(
$_POST['work_pict_big']) && $_POST['work_pict_big'] != "-"){
 
$userfile_c $_FILES['work_pict_big']['tmp_name'];
 
$userfile_name_c $_FILES['work_pict_big']['name'];
 
$upfile_c 'files/'.$userfile_name_c;
    if (
is_uploaded_file($userfile_c))
  {
     if (!
move_uploaded_file($userfile_c$upfile_c))
     {
        echo 
'Error';
        exit;
     }
  }
 }
 else{
  
$upfile_c "";
 }

 
$_POST['anch'] = str_replace ("'""'"$_POST['anch']);
 
$_POST['work_title'] = str_replace ("'""'"$_POST['work_title']);
 
$_POST['work_text'] = str_replace ("'""'"$_POST['work_text']);
 
$_POST['work_url'] = str_replace ("'""'"$_POST['work_url']);




 
$query "INSERT INTO db_table VALUES (NULL,
                                         '
$anch',#Текст 1
                                         '
$upfile_a',#Рисунок 1
                                         '
$work_title',#Текст 2
                                         '
$work_text',#Текст 3
                                         '
$upfile_b',#Рисунок 2
                                         '
$upfile_c',#Рисунок3
                                         '
$work_url')";//URL

 
if(!mysql_query($query))
  
puterror("Ошибка");
 else
  {
   echo 
"<html><head><meta http-equiv='Refresh' content='0; url=admin.php'></head></html>";
  }
?>

Помогите разобраться.

   
 
 автор: cheops   (15.12.2005 в 13:20)   письмо автору
 
   для: Lelik   (15.12.2005 в 11:46)
 

Полный крах в чём выражается? Сопровождается ли он какими-нибудь надписями и эффектами?

   
 
 автор: Loki   (15.12.2005 в 13:45)   письмо автору
 
   для: cheops   (15.12.2005 в 13:20)
 

Как обычно - искры из монитора и свет гаснет во всем квартале (в кино видел:)

   
 
 автор: Lelik   (17.12.2005 в 02:49)   письмо автору
 
   для: cheops   (15.12.2005 в 13:20)
 

срабатывает часть кода

...
if(!mysql_query($query)) 
  puterror("Ошибка");
...

>Полный крах в чём выражается? Сопровождается ли он какими-нибудь надписями и эффектами?
Это проявляется в том, что я уже достаточно долго пытаюся, что-бы данный ,или подобный к этому скрипту, скрипт РАБОТАЛ, а то по-поводу загрузок файлов на сервак, я уже начинаю разочаровываться в своих силах :(

   
 
 автор: Loki   (17.12.2005 в 12:34)   письмо автору
 
   для: Lelik   (17.12.2005 в 02:49)
 

А вы выведите запрос на экран: как я понимаю, комментарии в нем у вас не экранируются, так как находятся внутри кавычек.

   
 
 автор: Lelik   (17.12.2005 в 13:20)   письмо автору
 
   для: Loki   (17.12.2005 в 12:34)
 

Если вы про это?:

$query = "INSERT INTO db_table VALUES (NULL, 
                                         '$anch',#Текст 1 
                                         '$upfile_a',#Рисунок 1 
                                         '$work_title',#Текст 2 
                                         '$work_text',#Текст 3 
                                         '$upfile_b',#Рисунок 2 
                                         '$upfile_c',#Рисунок3 
                                         '$work_url')";//URL

то, комментарии я написал только в этом сообщении на форуме

А может скрипт не исполняется, потому что я на локалхосте его тестирую, хотя аналогичные скрипты софттайма на локалхосте работают...

   
 
 автор: cheops   (17.12.2005 в 13:23)   письмо автору
 
   для: Lelik   (17.12.2005 в 13:20)
 

Скрипт какие надиписи выводит? В чём выражается его "не работа"?

   
 
 автор: Lelik   (17.12.2005 в 13:30)   письмо автору
 
   для: cheops   (17.12.2005 в 13:23)
 

ну не хочет он выполнять то, что ДОЛЖЕН.
без загрузки рисунков, а с прописыванием полного пути к ним на сайте(вместо полей загрузки файлов обычные текстовые поля в форме) - работает.
>Скрипт какие надиписи выводит?

... 
if(!mysql_query($query)) 
  puterror("Ошибка"); 
...

и на экране написано "Ошибка"

   
 
 автор: hatsker   (17.12.2005 в 18:36)   письмо автору
 
   для: Lelik   (17.12.2005 в 13:30)
 

Дак тебя же люди надписи просят написать (то что MySQL тебе пишет)...Там вся соль.....Там и ключ.

   
 
 автор: cheops   (17.12.2005 в 22:01)   письмо автору
 
   для: Lelik   (17.12.2005 в 13:30)
 

Исправьте строку
<?php
  puterror
("Ошибка");
?>

на
<?php
  puterror
("Ошибка ".mysql_error());
?>

Что дополнительно выводится?

   
 
 автор: Lelik   (18.12.2005 в 01:24)   письмо автору
 
   для: cheops   (17.12.2005 в 22:01)
 

Table 'lelikdb.db_table' doesn't exist

   
 
 автор: hatsker   (18.12.2005 в 10:23)   письмо автору
 
   для: Lelik   (18.12.2005 в 01:24)
 

дак она пишет что у тебя таблицы в базе данных нет такой


$query = "INSERT INTO db_table VALUES (NULL, 
                                         '$anch',#Текст 1 

db_table не сеществует.

   
 
 автор: Lelik   (18.12.2005 в 11:44)   письмо автору
 
   для: hatsker   (18.12.2005 в 10:23)
 

Путь к БД прописал правильно, теперь он рисунки не загружает

   
 
 автор: cheops   (18.12.2005 в 13:37)   письмо автору
 
   для: Lelik   (18.12.2005 в 11:44)
 

А что пишет?

   
 
 автор: Lelik   (18.12.2005 в 16:33)   письмо автору
 
   для: cheops   (18.12.2005 в 13:37)
 

скрипт исполняется так: в БД записуются все тексты которые я ввожу и рисунки как пустые
а почему они не загружаются это меня и интересует

   
 
 автор: denvor   (19.12.2005 в 12:11)   письмо автору
 
   для: Lelik   (18.12.2005 в 16:33)
 

Проверь права на папку

   
 
 автор: hatsker   (20.12.2005 в 10:49)   письмо автору
 
   для: Lelik   (18.12.2005 в 16:33)
 

Название картинок попадают в базу данных. Или нет...Я сегодня такой скрипт делал. Заметил странную особенность. В первый раз когда из папки загружаеш картинку, скрипт файл не перекидывает, но название файла есть...Если у тебя такая проблема, то я сделал то после каждой записи файла, открывалась картинка из места куда она была записанна...

   
 
 автор: Lelik   (20.12.2005 в 13:42)   письмо автору
 
   для: hatsker   (20.12.2005 в 10:49)
 

Нет, путь к файлу в БД не записывается.
А насчет прав доступа к папке, то этот скрипт делаю на локалхосте

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования