Как записать id объявления в таблицу бд изображений после его подачи?

Здравствуйте коллеги, впал немного в ступор, может вы чем поможите.
Суть заключается в следующем. Есть форма подачи объявления, в ней Ajax загрузка фотографий, при загрузке фото они сразу заливаются на сервер и в таблицу бд ad_amage записывает id(ai), id пользователя(кто подал), имя загруженного изображения с расширением и дата загрузки, так же имеется поле ad_id (id объявления), при загрузке фото оно остается пустым, так как само объявление ещё не подано. Так вот сам вопрос, как в таблицу с изображениями записать id объявления, непосредственно после его подачи, когда сабмится основная форма.fa5c04ddb1f34f3699459e177d2105b9.jpg
Брал загрузчик от сюда: www.itlessons.info/php/ajax-file-upload
Все лишнее постарался убрать. Оставил пару импутов в основной форме.
upload.php непоместился, написал в первом комментарии

new_ad.php

<?
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $ad_type = $_POST['ad_type'];
    $id_user = $_SESSION['id'];

    $host = 'localhost';
    $db = 'demo';
    $dsn = "mysql:host=$host;dbname=$db;";
    $user = '***';
    $pass = '***';
    $opt = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
    $pdo = new PDO($dsn, $user, $pass, $opt);

    $sql = "INSERT INTO `objects` (id_user,ad_type) VALUES (:id_user,:ad_type)";
    $sth = $pdo->prepare($sql);
    $sth->bindValue(':id_user', $id_user);
    $sth->bindValue(':ad_type', $ad_type);
    $sth->execute();
}
?>

<!DOCTYPE html>
<body>
<div class="container">
    <!--ОСНОВНОЙ БЛОК-->
    <div class="row">
        <div class="col-md-12">
            <div class="row podbor">

                <!--ФОРМА НОВОГО ОБЪЯВЛЕНИЯ-->
                <form method="post" class="form-horizontal" role="form" name="form" action="">
                    <div class="row">
                        <div class="col-md-8">
                            <div class="row">
                                        <select class="form-control" name="ad_type">
                                            <option value="1">Продать</option>
                                            <option value="2">Сдать в аренду</option>
                                        </select>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-4">
                            <?
                            require_once __DIR__ . '/protected/bootstrap.php';
                            ?>
                            <div class="demo">

                                <h4>Загрузка изображений</h4>
                                <hr>
                                <div id="dropzone">
                                    <div class="title">Перетащите файлы</div>
                                    <div class="or">или</div>
                                    <div class="browser">
                                        <label>
                                            <span>Выберите файлы</span>
                                            <input multiple type="file" name="file"/>
                                        </label>
                                    </div>
                                </div>

<div id="output"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
 <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.js"></script>
<script src="http://cdn.jsdelivr.net/buzz/1.1.0/buzz.min.js"></script>
<script src="static/dmuploader.min.js"></script>
<script type="application/javascript">

    $(document).ready(function () {

        initialize();

           $('#dropzone').dmUploader({
         url: 'upload.php',
         dataType: 'json',
         maxFileSize: 1024 * 1014,
         allowedTypes: 'image/*',
         onBeforeUpload: function (id) {
         $("div#output")
//      .html('<img src="static/loader.gif">') закоментил так как переделал под множественную загрузку
         .show();
         },
         onUploadSuccess: function (id, response) {

                if (response.type == "message") {
                     $.jGrowl(response.data.txt, {theme: response.data.type});
                 }

                   if (response.type == "upload") {
                       $("div#output").append('<img src="' + response.data.url + '">');
                   }
                 },
                     onUploadError: function (id, message) {
                        $.jGrowl("Файл: " + id + " не загрузился: " + message, {theme: 'error'});
                     },
                     onFileTypeError: function (file) {
                        $.jGrowl("Загружать можно только png и jpeg!", {theme: 'error'});
                     },
                     onFileSizeError: function (file) {
                        $.jGrowl("Файл слишком большой!!", {theme: 'error'});
                     },
                      onFallbackMode: function (message) {
                            $.jGrowl("Ваш браузер не поддерживается 8(", {theme: 'error'});
                      }
                   });
             });

                                    function initialize() {
                                        //sounds
                                        buzz.defaults.formats = ['ogg', 'mp3'];
                                        buzz.defaults.preload = true;

                                        if (buzz.isSupported()) {
                                            var noticeSound = new buzz.sound("static/sounds/notice");
                                        }

                                        //messages
                                        $.jGrowl.defaults.position = 'top-right';
                                        $.jGrowl.defaults.closer = false;
                                        $.jGrowl.defaults.beforeOpen = function (e, m, o) {
                                            if (noticeSound)
                                                noticeSound.play();
                                        };
                                    }
                                </script>

                            </div>
                        </div>
                    </div>

                    <hr>

                    <div class="row">
                        <div style="text-align: center">
                            <button type="submit" class="btn btn-primary">Подать объявление</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <!--НИЖНЯЯ ЧАТСЬ-->
</div>
<?
include '../modules/footer.php';
?>
</body>
</html>
  • Вопрос задан
  • 1047 просмотров
Решения вопроса 1
rudimo
@rudimo Автор вопроса
Решено. Сделал совсем другим способом. Кому интересно отвечу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
KorroLion
@KorroLion
Итого я понял так:
1) Есть HTML форма, в которой есть ajax-загрузчик фоток
2) Есть серверный скрипт сохранения фотки
3) Есть серверный скрипт сохранения объявы (при сабмите формы №1)

При генерации формы генерим уникальный токен формы. Его вставляем в скрытое поле формы.

Если происходит загрузка фотки, то в скрипт №2 передаем токен формы. Его записываем в отдельное поле таблы фоток.

При запросе к скрипту №3 создаем объяву, получаем ее айдишник и проставляем его ко всем фоткам юзера с токеном формы. Сам токен теперь можно у них ударять.

P.S. Код не читал (многабукв).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы