Нужна помощь в отладке скрипта

Статус
В этой теме нельзя размещать новые ответы.

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
109
Реакции
4
Есть скрипт "Image multiuploads with title and description". использует Dropzone, для вставки фото, и две таблицы 1. item, 2. files. Проблемма такая-не обновляются item_id данных или часть данных в таблице files при загрузке фото. Сам скрипт Для просмотра ссылки Войди или Зарегистрируйся
 
Есть скрипт "Image multiuploads with title and description". использует Dropzone, для вставки фото, и две таблицы 1. item, 2. files. Проблемма такая-не обновляются item_id данных или часть данных в таблице files при загрузке фото. Сам скрипт Для просмотра ссылки Войди или Зарегистрируйся

Ну вот посмотрите сами код в upload.php:
PHP:
$pre = $db->prepare("INSERT INTO `files` (`file_name`, `uploaded`, `image_code`) VALUES (:image_name, :uploaded, :image_code )");
$pre->execute(array('image_name' => $fileName, 'uploaded' => $curent_time_now, 'image_code' => $image_code));
Ну и где при вставке вы видите item_id?
Если команда не прописана вставлять, бд и не вставляет, только «`file_name`, `uploaded`, `image_code`»
Мало того, я не вижу, чтобы в форме что-то передавалось на сервер для вставки в виде item_id
Блин. Ещё и в action в форме нет прописки upload.php и этот скрипт не работает совсем
 
Ну вот посмотрите сами код в upload.php:
PHP:
$pre = $db->prepare("INSERT INTO `files` (`file_name`, `uploaded`, `image_code`) VALUES (:image_name, :uploaded, :image_code )");
$pre->execute(array('image_name' => $fileName, 'uploaded' => $curent_time_now, 'image_code' => $image_code));
Ну и где при вставке вы видите item_id?
Если команда не прописана вставлять, бд и не вставляет, только «`file_name`, `uploaded`, `image_code`»
Мало того, я не вижу, чтобы в форме что-то передавалось на сервер для вставки в виде item_id
Блин. Ещё и в action в форме нет прописки upload.php и этот скрипт не работает совсем
Item_id есть в index.php, и upload.php тоже
 
Item_id есть в index.php, и upload.php тоже
PHP:
INSERT INTO `files` (`file_name`, `uploaded`, `image_code`) VALUES (:image_name, :uploaded, :image_code)
Где? Покажите.
Мало того, я не вижу, чтобы в форме что-то передавалось на сервер для вставки в виде item_id
Ещё и в action в форме нет прописки upload.php и этот скрипт не работает совсем
А это мимо ушей пропускаете, что ли?

Я Вам даже больше скажу, этот скрипт не будет работать совсем, пока его кардинально не исправите. У Вас в upload.php нет цикла по сохранению картинок (передается массив картинок, а сохранить пытаетесь одну). Поэтому картинки не будут загружаться.
 
Последнее редактирование модератором:
Update
Держи рабочий скрипт Для просмотра ссылки Войди или Зарегистрируйся
Специально нашел и подправил.


Дорогой Друг, Скрипт работает следующим образом: в index.php есть форма
PHP:
<form method="post" action="#"   >
<input name="title" type="text" id="title" class="required" size="45" />
<br><br>
  <textarea name="description" cols="40" rows="8" class="required" id="description"></textarea>
<br><br>
<input name="selected" type="hidden" id="selected" value="No" />
  <input name="eid" type="hidden" id="eid" value="<?php echo time(); ?>" />
   
               
            <div action="upload.php" class="dropzone" id="my-dropzone"></div>   
   
    <input class="btnAction" type="submit" name="finish" id="finish" value="Add" >
</form>
где красным показанно action="upload.php", это ссылается на файл upload.php, где есть вот такой код
PHP:
require_once('config.php');

ob_start();


if(!empty($_FILES)){
   
   
    $image_code = $_POST['eid'];
    $targetDir = "uploads/";
    $fileName = $_FILES['file']['name'];
    $targetFile = $targetDir.$fileName;
   
   
move_uploaded_file($_FILES['file']['tmp_name'],$targetFile);
       
       
$pre = $db->prepare("INSERT INTO `files` (`file_name`, `uploaded`, `image_code`) VALUES (:image_name, :uploaded,:image_code )");
$pre->execute(['image_name' => $fileName, 'uploaded' => $curent_time_now, 'image_code' => $image_code]);       

}



Кроме того в index.php есть также джава скрипт, который позволяет загрузить изображения только при нажатии на кнопку Add, и одновременно передает значение поля eid в файл upload.php.



PHP:
<script type="text/javascript">
Dropzone.options.myDropzone = {

  // Prevents Dropzone from uploading dropped files immediately
  autoProcessQueue: false,

  init: function() {
    var submitButton = document.querySelector("#finish")
        myDropzone = this; // closure

    submitButton.addEventListener("click", function() { 
      myDropzone.processQueue(); // Tell Dropzone to process all queued files.
    });

    // You might want to show the submit button only when
    // files are dropped here:
    this.on("addedfile", function() {
      // Show submit button here and/or inform user to click it.
    });
  this.on("sending", function(file, xhr, formData) {
formData.append("action", "value"); // Append all the additional input data of your form here!
  });
 
  this.on("sending", function(file,xhr,formData) {
            // Show the total progress bar when upload starts
            var eid = document.getElementById('eid').value;
            formData.append('eid',eid);
           

        });
 

  }
};
</script>

После того как изображения добавленны в таблицу files, срабатывает втарая часть цикла - в index.php есть такой запрос на ввод данных в таблицу item, после этого получаем LAST ID и обновляем в таблице files строку item_id, чьи image_code равны $_POST['eid']. До обновления в таблице files item_id равны нулю, и только после того как скрипт получает last id, обновляет это поле в таблице files.



