【发布时间】:2019-10-03 07:59:25
【问题描述】:
处理此表单时,会生成 2 个查询。
在查询1中:所有数据都成功,但图片除外。图片:听起来值“NULL”。
查询2:图片书写正确。但其他数据正在写入“NULL”。
我想要的是,不是查询 2,而是查询 2 中的图像数据应该来到查询 1,并且应该只形成 1 个查询。
这是我的控制器和模型
public function send_Basvur_message(){
$this->load->library("form_validation");
$this->load->model("Basvur_model");
$this->form_validation->set_rules("name", "Ad", "trim|required");
$this->form_validation->set_rules("email", "E-posta", "trim|required|valid_email");
$this->form_validation->set_rules("subject", "Konu", "trim|required");
$this->form_validation->set_rules("message", "Mesaj", "trim|required");
$this->form_validation->set_rules("url", "url");
$this->form_validation->set_rules("captcha", "Doğrulama Kodu", "trim|required");
$path = './panel/uploads/basvur_v/';
$initialize = $this->upload->initialize(array(
"upload_path" => $path,
"allowed_types" => "gif|jpg|jpeg|png|bmp",
"remove_spaces" => TRUE
));
$imagename = 'no-img.jpg';
$config['max_size'] = 51200;
$config['overwrite'] = false;
$config['encrypt_name'] = false;
$config['remove_space'] = false;
$imagename = 'no-img.jpg';
if($this->form_validation->run() === FALSE){
} else if(!$this->upload->do_upload('img_url')) {
$this->session->set_flashdata('info','Action Completed');
redirect(base_url("basvuru"));
} else {
$insert = $this->Basvur_model->add(
array(
"name" => $this->input->post("name"),
"email" => $this->input->post("email"),
"message" => $this->input->post("message"),
"subject" => $this->input->post("subject"),
"url" => $imagename,
"created_at" => date("Y-m-d H:i:s")
)
);
$data = $this->upload->data();
$imagename = $data['file_name'];
$this->Basvur_model->setURL($imagename);
$this->Basvur_model->create();
$this->session->set_flashdata('img_uploaded', $imagename);
if($this->session->userdata("captcha") == $this->input->post("captcha")){
$name = $this->input->post("name");
$email = $this->input->post("email");
$subject = $this->input->post("subject");
$message = $this->input->post("message");
$email_message = "{$name} isimli ziyaretçi. Başvuru Yaptı <br><b>Mesaj : </b> {$message} <br> <b>E-posta : </b> {$email}";
if(send_email("", "Yeni Aday başvurusu | $subject", $email_message)){
$this->session->set_flashdata('success','Action Completed');
redirect(base_url("basvuru"));
// TODO Alert..
} else {
$this->session->set_flashdata('success','Action Completed');
redirect(base_url("basvuru"));
// TODO Alert..
}
} else {
//başarısıs
$this->session->set_flashdata('error','Action Not Completed');
redirect(base_url("basvuru"));
}
}
}
型号
<?php
class Basvur_model extends CI_Model
{
public $tableName = "basvurs";
public function __construct()
{
parent::__construct();
}
private $_ID;
private $_url;
public function setID($ID) {
$this->_ID = $ID;
}
public function setURL($url) {
$this->_url = $url;
}
// get image
public function getPicture() {
$this->db->select(array('p.id', 'p.url'));
$this->db->from('basvurs p');
$this->db->where('p.id', $this->_ID);
$query = $this->db->get();
return $query->row_array();
}
// insert image
public function create() {
$data = array(
'url' => $this->_url,
);
$this->db->insert('basvurs', $data);
return $this->db->insert_id();
}
public function get($where = array())
{
return $this->db->where($where)->get($this->tableName)->row();
}
/** Tüm Kayıtları bana getirecek olan metot.. */
public function get_all($where = array(), $order = "id ASC")
{
return $this->db->where($where)->order_by($order)->get($this->tableName)->result();
}
public function add($data = array())
{
return $this->db->insert($this->tableName, $data);
}
public function update($where = array(), $data = array())
{
return $this->db->where($where)->update($this->tableName, $data);
}
public function delete($where = array())
{
return $this->db->where($where)->delete($this->tableName);
}
}
【问题讨论】:
-
您在代码中引用了表 1 和表 2,但我在任何地方都没有看到,也没有看到 create 函数中使用了多个 db 表。请将您的代码缩小到仅相关的内容,并做出更清晰的描述/问题陈述作为问题的编辑。
-
对不起,我混淆了这些术语,我的意思是查询,而不是表格。处理表单时发生 2 个查询。
标签: php database codeigniter