За последние 24 часа нас посетили 52567 программистов и 1799 роботов. Сейчас ищут 895 программистов ...

Загрузка файлов и БД...

Тема в разделе "PHP для новичков", создана пользователем dobs, 14 апр 2008.

  1. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    У меня такая проблемка, сделал я каталог файлов и в админку добавил функцию загрузки файла по URL, проблема заключается в том что когда я задаю скрипту чет скачать то он качает но в БД добавляет не там где сохранил файл, а саму URL по которой качал… Как бы мне сделать замену чтоб добавляло адрес на закачанный файл???

    Форма
    PHP:
    1. <form name='form1' method='post' enctype=\"multipart/form-data\" action='add_query_url.php'>
    2.             <td height='40' class='txt12b'><font color='006699'>Название скрипта<br>
    3.             <label>
    4.             <input  type='text' name='name' id='name'>
    5.             </label>
    6.             <p></font><br>
    7.             Размер файла:<b>в БАЙТАХ</b><br>
    8.             <label>
    9.             <input type='text' name='file_size' id='file_size'>
    10.             </label></p>
    11.             <p><br>
    12.             </p>
    13.             </td>
    14.             <td align='right'>
    15.             <table border='0' cellpadding='0' cellspacing='4'>
    16.                             </table>
    17.             </td>
    18.         </tr>
    19. </table>
    20. <table width='100%%' border='0' cellpadding='0' cellspacing='0'>
    21.     <tr bgcolor='006699'>
    22.         <td height='1'><img src='img/e.gif' width='1' height='1'></td>
    23.     </tr>
    24. </table>
    25. <table width='100%%' border='0' cellpadding='0' cellspacing='6'>
    26.     <tr>
    27.         <td><font class='txt8b'><font color='006699'>Требования:</font></font><br>
    28.         <label><input type='text' name='treb' id='treb'>
    29.         </label><br>
    30.        
    31.         <input type="hidden" name="op" value="sendform">
    32. Введите URL файла который собираетесь скачать<br>
    33. <input type="text" name="file_url" size="100"><br>
    34.  
    35.        
    36.        
    37.        
    38.         <p><span lang='ru'>Версия файла<br>
    39.         <label> <input type='text' name='ver_file' id='ver_file'>
    40.         </label></span></p>
    41.         <p><span lang='en-us'>TITLE </span>текст страницы<br>
    42.         <label><input type='text' name='title' id='title'>
    43.         </label></p>
    44.         <p>Ключевые слова<br>
    45.         <label><input type='text' name='meta_k' id='meta_k'>
    46.         </label></p>
    47.         <p><span lang='ru'>Дескрипшен страницы<br>
    48. &nbsp;<label> <input type='text' name='meta_d' id='meta_d'>
    49.         </label></span></p>
    50.         <select name='cid'>
    51.         <!-- Получаем все категории-->
    52.         <p></span></p>
    53.         </td>
    54.     </tr>
    55.     <tr>
    56.         <td>
    57.         <p><label>Краткое описание<br>
    58.         <textarea name='lite_desc' id='lite_desc' cols='40' rows='20'></textarea>
    59.         </label></p>
    60.         <p><label>Полное описание<br>
    61.         <textarea name='descr' id='descr' cols='40' rows='20'></textarea>
    62.         </label></p>
    63.         </td>
    64.     </tr>
    65.     <tr>
    66.         <td>
    67.         <table border='0' cellpadding='0' cellspacing='2'>
    68.             <tr>
    69.                 <td align='left'>Разработчик: </td>
    70.                 <td><label>
    71.                 <input type='text' name='page' id='page'>
    72.                 </label></td>
    73.             </tr>
    74.             <tr>
    75.                 <td align='left'>Дата добавления: </td>
    76.                 <td><label>
    77.                 <input type='text' name='date' id='date'>
    78.                 </label></td>
    79.             </tr>
    80.         </table>
    81.         <p><label>
    82.         <input type='submit' name='submit' id='submit' value='Сохранить изменения'>
    83.         </label></p>
    84.         </form>
    85.  


    Обработчик
    PHP:
    1. <?
    2.  
    3. /* Функция загрузки файлов */
    4. function sendform($file_url, $file_url1)
    5. {
    6. global $module_name;
    7.  
    8.   $fn = $file_url;
    9.   $handle = fopen ($fn, 'rb');
    10.   $contents = "";
    11.   if(!$handle)
    12.     echo 'Не могу открыть исходный файл';
    13.   else
    14.   {
    15.     while(!feof($handle))
    16.     {
    17.       $data = fread($handle, 8192);
    18.       $contents .= $data;
    19.     }
    20.     fclose ($handle);
    21.     if ($file_url1=="") $file_url1 = "../files/";
    22.     $handle = fopen ($file_url1 . basename($fn), 'wb');
    23.     if(!$handle)
    24.       echo '<b>Не могу создать записать файл</b>';
    25.     else
    26.     {
    27.       fwrite($handle, $contents);
    28.       fclose($handle);
    29.       echo '<b>Передача завершена</b>';
    30.     }
    31.   }
    32. print "<br><p><a href=file_get_cat_add.php>Добавить ЕЩЕ</a></p>";
    33.  
    34. }
    35.  
    36. switch($op) {
    37.  
    38.     case "sendform":
    39.     sendform($file_url,$file_url1);
    40.     break;
    41.  
    42.     default:
    43.     MainForm();
    44.     break;
    45. }
    46.  
    47.  
    48.  
    49. /* Если существует в глобальном массиве $_POST['title'] опр. ячейка, то мы создаем простую переменную из неё. Если переменная пустая, то уничтожаем переменную.   */
    50. if (isset($_POST['name']))      
    51. {
    52. $name = $_POST['name'];
    53.  
    54. if ($name == '')
    55. {
    56. unset($name);
    57. }  
    58.  
    59. }
    60. /*
    61. if (isset($_POST['name']))        {$name = $_POST['name']; if ($name == '') {unset($name);}}*/
    62.  
    63.  
    64. if (isset($_POST['file_size']))        {$file_size = $_POST['file_size']; if ($file_size == '') {unset($file_size);}}
    65. if (isset($_POST['treb']))        {$treb = $_POST['treb']; if ($treb == '') {unset($treb);}}
    66. if (isset($_POST['file_url']))        {$file_url = $_POST['file_url']; if ($file_url == '') {unset($file_url);}}
    67. if (isset($_POST['ver_file']))        {$ver_file = $_POST['ver_file']; if ($ver_file == '') {unset($ver_file);}}
    68. if (isset($_POST['title']))        {$title = $_POST['title']; if ($title == '') {unset($title);}}
    69. if (isset($_POST['meta_k']))      {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
    70. if (isset($_POST['meta_d']))      {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
    71. if (isset($_POST['cid']))        {$cid = $_POST['cid']; if ($cid == '') {unset($cid);}}
    72. if (isset($_POST['lite_desc']))        {$lite_desc = $_POST['lite_desc']; if ($lite_desc == '') {unset($lite_desc);}}
    73. if (isset($_POST['descr']))        {$descr = $_POST['descr']; if ($descr == '') {unset($descr);}}
    74. if (isset($_POST['page']))        {$page = $_POST['page']; if ($page == '') {unset($page);}}
    75. if (isset($_POST['date']))        {$date = $_POST['date']; if ($date == '') {unset($date);}}
    76.  
    77.  
    78.  
    79. if (isset($name) && isset($file_size) && isset($treb) && isset($file_url) && isset($ver_file) && isset($title) && isset($meta_k) && isset($meta_d) && isset($cid) && isset($lite_desc)&& isset($descr) && isset($page)&& isset($date))
    80.  
    81. {
    82. /* Здесь пишем что можно заносить информацию в базу */
    83. $result = mysql_query ("INSERT INTO files (name,file_size,treb,file_url,ver_file,title,meta_k,meta_d,cid,lite_desc,descr,page,date) VALUES('$name', '$file_size','$treb', '$file_url', '$ver_file', '$title', '$meta_k', '$meta_d', '$cid', '$lite_desc', '$descr', '$page', '$date')");
    84.  
    85.  
    86. if ($result == 'true') {echo "<p>Данные успешно добавлены в БД</p>";}
    87. else {echo "<p>Не могу добавить... смотри логи сервера!</p>";}
    88.  
    89.  
    90. }        
    91. else
    92.  
    93. {
    94. echo "<p>Вы ввели не всю информацию, заполните все поля.</p>";
    95. }
    96. ?>
    97.  
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    dobs
    Нет, ну не первый день на форуме ведь.

    Вопрос автору: кто будет вникать в 306 строк плохо структурированного кода?
    Лично не я.

    Хотя один совет может дать мой шаман: почитайте документацию по файлу move_uploaded_file(), возможно многое прояснится.
     
  3. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    ОК, чет буду химичить...
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    dobs
    Держите в курсе, и больше не кидайте такие куски кода. Конечно, код нужен, но неужто Вы не можете выделить блок отвечающий за сохранение загруженного файла на диск и записи информации в базу данных?

    Пробуйте, уделите самому вопросу немного времени, и, уверен, Вы получите нужную подсказку
     
  5. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Подправил...
     
  6. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    да... 180 строк кода воистину лучше чем 306...
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    жесть

    А где используется переменная $_FILES?

    Еще раз, открываем мануал, ищем раздел "Загрузка файлов на сервер", ищем описание функции move_uploaded_file() и отписываемся здесь по результатам: что прояснилось, в чем затруднения.
     
  8. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Да у меня то качает файл просто в базу заносится не ссылка на файл который закачан ссылка на URL по которой качали...
    Мне надо сделать как то замену но как…???

    П.С. Читал мануал – вроде не то…
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    dobs
    Вопрос на засыпку: Вы загружаете файл посредством POST запроса на сервер?
     
  10. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    - знач пост...
     
  11. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    dobs
    значит читать мануал... где конкретно уже ткнул. Там написано лучше чем сформулировал бы я. Есть примеры. Делайте по образу и подобию. Вчитывайтесь! Там по вашей теме написано!

    еще раз
     
  12. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
  13. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    basename - помогло...
     
  14. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    dobs
    конкретнее, что за basename, где откопали информацию?
     
  15. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
  16. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    http://ua.php.net/manual/ru/features.file-upload.php

    Если там нет упоминания про basename - забаньте меня.

    да...
     
  17. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Знач плохо читал...