За последние 24 часа нас посетили 67825 программистов и 1649 роботов. Сейчас ищут 933 программиста ...

Загрузка файлов через форму в базу данных

Тема в разделе "PHP для новичков", создана пользователем Lexxbry, 22 дек 2018.

  1. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    Нормального программиста найми
    --- Добавлено ---
    Писать за тебя тут никто не будет, даже 3 строчки, просто не обязаны. Сама тема канет в дно.
     
  2. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    при чем тут программист?
    самому хочется разобраться
    ну или кто может помочь(не бесплатно)
    по сути всегда тут задавал вопросы и получил пинок в правильном направлении
    а дальше уже развивал сам

    а тут ряду дать не могу
    как закинуть не в папку, а именно в БД

    кучу вариантов пробовал из инета и все не то
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    Тебе дают код, строки, говорят куда надо и что заменить. Ты же в свою очередь не понимая что за что отвечает, косишь все наоборот, совсем не те строки и не в ту степь.

    Самому интересно к чему приведет все это. Либо говнокод покроют новым говном.
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Зачем в бд загружать изображение?
     
  6. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Об этом всем выше. Так надо. И это не только изображения
     
  7. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @yanuzay, там скорее всего клиентом бд может выступать отнюдь не сайт и даже не код PHP. Подключилась удалённо какая-нить консольная прога и стащила нуные файлы.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    В бд хранится идентификаторы как ссылающийся на ячейку и на имя файла.
    по нахождению идентификатора, результат ( имя файла ) передается в пхп скрипт.
    далее:
    PHP:
    1. #$sql_result_name = sql....
    2. echo file_get_contents ( "folder/folder2/$sql_result_name" );
    Никакие блобы и прочий чебурятник не нужен.

    Привет из прошлого 2011.
    https://php.ru/forum/threads/keshirovanie-chto-bystree-chtenie-iz-bazy-ili-fajla.36970/#post-303959
     
  9. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @MouseZver, прочти пост чуть выше своего.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    ТС бы не пришел на форум php если не нужна была бы реализация на пхп
     
  11. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @MouseZver, так сайт через который происходит добавление в БД на РНР, а дальше "кто первый встал, того и тапки".
    Другое дело, что человек не может написать не только код, но и внятно объяснить причины.
     
  12. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Причины внятно объяснены.
    Задача хранить файлы в БД(не линки неймы, а именно файлы)
    Чем они их будут забирать я в душе не имею.
    Объяснить причины так же не могу. Сказали надо хранить в БД в base 64 и все

    реализация на php нужна только для формы, что бы передать значения, что там дальше и как устроено мне не известно
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    ebat oni sovsem oxyeli
     
    Dron-Boy нравится это.
  14. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Будем считать, что я
    PHP:
    1. <?php
    2. // Включаем отображение ошибок в браузере
    3. ini_set('display_errors', 'On');
    4. header('Content-Type: text/html; charset=utf-8');
    5.  
    6. // Модель
    7. // Параметры подключения к базе данных
    8. define('DB_HOST', 'localhost');
    9. define('DB_USER', 'mysql');
    10. define('DB_PASSWORD', 'mysql');
    11. define('DB_NAME', 'test');
    12. // Функция подключения к базе данных
    13. function connectDB() {
    14.   $conn = new mysqli( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
    15.   if( !$conn ) {
    16.     echo 'Невозможно подключиться к серверу базы данных <br />';
    17.     die(mysqli_error());
    18.   } else {
    19.     $query = $conn->query( 'set names utf8' );
    20.     if( !$query ) {
    21.       echo 'Невозможно установить кодировку подключения к базе данных';
    22.       die(mysqli_error());
    23.     } else {
    24.       return $conn;
    25.     }
    26.   }
    27. }
    28. // Функция инициализации таблицы
    29. function iniTable( $rdb ) {
    30.   if( !$rdb ) return false;
    31.   mysqli_query( $rdb, "
    32. CREATE TABLE IF NOT EXISTS `test`.`upload`
    33.    (
    34.    `u_id` INT NOT NULL AUTO_INCREMENT ,
    35.    `u_name` VARCHAR(255) NOT NULL ,
    36.    `u_data` BLOB NOT NULL ,
    37.    `u_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
    38.    PRIMARY KEY (`u_id`),
    39.    INDEX (`u_name`),
    40.    INDEX (`u_date`)
    41.    )
    42. ENGINE = InnoDB;" )
    43.     or die ( "Ошибка создания таблицы: ".mysqli_error() );
    44.   mysqli_query( $rdb, "TRUNCATE TABLE `test`.`upload`" )
    45.     or die ( "Ошибка очистки таблицы: ".mysqli_error() );
    46.  
    47.   header( "Location: ".$_SERVER['PHP_SELF'] );
    48. }
    49. // Функция загрузки файла в базу данных
    50. function insert_file_to_blob( $rdb ) {
    51.     $file = mysqli_real_escape_string( $rdb, file_get_contents( $_FILES['file']['tmp_name'] ) );
    52.     $name = mysqli_real_escape_string( $rdb, $_FILES['file']['name'] );
    53.     $query = "INSERT INTO `upload` (`u_name`, `u_data`) VALUES( '$name', '$file' )";
    54.     $res = mysqli_query( $rdb, $query ) or die( mysqli_error($link) );
    55.  
    56.     header( "Location: ".$_SERVER['PHP_SELF']."?status=1" );
    57. }
    58.  
    59.  
    60. // Контроллер
    61. // Устанавливаем соединение с базой данных
    62. $link = connectDB();
    63. $status = false;
    64. $title = 'Загрузка файла на сервер';
    65. $action = '';
    66. // Обработка переменной инициализации таблицы
    67. if( isset( $_GET['ini'] ) )        $action = 'iniTable';
    68. if( isset( $_GET['status'] ) ) $action = 'upload_ok';
    69. if( isset( $_POST['go'] ) ) {
    70. //    echo '<pre>'; print_r($_FILES); echo '</pre>';
    71.     if( $_FILES['file']['error'] == 0 ) {
    72.         insert_file_to_blob( $link );
    73.     } else {
    74.         $action = 'upload_false';
    75.     }
    76. }
    77.  
    78. switch( $action ) {
    79.   case 'iniTable':
    80.     iniTable( $link );
    81.     break;
    82.   case 'upload_ok':
    83.     $status = 'Файл успешно загружен в базу данных';
    84.     break;
    85.   case 'upload_false':
    86.     $status = 'Ошибка загрузки файла в базу данных';
    87.     break;
    88. }
    89. // html шаблон
    90. ?>
    91. <!DOCTYPE html>
    92. <html>
    93. <head>
    94. <meta charset='UTF-8' />
    95. <link rel="stylesheet" href="bootstrap.min.css">
    96. </head>
    97. <body>
    98.   <div class="container-fluid">
    99.   <div class="row">
    100.   <div class="col">
    101.   </div>
    102.   <div class="col-6">
    103.    <div><h2><small class="text-muted"><?php echo $title;?></small></h2></div>
    104. <?php if ($status) echo '<div><small class="text-muted">'. $status .'</small></div>'; ?>
    105.    <hr />
    106.    <form action="" method="POST"  enctype="multipart/form-data">
    107.      <input type="file" name="file">
    108.      <input type="submit" name="go" value="Загрузить">
    109.    </form>
    110.    <hr />
    111.     <div><h5><a href="?ini=1">Инициализация таблицы</a></h3></div>
    112.     <hr />
    113.   </div>
    114.   <div class="col">
    115.   </div>
    116.   </div>
    117.   </div>
    118. </body>
    119. </html>

    @Lexxbry, найди наконец причину, почему у тебя в бд было пусто, и напиши тут
     
    #39 Valick, 26 дек 2018
    Последнее редактирование: 26 дек 2018
    Lexxbry нравится это.
  15. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Огромнейшее спасибо
    p.s. напишите куда отблагодарить
    вечерком оформим
    --- Добавлено ---
    да я обязательно разберу сейчас по полочкам и отпишусь по готовому результату
    а так Ваш вариант работает, как надо
     
  16. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  17. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    @Valick, ты не психанул, а наговнокодил черным по белому.
     
    Dron-Boy и Sergey_Tsarev нравится это.
  19. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Это что?
    --- Добавлено ---
    не делай этого!