ファイルアップロードセクションのある基本的なフォームがあります。フォームを送信すると、DB には何も送信されません。x-debug でデバッグすると、$_POST 変数がすべて入力され、正しいことがわかります。
これは次の形式です。
<form id="classifiedsForm" enctype="multipart/form-data" action="{$self}" method="post" autocomplete="off">
<fieldset>
<label>Basic Details</label>
<section>
<label for="headline">Headline</label>
<div><input type="text" id="headline" name="headline" required title="A headline for your ad">
</div>
</section>
<section><label for="img">Add an image<br><span>Image should be 300x300px and jpg or png. Don't worry. We do the curvy corners thing.</span></label>
<div>
<input type="file" id="img" name="img">
</div>
</section>
<section>
<label for="description">Description</label>
<div><input type="text" id="description" name="description" required title="A description for your ad">
</div>
</section>
<section>
<label for="contact">Contact</label>
<div><input type="text" id="contact" name="contact" required title="A contact email address">
</div>
</section>
<section>
<label for="category">Category</label>
<div>
<select name="category" id="country">
<optgroup label="Category">
{foreach item=c from=$categories}
<option name="category" value="{$c.name}">{$c.name}</option>
{/foreach}
</optgroup>
</select>
</div>
</section>
<section>
<label for="buySell">Sign up to newsletter?</label>
<div>
<input type="radio" id="yes_radio" name="buySell" value="1"><label>Buy</label>
<input type="radio" id="no_radio" name="buySell" value="0"><label>Sell</label>
</div>
</section>
<section>
<div>
<button name="submit" class="submit" value="update" type="submit">Update</button>
</div>
</section>
</fieldset>
</form>
そして、これはコントローラーです:
include '../common.php';
session_start();
$userID = $_SESSION['email']['id'];
if(empty($_SESSION['email']))
{
header("Location: ../login.php");
die("Redirecting to login.php");
}
$title = 'Your Profile';
//CATEGORIES QUERY
try
{
$sql = "SELECT * FROM `categories` ORDER BY `name` ASC";
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error = 'Error fetching classifieds: ' . $e->getMessage();
include '../includes/error.html.php';
exit();
}
foreach ($result as $row)
{
$categories[] = array(
'id' => $row['id'],
'name' => $row['name']);
}
if ($_SERVER['REQUEST_METHOD'] == "POST"){
try
{
$sql = "INSERT INTO `classifieds` SET
`headline` = :headline,
`description` = :description,
`contact` = :contact,
`buySell` = :buySell,
`category` = :category,
`user_id` = $userID";
$s = $pdo->prepare($sql);
$s->bindValue(':headline', $_POST['headline']);
$s->bindValue(':description', $_POST['description']);
$s->bindValue(':contact', $_POST['contact']);
$s->bindValue(':buySell', $_POST['buySell']);
$s->bindValue(':category',$_POST['category']);
$s->bindValue(':userID', $userID);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Error adding advert.';
include '../includes/error.html.php';
exit();
}
}
$smarty->assign('title', $title);
$smarty->assign('categories', $categories);
$smarty->assign('userID', $userID);
$smarty->display('add-classifieds.tpl');
そしてmysqlテーブル:
CREATE TABLE `classifieds` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`headline` varchar(255) NOT NULL,
`img` varchar(255) DEFAULT NULL,
`description` varchar(255) NOT NULL,
`contact` varchar(255) NOT NULL,
`buySell` int(1) NOT NULL,
`category` varchar(255) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=latin1;
これに関するヘルプは大歓迎です。ありがとう。