填充旧变量的表单值

时间:2011-12-01 18:53:40

标签: php forms caching

我正在尝试创建一个用户可以编辑信息的页面。

我可以使用数组中的值填充表单并更新它们,但是,当它保存并使用不同的数组信息再次访问时,它会显示以前的表单数据。我已经看过清除缓存并在提交页面后将数组设置为NULL,但这些都没有用!

这就是我所拥有的:

$id = ($_GET['id']);
function get_edit_event_details() {
global $connection;
    $query = 'SELECT * 
        FROM events
        WHERE id = "$id"';
$event_details = mysql_query($query, $connection);
confirm_query($event_details);
return $event_details;
echo $query;
}   
$event_details = get_event_details();
$details = mysql_fetch_array($event_details);

并填充表单值(我也尝试过autocomplete =“off”,但也没有用)

<input type="text" name="event_date" id="event_date" size="27" value="<?php echo $details["date"];?>" autocomplete="off" />

我对PHP比较陌生,能够解决我遇到的每一个问题!

1 个答案:

答案 0 :(得分:0)

我知道也许这不是一个真正的答案,但我想指出一些事情:

  1. 您的ID应该转换为INT,因为现在您很容易被注射。
    所以,它应该是$id = intval($_GET['id']);
  2. 您的ID如何传递给该功能?它在外面,不作为参数传递,也不是全局的。我相信这可能是问题所在,因为您的查询将始终没有和ID用作条件。试试:

    get_edit_event_details($ ID){}

  3. 个人品味可能,但使用2个函数和外部调用返回值,只是为了获取结果它有点臭。我把整个事情重写为:

    function get_edit_event_details($_GET['id']) 
    {
      global $connection;
      $id = intval($_GET['id']);
      $query = "SELECT * FROM events WHERE id = '$id'";
      $result = mysql_query($query, $connection) or trigger_error('Query error: '.mysql_error());
      if(mysql_num_rows($result) > 0)
      {
       return mysql_fetch_array($result);
      }
      else
      {
        return FALSE;
      }
    }
    
    if($details = get_edit_event_details($_GET['id']) :?>
    <input type="text" name="event_date" id="event_date" size="27" value="<?php echo $details["date"];?>" autocomplete="off" /> 
    <?php endif;?>
    
  4. 请记住,这仍然不是完美的代码,我知道,有点我的味道:)。您可能想要检查是否在函数内部或外部设置了$ _GET ['id']。