我創建了一個動態生成的表單,目的是允許用戶記錄項目里程碑。用戶可以輸入里程碑的日期和描述,然後給出一個選項以添加一行以記錄另一個(請參閱此圖像以進行說明:https://dl.dropboxusercontent.com/u/11993667/milestones_ex.png)。我,但無法將其保存到數據庫(我是一個關於PHP的事情)。使用foreach提交動態生成的表單
的形式用下面的函數產生:
function create_milestones_form() {
global $wpdb;
$inc = array(
'yes' => ($data['incorporated']==1)?'checked="checked"':'',
'no' => ($data['incorporated']!=1)?'checked="checked"':'',
);
$site = array(
'yes' => ($data['has']==1)?'checked="checked"':'',
'no' => ($data['incorporated']!=1)?'checked="checked"':'',
);
return <<<EOHTML
<form method='post'>
<script type="text/javascript" src="http://upsmart.com/wp-content/plugins/upsmart_sitemanager/js/create_business_milestone.js"></script>
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD><INPUT type="checkbox" name="chk[]"/></TD>
<TD>
<select name="month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="day">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="year">
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
</select>
</TD>
<TD> <INPUT type="text" name="txt"/> </TD>
</TR>
</TABLE>
<input type='submit' value='Save'/>
</form>
EOHTML;
}
一旦點擊保存,它是(或應該)使用下面的函數保存到數據庫:
function create_milestones_save() {
global $wpdb;
$result = $wpdb->query($wpdb->prepare("REPLACE INTO upsmart_milestones
(wordpress_id,month,day,year,description)
VALUES(%d,%d,%d,%d,%s)",
array(
get_current_user_id(),
$_POST['month'],
$_POST['day'],
$_POST['year'],
$_POST['txt'],
)
));
if($result === false) return false;
return true;
}
所以情況是這樣的:只有一個里程碑,我可以保存而不會出現任何問題,但是我無法保存它以節省多個里程碑;這是有道理的,因爲我沒有循環任何變量。我猜我需要將每個變量(month,day,year和txt)作爲數組發送到create_milestones_save(),然後使用foreach循環將每個條目存儲在數據庫中。我只是不確定我將如何在PHP中編寫代碼。
非常感謝你提供任何幫助。
所以我需要做任何事情$ _POST [「月」]使其成爲一個數組?或者會簡單地改變月份到月份[]來照顧那個嗎? – neanderslob
是的,每月更改[]會照顧到這一點。 –
非常感謝。如果我使用'txt'作爲關鍵字,我可以跳過複選框編號嗎?基本上我只是使用複選框刪除。我可以保存可見的窗體中的所有行。我如何改變循環來完成這個? – neanderslob