За последние 24 часа нас посетил 62271 программист и 1603 робота. Сейчас ищут 910 программистов ...

Добавление картинок в бд

Тема в разделе "PHP для новичков", создана пользователем Miracleon, 27 сен 2020.

  1. Miracleon

    Miracleon Новичок

    С нами с:
    9 мар 2020
    Сообщения:
    25
    Симпатии:
    0
    Картинки загружаются в dropzone как их записать в БД?
    HTML:
    1.  
    2.         <div class="submit-section">
    3.             <form action="submit-property.php"  class="dropzone" id="my-dropzone"></form>
    4.         </div>
    Делаю вот так

    PHP:
    1. <?php
    2. if (isset($_FILES)) {
    3.     $tempFile[] = $_FILES['file']['tmp_name'];
    4.     $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
    5.     $targetFile= $targetPath.$_FILES['file']['name'];
    6.     foreach($tempFile as $key => $tmp_name ){
    7.                            
    8.                             $file_name = $key.$_FILES['files']['name'][$key];
    9.                             $file_size =$_FILES['files']['size'][$key];
    10.                             $file_tmp =$_FILES['files']['tmp_name'][$key];
    11.                             $file_type=$_FILES['files']['type'][$key];
    12.                             if($file_size > 2097152){
    13.                             $errors[]='File size must be less than 2 MB';
    14.                             }
    15.                             $query="INSERT into images (id_room,name_image) VALUES('$id_room','$file_name'); ";
    16.                             $desired_dir="user_data";
    17.                             if(empty($errors)==true){
    18.                             if(is_dir($desired_dir)==false){
    19.                             mkdir("$desired_dir", 0700);  
    20.                             }
    21.                             if(is_dir("$desired_dir/".$file_name)==false){
    22.                             move_uploaded_file($file_tmp,"user_data/".$file_name);
    23.                             }else{                            
    24.                             $new_dir="user_data/".$file_name.time();
    25.                             rename($file_tmp,$new_dir) ;
    26.                             }
    27.                             mysqli_query($con,$query);
    28.                             }else{
    29.                             print_r($errors);
    30.                             }}
    31.  
    32.     }
    33.  
    34. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    И что не получается?
     
  3. Miracleon

    Miracleon Новичок

    С нами с:
    9 мар 2020
    Сообщения:
    25
    Симпатии:
    0
    Добавляет просто ноль. Как из dropzone получить массив?
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    да никак....в форме надо указывать поле type="file"
    и на js писать код для обработки дропзоны и отправки в php
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    @Miracleon Нам не видно что делает JS, какие данные отправляет. Ты можешь это увидеть в отладчике, надо проверить элементарно какие именно значения попадают в переменные $file_name и $id_room. Или какие вообще есть значения в $_POST
    --- Добавлено ---
    Короче, дебажь через xdebug или var_dump($var_name); die(); уж как сумеешь.
     
  6. Miracleon

    Miracleon Новичок

    С нами с:
    9 мар 2020
    Сообщения:
    25
    Симпатии:
    0
    Файлы добавляются в папку на сервере. Почему foreach их не видит?
    PHP:
    1. <?php
    2. $ds          = DIRECTORY_SEPARATOR;
    3. $storeFolder = 'user_data';
    4. if (!empty($_FILES)) {
    5.      $tempFile = $_FILES['file']['tmp_name'];      
    6.      $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
    7.      $targetFile =  $targetPath. $_FILES['file']['name'];
    8.  
    9.    foreach($tempFile as $key => $value) {
    10.          $tempFile = $_FILES['file']['tmp_name'][$key];
    11.         $targetFile =  $storeFolder. $_FILES['file']['name'][$key];
    12.         $query="INSERT into images (id_room,name_image) VALUES('$id_room','$targetFile') ";
    13.         $rez=mysqli_query($con,$query);
    14.         move_uploaded_file($tempFile,$targetFile);
    15.         var_dump($targetFile);
    16.     }
    17.     move_uploaded_file($tempFile,$targetFile);
    18. }
    19. ?>
    Код (Javascript):
    1. <script>
    2.  
    3. Dropzone.options.myDropzone = {
    4.     init: function() {
    5.         thisDropzone = this;
    6.  
    7.         $.get('submit-property.php', function(data) {
    8.  
    9.             $.each(data, function(key,value){
    10.              
    11.                 var mockFile = { name: value.name, size: value.size };
    12.              
    13.                 thisDropzone.options.addedfile.call(thisDropzone, mockFile);
    14.                 thisDropzone.options.thumbnail.call(thisDropzone, mockFile, "user_data/"+value.name);
    15.              
    16.             });
    17.          
    18.         });
    19.     }
    20. };
    21. </script>
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Потому что где-то ты используешь не тот индекс массива. Инфа 100%.
    Дебажь! Проверяй что в $_POST и $FILES и в твоих производных переменных. Это ведь нетрудно.
    --- Добавлено ---
    Если это полный файл php, то непонятно откуда должна браться $id_room. Она просто, пилят, неинициирована. Другие переменные зависят от входящих переменных запроса, их надо проверить.