2013-04-24 62 views
0

問:我如何獲得一個PHP/HTML表單來填充mysql數據庫中以前提交的用戶數據?填寫用戶特定的mysql保存的數據的PHP/HTML表單的最佳方式?

好的,我一直在瀏覽互聯網幾個星期,現在試圖找到一個教程或一些線程可以幫助我。

我正在創建一個桌面RPG遊戲的Web窗體。這是一個簡單的表格,有大部分領域和下拉菜單的東西像「字符名稱」,「年齡」,「性別」等

  • 我有如此嚴重,它會保存到mysql數據庫。

  • 我也有這使他們的是一個外鍵數據鏈接到 用戶登錄

  • 現在,我有一個:$ _REQUEST [「字」(字是名字 表格),允許所有輸入的數據在提交後出現在相應的 框中,以防出錯或類似情況( 例外,下拉菜單停留在所選項目上,其中 我正在閱讀大約現在)。

但現在我希望它這樣,如果用戶已經創建了一個角色,當他們重新登錄,所有信息將被拉回,並填入表格中的相應字段。

要做到這一點,最好的方法是什麼?或者任何人都可以指向另一個回答的線索,視頻的正確方向,你有什麼可以更好地向我解釋這一點?

我不認爲任何代碼將需要大家來看看,但我可以張貼一些代碼,如果需要的話,也只是它的很多

+0

從數據庫中取回數組,並將其粘貼到$ _REQUEST ['Character']'...?這是最簡單的方法,如果你有表單記住目前發佈的值......只是假設該行是張貼表單。 (這假設你沒有對數據庫中的數據進行大量修改,如果你這樣做了,你將不得不按照表單的形式修改) – cHao 2013-04-24 16:31:06

+0

嗯,我沒有考慮試圖讓數組填寫。我所看到的關於數組的所有'教程'通常都是關於如何使用數組,然後將值打印出來,而不是填寫表格/表格。我會給你一個鏡頭。 這些字段的值就是每個字段的名稱,比如字符名稱是'CharacterName',我是否需要比值字段中的更多來填充所有內容? – 2013-04-24 16:35:58

+0

如果你把'$ _REQUEST ['Character'] ['CharacterName']'放到一個名爲'CharacterName'的字段中,那可能很簡單。如果字段名稱不同,則可以使用列別名使列名稱與表單字段名稱匹配。但我通常更喜歡使表單字段名稱與列名稱匹配,這使得獲取數據庫行並將其用作表單數據集幾乎是微不足道的。 – cHao 2013-04-24 16:38:25

回答

0

讓我們舉一個簡單的例子。假設我們有一個表Characters,字段爲id,nameage

爲此表提供編輯表單的一種更簡潔的方法是讓表單假定有一個包含這些字段的數組(我們稱之爲$char)。主代碼可以從任何地方得到這個數組,無論是從表單字段還是從數據庫。我不知道或關心你正在使用的數據庫,或者你如何進行驗證;重要的部分是表單處理,而且不管DB如何工作。 )

<form method="post"> 
<input type="hidden" name="Character[id]" value="<?= intval($char['id']) ?>"> 
<input name="Character[name]" value="<?= htmlentities($char['name']) ?>"> 
<input name="Character[age]" value="<?= htmlentities($char['age']) ?>"> 
<input type="submit"> 
</form> 

當表單提交,$_POST['Character']將是一個數組,包含了所有的表單提交關於字符的信息。

讓我們saveCharacter,將採取這些信息,並將其保存爲一行...
(僞線開始...;片段看...like this...

function saveCharacter($char) { 
    if (empty($char['id'])): 
     ... do insert 
     ... $char['id'] = last insert ID 
    else: 
     ... do update 
    endif; 

    // return the saved char; inserting would have added an ID 
    return $char; 
} 

...和一個loadCharacter來選擇該行,並返回其內容與您在表單中具有的相同名稱。 (保持表格和數據庫字段名稱一致這裏幫助了不少。如果這兩個使用相同的名稱,你可以直接返回行。)

function loadCharacter($id) { 
    ... $result = result from: SELECT id, name, age FROM Characters WHERE id = ? 
    ... return first (should be only) row of $result 
} 

(如果名稱是不同的,你需要。轉換可以通常有DBMS爲你做這個,谷歌爲「SQL列別名」獲取更多信息)

和代碼揭開這一切關...

if (isset($_POST['Character'])) { 
    $char = saveCharacter($_POST['Character']); 
} 
elseif (...the user already has a character id...) { 
    $char = loadCharacter(...character id...); 
} 
else { 
    // first time on the page, and there's no saved character 
    // give $char the right field names, to prevent notices 
    $char = array('id' => null, 'name' => null, 'age' => null); 
} 

當。你包括上面的表格,它會把$char的值放在適當的元素中秒。

相關問題