我现在正在做一个项目,它允许用户创建任意数量的新闻标题、文章和图片,这个系统的唯一规则是标题必须有文章和图片。当我提交时,我的问题在我的表单上,我得到 2 个数组,一个是 the $_POST
,另一个是$_FILES
.
$_POST
大批 ( [campaign_title] => 另一个多重测试 [campaign_keyword] => 另一个多重测试 [介绍] => 另一个多重测试 [campaign_headline] => 数组 ( [0] => 另一个多重测试标题 1 [1] => 另一个多重测试标题 2 ) [文章] => 数组 ( [0] => 另一个多重测试文章 1 [1] => 另一篇多重测试文章 2 ) [save_multiple] => 保存 )
$_FILES
大批 ( [article_image] => 数组 ( [名称] => 数组 ( [0] => 介绍艺术家.gif [1] => textbg1.png ) [类型] => 数组 ( [0] => 图片/gif [1] => 图片/png ) [tmp_name] => 数组 ( [0] => /private/var/tmp/phpwDAkGJ [1] => /private/var/tmp/phpmvrMDg ) [错误] => 数组 ( [0] => 0 [1] => 0 ) [大小] => 数组 ( [0] => 2841 [1] => 56506 ) ) )
基本上提交表单后的方法是将数据保存到数据库中,将帖子的3项保存在一个表中,标题和文章保存在另一个表中(以刚刚插入的行的id发送)然后最后图像被保存,再次发送第一个保存行的 id。
我无法理解如何确保使用正确的 ID 保存正确的图像,数据库保存是通过循环浏览标题和文章来完成的,但由于图像位于不同的数组中,我无法做到这一点并确保它们是使用正确的外国 ID 保存,我可以将文件合并到帖子中吗?目前我对标题和文章的解决方案是这样的,
foreach ($data['campaign_headline'] as $key => $headline) {
addMailerMultipleRelatedContent($mailerId, $headline, $data['article'][$key]);
}
function addMailerMultipleRelatedContent($mailerId, $headline, $article) {
extract($data);
//die(print_r($id));
$id = addRelatedMultipleContent($data['introduction'], $headline, $article,
$mailerId, mktime(), mktime());
}
function addRelatedMultipleContent($introduction, $headline, $content,
$mailer_id, $created_at, $updated_at){
$query = "INSERT INTO `mailer_content` (`id`, `introduction`, `headline`,
`content`, `mailer_id`,`created_at`, `updated_at`) VALUES ";
$query .= "(NULL, '" . makeSafe($introduction) . "', '" .
makeSafe($headline) . "', '" . makeSafe($content) . "', '" .
makeSafe($mailer_id) . "', " . makeSafe($created_at) . ", " .
makeSafe($updated_at) . ");";
$result = runInsert($query, __FUNCTION__);
//die(print_r($result));
return $result;
}
我可以同时处理图像吗?
编辑:
HTML 表单,
<form method="post" action="/admin/editmultiple" enctype="multipart/form-data">
<fieldset class="toplined">
<label>Campaign Title</label>
<input type="text" name="campaign_title" value="<?echo (isset($mailers['mailer_title'])) ? $mailers['mailer_title'] : $_POST['campaign_title'];?>" class="extrawideinput" />
</fieldset>
<fieldset class="toplined">
<label>Campaign Type:</label>
<label>Multiple</label>
</fieldset>
<fieldset class="toplined">
<label>Campaign Keyword:</label>
<div class="forminputblock">
<input type="text" name="campaign_keyword" value="<?echo (isset($mailers['mailer_header'])) ? $mailers['mailer_header'] : $_POST['campaign_keyword'];?>" class="extrawideinput" />
</div>
</fieldset>
<fieldset class="toplined">
<label>Introduction</label>
<div class="forminputblock">
<input type="text" name="introduction" value="<?echo (isset($mailers['introduction'])) ? $mailers['introduction'] : $_POST['introduction'];?>" class="extrawideinput" />
</div>
</fieldset>
<fieldset class="toplined">
<label>Headline</label>
<div class="forminputblock">
<input type="text" name="campaign_headline[]" value="<?echo (isset($mailers['headline'])) ? $mailers['headline'] : $_POST['campaign_headline'];?>" class="extrawideinput" />
</div>
</fieldset>
<fieldset class="toplined">
<label>Image:</label>
<input type="file" name="article_image[]">
</fieldset>
<fieldset class="toplined">
<label>Story:</label>
<div class="forminputblock">
<textarea name="article[]" class="js_editable_textarea deeptext" rows="1" cols="1"><?echo (isset($mailers['content'])) ? $mailers['content'] : $_POST['article'];?></textarea>
</fieldset>
<div id="result">
</div>
<fieldset class="toplined">
<a href="" id="makeRequest">+ Add Another New Article</a>
</fieldset>
<fieldset class="toplined">
<input type="submit" name="save_multiple" value="Save" />
</fieldset>
</form>