Je travaille sur un projet en ce moment, qui permet à l'utilisateur de créer un nombre illimité de titres, articles et images, la seule règle avec ce système est qu'un article doit contenir un article et une image. Ma question est sur mon formulaire quand je soumets je reçois 2 tableaux l'un est le $_POST
et l'autre est $_FILES
.Fusion de tableaux PHP
$ _POST
Array ( [campaign_title] => Another multiple test [campaign_keyword] => Another multiple test [introduction] => Another multiple test [campaign_headline] => Array ( [0] => Another multiple test headline 1 [1] => Another multiple test headline 2 ) [article] => Array ( [0] => Another multiple test article 1 [1] => Another multiple test article 2 ) [save_multiple] => Save )
$ _FILES
Array ( [article_image] => Array ( [name] => Array ( [0] => Intro-artists.gif [1] => textbg1.png ) [type] => Array ( [0] => image/gif [1] => image/png ) [tmp_name] => Array ( [0] => /private/var/tmp/phpwDAkGJ [1] => /private/var/tmp/phpmvrMDg ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 2841 [1] => 56506 ) ) )
Fondamentalement, le procédé après avoir soumis la forme est que les données sont enregistrées dans une base de données, les 3 éléments du poste sont enregistrées dans une table, les titres et les articles sont sauvegardés dans une autre table (envoyé avec l'identifiant de la ligne juste insérée) et enfin les images sont sauvegardées, à nouveau envoyées avec l'identifiant de la première sauvegarde d rangée. J'ai de la difficulté à comprendre comment je m'assure que les bonnes images sont sauvegardées avec le bon ID, les sauvegardes de DB sont faites en faisant défiler les titres et les articles, mais comme les images sont dans un tableau différent, je ne peux pas le faire et Assurez-vous qu'ils sont enregistrés avec le droit étranger, puis-je fusionner les fichiers dans le post? À l'heure actuelle la solution que j'ai pour les titres et articles est-ce,
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;
}
Est-il loin pour moi de travailler avec des images en même temps?
EDIT:
Le formulaire 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>
S'il vous plaît, envoyez un fragment de code HTML. généralement, la clé est la dénomination des champs de formulaire. –
S'il vous plaît voir mon édition –