Я создаю сайт, на котором вы можете добавлять сообщения, как и в 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']);
}
Я оставляю модель, так как функции там работают нормально.
Как я могу получить идентификатор сообщения, чтобы использовать его в таблице изображений перед публикацией сообщения?
Я был бы благодарен за любую помощь!
UPDATE
<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>
Вы можете получить идентификатор с поста после его сохранения, например, через '$ mysqli-> insert_id' (в зависимости от того, что вы используете). Это может быть возвращаемое значение вашей функции 'createPost'. Так что информация о вашей модели была бы хорошей ... – empiric
Спасибо! Это то, что я делаю в данный момент. Но я пытаюсь найти способ загрузить изображение в сообщение до того, как сообщение будет загружено. – Schwesi
, если ваше сообщение авто увеличивается, то вы можете попробовать http://stackoverflow.com/questions/6761403/how-to-get-the-next-auto-increment-id-in-mysql –