2017-05-29 24 views
1

嗨,我有一个问题,更新输入数据,一旦我按刷新加载页面,但以前的值保持和数据库如果更新不更新输入值。刷新页面都不会显示新数据,我必须注销并重新输入。时按下按钮,但在数据库是

使用本

function account_profile(array $data) { 
     if (!empty($data)) { 
      $trimmed_data = array_map('trim', $data); 

      $user_id = mysqli_real_escape_string($this->_con, $trimmed_data[ 'user_id' ]); 
      $first_name = mysqli_real_escape_string($this->_con, $trimmed_data[ 'first_name' ]); 
      $last_name = mysqli_real_escape_string($this->_con, $trimmed_data[ 'last_name' ]); 
      $address = mysqli_real_escape_string($this->_con, $trimmed_data[ 'address' ]); 
      $city = mysqli_real_escape_string($this->_con, $trimmed_data[ 'city' ]); 
      $telephone = mysqli_real_escape_string($this->_con, $trimmed_data[ 'telephone' ]); 

      $query = "UPDATE users SET first_name = '$first_name', last_name = '$last_name', address = '$address', city = '$city', telephone = '$telephone' WHERE user_id = '$user_id'"; 
      if (mysqli_query($this->_con, $query)) { 
       mysqli_close($this->_con); 
       return true; 
      } 
     } else { 
      throw new Exception(FIELDS_MISSING); 
     } 
    } 

,这得到的值

<input type="text" class="form-control" name="first_name" id="first_name" placeholder="Sólo letras" value="<?php 
if ($_POST) { 
    echo $_POST[ 'first_name' ]; 
} else { 
    echo $_SESSION[ 'first_name' ]; 
} 
?>" required> 
... 

感谢您的任何意见

+0

按下按钮你刷新页面或显示已被请求时,在行上执行新的SELECT查询?另外我建议不要使用mysqli_real_escape_string,使用预准备语句。 –

回答

0

尝试

if (isset($_POST)) { 

而不是

if ($_POST) { 
+0

不会出现数据添加isset,谢谢 – forerser

1

我也不太清楚,如果我正确地理解你的问题。 但对你的代码

​​

这是更好地使用if (isset($_POST['first_name'])),以确保作出POST请求时,FIRST_NAME不是空的。

您的代码的主要问题是,您可能忘记在每次单击该按钮时在会话中设置first_name值,这就是为什么如果刷新页面时没有看到最新值,因为$ _SESSION ['first_name ']根本没有更新!

所以从我的理解,请尝试以下代码

if (isset($_POST['first_name'])){ //First Name changed, so we update it 
    $_SESSION['first_name'] = $_POST['first_name']; 
} 
echo $_SESSION['first_name']; //Print data (first_name in this instance) 

你可能不需要别的了这一点,因为原来的值总是会在会议上,如果你之前反正

+0

谢谢,但不会出现数据 – forerser

+0

请检查我的编辑,我已经添加echo语句来打印数据现在 – ryo7689

+0

nope,既不显示 – forerser