【问题标题】:Update Database tables with values input by user in CodeIgniter using PHP使用 PHP 在 CodeIgniter 中使用用户输入的值更新数据库表
【发布时间】:2017-02-27 06:50:38
【问题描述】:

我正在尝试使用取自用户的值更新数据库中的一个用户表。但由于某种原因,它没有更新任何内容。

HTML 表单

<form class="form-horizontal" method = "post">
<fieldset>

    <!-- Form Name -->
    <legend>User Details</legend>

    <div>
        <?php echo $this->session->flashdata('msg'); ?>
    </div>

    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="name">Full Name</label>
        <div class="col-md-8">
            <input id="name" name="name" type="text" placeholder="something" class="form-control input-md">

        </div>
    </div>

    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="dob">Date of Birth</label>
        <div class="col-md-4">
            <input id="dob" name="dob" type="text" placeholder="" class="form-control input-md">

        </div>
    </div>

    <!-- Multiple Radios -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="gender">Gender</label>
        <div class="col-md-2">
            <select id="gender" name="gender" class="form-control">
                <option value="1">Male</option>
                <option value="2">Female</option>
            </select>
        </div>
    </div>

    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="degree">Degree</label>
        <div class="col-md-8">
            <input id="degree" name="degree" type="text" placeholder="degree" class="form-control input-md">

        </div>
    </div>

    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="specialization">Specialization</label>
        <div class="col-md-8">
            <input id="specialization" name="specialization" type="text" placeholder="specialization" class="form-control input-md">

        </div>
    </div>

    <!-- Select Basic -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="year">Degree Year</label>
        <div class="col-md-2">
            <select id="year" name="year" class="form-control">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
            </select>
        </div>
    </div>

    <!-- Select Basic -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="semester">Semester</label>
        <div class="col-md-2">
            <select id="semester" name="semester" class="form-control">
                <option value="1">1</option>
                <option value="2">2</option>
            </select>
        </div>
    </div>

    <!-- File Button -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="filebutton">Upload Profile Picture</label>
        <div class="col-md-4">
            <input id="filebutton" name="filebutton" class="input-file" type="file">
        </div>
    </div>

    <!-- Button -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="submit"></label>
        <div class="col-md-4">
            <a href="<?php echo base_url("/index.php/studentDashboardController/saveUserDetails"); ?>" >
                <button id="submit" name="submit" class="btn btn-primary">Save Changes</button>
            </a>
        </div>
    </div>

</fieldset>

studentDashboardController

public function  saveUserDetails()
{
     $this->load->model('userModel');
     if (isset($this->session->userdata['logged_in']))
     {
          $username = ($this->session->userdata['logged_in']['username']);
     }
     $user = $this-> userModel-> getUserUid($username); //Gets the uid of the current user
     $this->userModel->saveUserDetails($user);
     $this->session->set_flashdata('msg', '<div class="alert alert-success text-center">Successfully Inserted Data</div>');
     $this->load->view('studentDashboard/common',$data);
     redirect(base_url('index.php/studentDashboard/editProfile',$data1));
}

用户模型

public function saveUserDetails($uid)
{
    $data = array(
         'name' => $this->input->post('name')
    );
    $this->db->where("uid",$uid);
    $this->db->update("sysuser",$data);
}

sysuser 有 uid 和 name 字段。我不确定我在这里做错了什么。在这方面的任何帮助将不胜感激

【问题讨论】:

  • @questiontable 如果您有任何错误,请发布?

标签: php mysql codeigniter model controller


【解决方案1】:

您不会将发布数据发送给控制器。把$this-&gt;userModel-&gt;saveUserDetails($user);改成

 $this->userModel->saveUserDetails($user,$this->input->post('name'));

现在模型应该是这样的

public function saveUserDetails($uid,$name)
{
    $data = array(
         'name' => $name
    );
    $this->db->where("uid",$uid);
    $this->db->update("sysuser",$data);
}

并确保您已正确设置表单操作,例如

 <form class="form-horizontal" method="post" action="<?php echo site_url('studentDashboardController/saveUserDetails');?>">

【讨论】:

  • 我想知道,如果我必须将从用户那里收集的多个值插入两个不同的表中,我该怎么做?
  • 无法理解。
  • 在我上面提出的问题中,我只是将name 更新到我拥有的sysuser 数据库表中。现在我需要在更新名称本身时将一些其他详细信息(例如上面表单中请求的详细信息)插入到studentprofile 表中。如何将所有用户输入发送到模型的方法以更新sysuser 表并将其他用户输入插入studentprofile 表?
  • $this-&gt;userModel-&gt;saveUserDetails($user,$this-&gt;input-&gt;post());一样发送数据并像public function saveUserDetails($uid,$post){$name = $post['name'];$another = $post['another']}一样抓取
猜你喜欢
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多