首先,我需要透露我是这里的主要菜鸟......但我认为我正在变得更好!(在很大程度上要感谢堆栈溢出社区的帮助:-D)
我为项目里程碑创建了一个动态生成的菜单。它使用一个表格,允许用户输入每个里程碑的日期和描述,并将它们保存到数据库中。每次用户想要输入一个新的里程碑时,他们点击一个按钮来动态生成一个新行。(见图片澄清:https ://dl.dropboxusercontent.com/u/11993667/milestones_ex.png注意:复选框仅用于删除行现在)
到目前为止,一切都很好。问题是一旦用户保存了他们的里程碑,我希望他们能够重新访问页面并修改他们的里程碑或添加更多。显然,这需要脚本查询数据库并相应地生成/填充行。
我拼凑了以下代码以从数据库生成表单,但由于某种原因它使页面崩溃。我检查了错误日志并注意到相关似乎出现了。我想知道是否有人可能会看到我所拥有的明显错误或能够推荐一种替代方法。万一它有帮助,我正在写这个作为wordpress的插件部署。
任何帮助深表感谢。
function upsmart_create_milestones_form() {
global $wpdb;
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM upsmart_milestones WHERE wordpress_id=%d",get_current_user_id()),ARRAY_A);
$months = array('January','February','March','April','May','June','July ','August','September','October','November','December');
echo <<<EOHTML
<form method='post'>
<h3>Project Milestones</h3>
<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">
EOHTML;
foreach($data as $milestone){
echo <<<EOHTML
<tr>
<td><input type="checkbox" name="chk[]"/></td>\
<td>
<select name="month[]">
EOHTML;
foreach ($months as $month) {
if($month == $milestone->month){
echo <<<EOHTML
<option value="{$month}" selected>$month</option>
EOHTML;
continue;
}
echo <<<EOHTML
<option value="{$month}">$month</option>
EOHTML;
}
echo <<<EOHTML
</select>
<select name="day[]">
EOHTML;
foreach (range(1, 31) as $day) {
if($month == $milestone->day){
echo <<<EOHTML
<option value="{$day}" selected>$day</option>
EOHTML;
}
echo <<<EOHTML
<option value="{$day}">{$day}</option>
EOHTML;
}
echo <<<EOHTML
</select>
<select name="year[]">
EOHTML;
foreach (range(2013, 1990, -1) as $year) {
if($month == $milestone->year){
echo <<<EOHTML
<option value="{$year}" selected>$year</option>
EOHTML;
}
echo <<<EOHTML
<option value="{$year}">{$year}</option>
EOHTML;
}
echo <<<EOHTML
</select>
</td>
<td> <input type="text" name="txt[]"/>$milestone->description</td>
</tr>
EOHTML;
} /* END FOR EACH LOOP ON MILESTONES */
echo <<<EOHTML
</table>
<input type='submit' value='Save'/>
</form>
EOHTML;
}/* END FUNCTION */