2011-12-01 112 views
2

我正在尝试创建一个用户可以编辑信息的页面。使用旧变量填充表格值

我可以使用数组中的值填充表单并更新它们,但是,当它被保存并再次使用不同的数组信息访问时,它会显示以前的表单数据。我已经看过在提交页面之后清除缓存并将数组设置为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); 

并填充表单值(我也曾尝试还没有任何工作自动完成=“关闭”)

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

我是比较新到PHP,并能解决我遇到的每一个问题,除此之外!

+0

如果我理解正确,可以尝试将属性autocomplete =“off”添加到表单元素。不知道这是否会适用于所有浏览器或不。 – Jemaclus

+0

谢谢Jemaclus,但我已经尝试过,但仍然没有运气。如果表单被提交,表单将更改值,否则它将保留一个旧的$ id变量。 – joemortell

+0

confirm_query does:function confirm_query($ result_set){ \t if(!$ result_set){ \t \t die(“Database query failed:”。mysql_error()); \t} – joemortell

回答

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;?> 
    

请记住,这仍然不是完美的代码,我知道,闻起来有点太矿:)。您可能想要检查$ _GET ['id']是否也在函数内部或外部设置。

+1

这很有效!谢谢达米安。我认为这是$ _GET不在功能范围内的事实。 – joemortell