i have basic form file upload section. when submit form, nothing submitted db. when debug x-debug, can see $_post variables populated , correct.
this form:
<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 ad"> </div> </section> <section><label for="img">add image<br><span>image should 300x300px , jpg or png. don't worry. 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 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 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> and controller:
include '../common.php'; session_start(); $userid = $_session['email']['id']; if(empty($_session['email'])) { header("location: ../login.php"); die("redirecting login.php"); } $title = 'your profile'; //categories query try { $sql = "select * `categories` order `name` asc"; $result = $pdo->query($sql); } catch (pdoexception $e) { $error = 'error fetching classifieds: ' . $e->getmessage(); include '../includes/error.html.php'; exit(); } foreach ($result $row) { $categories[] = array( 'id' => $row['id'], 'name' => $row['name']); } if ($_server['request_method'] == "post"){ try { $sql = "insert `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'); and mysql table:
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; any massively appreciated. thanks.
$sql = "insert `classifieds` set `headline` = :headline, `description` = :description, `contact` = :contact, `buysell` = :buysell, `category` = :category, `user_id` = $userid"; the last line incorrect, should :userid. should error though (number of variables doesn't match number of parameters in prepared statement).
while in development mode, should echo exception message:
echo $e->getmessage();
that would've led solution.
Comments
Post a Comment