2011-12-01 142 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