gpt4 book ai didi

php - CodeIgniter - 在文本框中输入数据并在提交时检查数据库中的匹配记录

转载 作者:行者123 更新时间:2023-11-29 12:38:22 25 4
gpt4 key购买 nike

我有一个 CodeIgniter 应用程序,我需要在名为 meal_add.php 的 View 页面的表单中添加一些信息。 。表格如下:

 <div id="content" class="box">
<form action="<?php echo base_url(); ?>index.php/admin_logins/meal2" method="post">
<fieldset>
<legend id="add_employee_legend">
Add Meal Information
</legend>
<div>
<label id= "emp_id_add_label">Employee ID:</label>
<input type="text" name="emp_id" id = "employee_id_add" placeholder="Employee ID" required="1"/>
</div>
<br>
<div>
<label id= "is_guest_add_label">Guests?</label>
<input type="checkbox" name ="is_guest_checkbox" class ="guestcheck" value="1" onchange="valueChanged()"/>
</div>
<br>
<div id = "guestnum" hidden = "true">
<label id= "num_of_guest_add_label">No. of Guests:</label>
<input type="text" name="num_of_guest" id = "num_of_guest_add" placeholder='0'/>
</div>
<div>
<label id= "remarks_add_label">Remarks:</label>
<textarea rows="1" cols="20" style="margin-left: 35px"></textarea>
</div>
<input type="submit" name="submit" id = "meal_info_submit" value="Save Meal Information"/>
<button id = "cancel_button" onclick="location.href='<?php echo base_url(); ?>index.php/admin_logins/meal'">
Cancel
</button>
</fieldset>
</form>

我的添加 Controller 方法 -

function meal2()
{
if($_POST)
{
date_default_timezone_set('Asia/Dacca');
$mdata['emp_id'] = $this->input->post('emp_id');
$mdata['entry_date'] = date('Y-m-d');
$mdata['is_guest'] = $this->input->post('is_guest_checkbox');
$mdata['num_of_guest'] = $this->input->post('num_of_guest');

$mdata['remarks'] = $this->input->post('remarks');
$res = $this->meal_model->insert_meal($mdata);
if($res)
{
$this->session->set_flashdata('message','Meal information added successfully');
redirect("admin_logins/meal");
}
}
else
{
$this->load->view('admin_logins/meal_add');
}

}

还有我的模型方法 -

public function insert_meal($data)
{
return $this->db->insert('meal', $data);
}

我有一个名为 employee 的表,结构如下:

    column              data type
id int PK
emp_id varchar(15)
emp_name varchar(50)
emp_mobile_no varchar(15)

我有另一个名为 meal 的表,结构如下:

    column              data type
id int PK
emp_id varchar(15)
entry_date date
is_guest int
num_of_guest int
remarks text

我需要做的是:每当我在表单的“员工 ID”文本框中输入 ID meal_add.php页面,系统将确定我输入的 id 文本是否与值 employee.emp_id 匹配。如果找到匹配,则数据将成功保存在meal中表为meal.emp_id ,保存的值为对应的employee.id (employee表的主键列中的值)。如果未找到匹配项,将显示一条 php flash 消息,提示 ID 不存在于我的 meal_add.php 之上。查看页面。我知道需要 JOIN 查询,但文本匹配部分对我来说似乎非常困难,我不知道如何组织我的代码以及将它们放在哪里。请帮帮我。

我的数据库是MySQL。

编辑 - 1:

我已经在我的 Controller 方法中完成了此操作 -

    $temp = $this->input->post('emp_id');
$sql = "SELECT e.id FROM employee AS e WHERE e.emp_id = ?";
$mdata['emp_id'] = $this->db->query($sql, $temp)->emp_id;


if($mdata['emp_id'] == '')
{
$this->session->set_flashdata('message','Employee ID does\'nt exist');
redirect("admin_logins/meal");
}

无论我在$temp中提供什么值(value),我总是收到闪现消息并被重定向。

我也这么做过-

    echo "<pre>";
print_r($mdata);
die();

做完echo之后和print_r() ,我明白了 -

  A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI_DB_mysql_result::$emp_id

Filename: controllers/admin_logins.php

Line Number: 150

Array
(
[emp_id] =>
)

最佳答案

我认为你想要的是 $this->db->insert_id()

<罢工>

此处的文档: https://ellislab.com/codeigniter/user-guide/database/helpers.html

另请查看正确的 form validation for codeigniter .

更新

抱歉,我看问题时看错了。请看 generating query results .

$q = $this->db->query($sql, $temp);
if ($q->num_rows() > 0) {
// having a match means the emp_id is valid
$row = $q->row();

// you can now use $row->emp_id to insert to other table
$ID = $row->emp_id;
} else {
$this->session->set_flashdata('message','Employee ID does\'nt exist');
redirect("admin_logins/meal");
}

为什么是emp_id餐 table 上的 varchar?如果是外键,类型匹配和 int 将会有帮助。匹配(连接表)时速度要快得多。

关于php - CodeIgniter - 在文本框中输入数据并在提交时检查数据库中的匹配记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com