【问题标题】:Getting search result's id获取搜索结果的id
【发布时间】:2015-03-24 12:22:14
【问题描述】:

我正在建立一个网站,您可以在该网站上上传帖子,就像 facebook。
一切都很好,除了在您上传帖子的那一刻,上传后您可以将图片上传到该帖子。

我希望能够将图片上传到帖子然后上传带有图片的帖子。这是我的尝试:

数据库图像表

+-------------------------------------------------+
  | image_id | user_id | image_name |  post_id  | 
  |    1     |    1    |    bla     |     2     | 
+-------------------------------------------------+

视图

<script>
$(function () {
    $("#imageUpload").submit(function (e) { 
        e.preventDefault();
        var formData = new FormData($('#imageUpload')[0]);
            $.ajax({
                url: 'post/create',  //Trying to call the controller
                type: 'post',
                data: formData,
                cache: false,
                contentType: false,
                processData: false
            });
          return false;
        });
    });
</script>

<form action="<?php echo Config::get('URL');?>post/create" method="post" id="imageUpload" enctype="multipart/form-data">
    <input type="text" name="post_text" placeholder="Post something" />
    <input type="file" name="images[]" multiple required />
    <input type="submit" value='post' autocomplete="off" />
</form>

控制器

public function create()
{   
    PostModel::createPost(strip_tags($_POST['post_text']));
    PostModel::uploadPostImages($_POST['post_id']);
}

我省略了模型,因为那里的功能可以正常工作。

如何在发布帖子之前获取帖子 ID 以在图像表中使用它?

我会非常感谢任何形式的帮助!

更新

<script>
    $("#imageUpload").submit(function (e) { 
             var fd = new FormData();
             var imagefile= document.getElementById('imagefile');
             var files = imagefile.files;

            for (var i = 0; i < files.length; i++) 
            {
              var file = files[i];                
              fd.append('imagefile[]', file, file.name);
            }
            fd.append("post_text", document.getElementById('post_text').value);
            fd.append("post_id", document.getElementById('post_id').value);      

        $.ajax({
            url: 'post/create',
            type: 'POST',
            data: fd,
            cache: false,
            contentType: false,
            processData: false
        });
      return false;
    });
});
</script>
<form action="<?php echo Config::get('URL');?>post/create" method="post" id="imageUpload" enctype="multipart/form-data">
    <input type="text" name="post_text" id="post_text" placeholder="Post something" />
    <input type="file" name="images[]" id="imagefile" multiple required />
    <input type="hidden" name="post_id" id="post_id" value="post_id" />
    <input type="submit" value='post' autocomplete="off" />
 </form>

【问题讨论】:

  • 您可以在保存后从帖子中获取 ID,例如通过$mysqli-&gt;insert_id(取决于你使用什么)。这可能是您的 createPost 函数的返回值。所以关于你的模型的信息会很好......
  • 谢谢!这就是我目前正在做的事情。但我正在尝试找到一种在上传帖子之前将图片上传到帖子的方法。
  • 如果你的帖子是自动递增的,你可以试试stackoverflow.com/questions/6761403/…
  • 对您来说最简单的方法可能是插入两个查询,捕获 ID,然后更新您刚刚插入的查询。还有其他方法,但我会尝试从它开始。

标签: php jquery ajax file-upload pdo


【解决方案1】:

您不能通过 jquery ajax 直接上传图片。此外,您允许通过 ajax 上传多个文件。这是你的代码。它也可以让您上传多个带有输入文本值的图像。

    $("#imageUpload").submit(function (e) { 
             var fd = new FormData();
             var imagefile= document.getElementById('imagefile');
             var files = imagefile.files;

            for (var i = 0; i < files.length; i++) 
            {
              var file = files[i];                
              fd.append('imagefile[]', file, file.name);
            }
            fd.append("post_text", document.getElementById('post_text').value);
           fd.append("post_id", document.getElementById('post_id').value);      

        $.ajax({
            url: 'post/create',  //Trying to call the controller
            type: 'POST',
            data: fd,
            cache: false,
            contentType: false,
            processData: false
        });
      return false;
    });
});

您更新的 html

 <form action="<?php echo Config::get('URL');?>post/create" method="post" id="imageUpload" enctype="multipart/form-data">
<input type="text" name="post_text" id="post_text" placeholder="Post something" />
<input type="file" name="images[]" id="imagefile" multiple required />
<input type="hidden" name="post_id" id="post_id" value="<?=$_GET['post_id']?>" />
<input type="submit" value='post' autocomplete="off" />

【讨论】:

  • 非常感谢您的回答!现在我可以用一张表格上传图片和帖子了。但是image表中的post_id还是NULL。
  • 还是不行。但是还是非常感谢你!现在,我知道该研究哪个方向了!
  • 这一行只设置值到 post_id 就可以了
  • 我为我的问题添加了更新,在视图中展示了代码。我确定我在做一些愚蠢的错误。目前我在图像表中得到一个 0 的 post_id 而不是 NULL,之前。非常感谢您的所有努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2013-01-30
  • 2016-10-11
  • 2018-11-15
  • 1970-01-01
相关资源
最近更新 更多