PHP:
if ($_POST['title']) {
    $pre = $db->prepare("INSERT INTO `item` (`title`, `description`) VALUES (:title, :description)");
    $pre->execute(['title' => $_POST['title'], 'description' => $_POST['description']]);
   
  $mid = $db->lastInsertId(); //get id of entry that was just added
   
    //associate the images that were just uploaded to the entry that was added
    $pre = $db->prepare("UPDATE `files` SET `item_id` = :mid WHERE `image_code` = :eid");
   $pre->execute(['mid' => $mid, 'eid' => $_POST['eid']]);

    header('Location: index.php');
   
}

Скрипт работает, фото добавляются и в папку, и в базу, проблема в том, что при обновления item_id, временами обновляются все данные чьи image_code равны $_POST['eid'], либо обновляются часть данных, а временами даже не обновляются.
То что вы мне предложили это не то что я ищу. Мне нужно чтобы были две таблицы, в одном вставлялись бы title, description, а в другом, фото , привязанные к title и description.
 
Последнее редактирование модератором:
Скрипт работает, фото добавляются и в папку, и в базу, проблема в том, что при обновления item_id, временами обновляются все данные чьи image_code равны $_POST['eid'], либо обновляются часть данных, а временами даже не обновляются.
То что вы мне предложили это не то что я ищу. Мне нужно чтобы были две таблицы, в одном вставлялись бы title, description, а в другом, фото , привязанные к title и description.
Дорогой Друг, я и так уже слишком много помог.
Потому есть 3 варианта:
1) Берёте рабочий скрипт и дописываете что нужно. Но — рабочий, а не тот поток сознания, что у Вас.
2) Берёте деньги и нанимаете программиста, и он делает из полуготового готовое
3) Ждёте ещё кого-нибудь, кто поможет. Но уже не меня.
Дорогой Друг, Скрипт работает следующим образом: в index.php есть форма
...
<div action="upload.php" class="dropzone" id="my-dropzone"></div>
...
где красным показанно action="upload.php", это ссылается на файл upload.php, где есть вот такой код
Это не так работает, почитайте про форму — Для просмотра ссылки Войди или Зарегистрируйся
После того как изображения добавленны в таблицу files, срабатывает втарая часть цикла - в index.php есть такой запрос на ввод данных в таблицу item, после этого получаем LAST ID и обновляем в таблице files строку item_id, чьи image_code равны $_POST['eid']. До обновления в таблице files item_id равны нулю, и только после того как скрипт получает last id, обновляет это поле в таблице files.
Это тоже не так работает, дорогой Друг.
То что вы мне предложили это не то что я ищу. Мне нужно чтобы были две таблицы, в одном вставлялись бы title, description, а в другом, фото , привязанные к title и description.
А Вы хотите, чтобы Вам выложили всё и бесплатно? Или хотите найти готовое на 100% под Ваши нужды, не включая мозг? Ищите, если у Вас 10 жизней.

Вы не обижайтесь, но не понимаете некоторых простых вещей.
1. Данные на сервер могут отправляться 2 методами (в основном)
2. Эти два метода срабатывать могут либо от формы с содержащимися в ней инпутов, селекторов и кнопок, либо от скрипта.
<div action="upload.php" class="dropzone" id="my-dropzone"></div> — это у Вас не инпут, и отправлять данные на сервер он НЕ МОЖЕТ! Поэтому я и сказал ранее, что
Ещё и в action в форме нет прописки upload.php
Также в форме нет инпута, которым Вы передали бы item_id, потому на сервере мы данные о нем не получаем.
3. Сервер работает по принципу: получил данные, обработал, отдал и забыл о запросе. Он не может сначала получить файлы, потом данные от другого запроса — только от того же самого, т.е. всё надо передавать в одном запросе.

У меня всё.
 
Последнее редактирование:
Дорогой Друг, я и так уже слишком много помог.
Потому есть 3 варианта:
1) Берёте рабочий скрипт и дописываете что нужно. Но — рабочий, а не тот поток сознания, что у Вас.
2) Берёте деньги и нанимаете программиста, и он делает из полуготового готовое
3) Ждёте ещё кого-нибудь, кто поможет. Но уже не меня.

Это не так работает, почитайте про форму — Для просмотра ссылки Войди или Зарегистрируйся

Это тоже не так работает, дорогой Друг.

А Вы хотите, чтобы Вам выложили всё и бесплатно? Или хотите найти готовое на 100% под Ваши нужды, не включая мозг? Ищите, если у Вас 10 жизней.

Вы не обижайтесь, но не понимаете некоторых простых вещей.
1. Данные на сервер могут отправляться 2 методами (в основном)
2. Эти два метода срабатывать могут либо от формы с содержащимися в ней инпутов, селекторов и кнопок, либо от скрипта.
<div action="upload.php" class="dropzone" id="my-dropzone"></div> — это у Вас не инпут, и отправлять данные на сервер он НЕ МОЖЕТ! Поэтому я и сказал ранее, что

Также в форме нет инпута, которым Вы передали бы item_id, потому на сервере мы данные о нем не получаем.
3. Сервер работает по принципу: получил данные, обработал, отдал и забыл о запросе. Он не может сначала получить файлы, потом данные от другого запроса — только от того же самого, т.е. всё надо передавать в одном запросе.

У меня всё.
Я попытался переделать этот скрипт Для просмотра ссылки Войди или Зарегистрируйся, приспасобить на dropzone, но получил Ваше замечание. Этот скрипт 100% рабочий.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху