【发布时间】:2016-05-10 08:57:30
【问题描述】:
我有一个“select”类别选项,用户可以从中选择不同的选项,如果用户选择“other”,则会出现一个输入字段(以便用户可以添加另一个类别)并在该类别下发布文章。
我正在获取 select 的值并检查输入是否不为空,然后更新具有 select 值的相同变量。
现在的问题是我似乎无法在“选择选项和输入”字段之间切换,如果我只是从选择选项中选择值它工作正常但是当用户选择“其他”并给出一个输入字段的新类别变量保持选择的值。
当我们尝试通过输入字段添加时出现以下错误:
错误号:1452
无法添加或更新子行:外键约束失败(ci.user_articles, CONSTRAINTarticle_catagory_fkFOREIGN KEY (cat_id_fk) REFERENCEScatagory(cat_id) ON DELETE NO ACTION ON UPDATE CASCADE)
INSERT INTO user_articles (cat_id_fk,title,article) VALUES ('others', 'New title', 'My article is a marshmallow');
这是执行此操作的一段代码。这是我在 Model_article.php 文件中的 add_article() 函数:
public function add_article()
{
$id = $this->input->post('hiddenValue');
$title = $this->input->post('title');
$catagory_id = $this->input->post('catagory_select');
$cat = $this->input->post('cat');
if (!isset($cat))
{
$cat_input = $this->input->post('cat');
$add_catagory = "INSERT INTO catagory (`user_id_fk`,`cat_name`) VALUES ( '{$id}' ,'{$cat_input}' ) ";
$result_catagory = $this->db->query($add_catagory);
$retrive_catagory = "SELECT cat_id FROM catagory WHERE cat_name = '{$cat_input}' ";
$result = $this->db->query($retrive_catagory)->row();
$catagory_id = $result->cat_id;
}
$articletext = $this->input->post('articletext',true);
// echo $catagory_id;
// die();
$sql = " INSERT INTO user_articles (`cat_id_fk`, `title`, `article`) VALUES ( '$catagory_id', '{$title}', '{$articletext}'); ";
$result = $this->db->query($sql);
$row = $this->db->affected_rows();
if ($row) {
return true;
}
else
{
echo "Couldn't perform query";
die(mysqli_error($sql));
return false;
}
}
这是我的 view_addarticle.php 文件:
<div class="container">
<div class="row">
<div class="col-xs-6">
<?php
// Display Result Using Ajax
echo "<div id='result' style='display: none'>";
echo "<div class='alert alert-success' role='alert'>Well done! You successfully read this important alert message....</div>";
echo "</div>";
echo "</div>";
?>
</div>
<div class="col-xs-6">
<?php
echo validation_errors();
echo form_open('article/submit_article'); #'add_post/submit_post'
?>
<div class="form-group">
<input type="hidden" name="hiddenValue" id="hiddenValue" value="<?php echo $session_data['id']; ?>">
<label for="sel1">Title:</label>
<input type="text" name="title" class="form-control" placeholder="Title of Article">
<br>
<!-- <label for="sel1">Select Catagory:</label> -->
<script type="text/javascript">
function admSelectCheck(nameSelect)
{
console.log(nameSelect);
if(nameSelect){
admOptionValue = document.getElementById("admOption").value;
if(admOptionValue == nameSelect.value){
document.getElementById("admDivCheck").style.display = "block";
}
else{
document.getElementById("admDivCheck").style.display = "none";
}
}
else{
document.getElementById("admDivCheck").style.display = "none";
}}
</script>
<select name="catagory_select" class="selectpicker form-control" style=" width: 150px;" onchange='admSelectCheck(this);'>
<option>Select Catagory</option>
<?php
foreach ($query->result() as $key):
?>
<option value="<?php echo $key->cat_id; ?>"><?php echo $key->cat_name; ?></option>
<?php endforeach; ?>
<option id="admOption">others</option>
</select>
<br>
<div id="admDivCheck" style="display: none;">
<input type="text" placeholder="Enter Catagory Name" class="form-control" name="cat" id="color" style='width: 170px;'/>
</div>
<br>
<label for="sel1">Article:</label>
<textarea class="form-control" name="articletext" id="" cols="80" rows="10"></textarea>
<br>
<input class="btn btn-primary " value="Submit Article" id="submit" type="submit" style="float:right;" />
</div>
</form>
</div>
</div>
这是我在 Article.php 文件中的控制器函数 submit_article():
public function submit_article()
{
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('articletext', 'Article Text', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('layouts/header');
$this->load->view('view_addarticle');
$this->load->view('layouts/footer');
}
else
{
$title = $this->input->post('title');
$result = $this->model_article->add_article();
if(!$result)
{
echo "Coulnd't register, contact site admin help@xyz.com";
}
else
{
// echo json_encode($result);
redirect('account');
}
}
}
【问题讨论】:
标签: php mysql codeigniter