CodeIgniter/PHP-输出MySQL结果,而不重复代码-我这样做对吗?
情况是这样的:我有一个网站,有一个复杂的地址表,有多个输入,如门牌号、街道、电话等。这个表格在网站周围的许多不同地方都有使用 有几个不同的场景会影响此表单: 有时,表单需要显示为“新鲜”,所有输入为空,等待添加新地址 其他时候,表单需要预先填充从数据库中提取的地址,以便编辑 最后,如果用户输入了地址,提交了表单,但忘记添加他们的门牌号,那么表单可能需要重新填充自己-在这种情况下,它需要返回刚刚输入的内容,但显示表单验证警告。 然而 我只想为整个站点使用的地址提供一个HTML表单,以保存重复代码 我希望这个表单能够处理上面显示的每一个不同的场景,以保存重复的代码 以下是表单的示例输入:CodeIgniter/PHP-输出MySQL结果,而不重复代码-我这样做对吗?,php,mysql,forms,codeigniter,dry,Php,Mysql,Forms,Codeigniter,Dry,情况是这样的:我有一个网站,有一个复杂的地址表,有多个输入,如门牌号、街道、电话等。这个表格在网站周围的许多不同地方都有使用 有几个不同的场景会影响此表单: 有时,表单需要显示为“新鲜”,所有输入为空,等待添加新地址 其他时候,表单需要预先填充从数据库中提取的地址,以便编辑 最后,如果用户输入了地址,提交了表单,但忘记添加他们的门牌号,那么表单可能需要重新填充自己-在这种情况下,它需要返回刚刚输入的内容,但显示表单验证警告。 然而 我只想为整个站点使用的地址提供一个HTML表单,以保存重复代码
<div class="input">
<input id="house_number" name="house_number" value="<?php echo set_value('house_number', $details->row('house_number'));?>"/>
<label for="house_number">House Number</label>
</div>
如您所见,这解决了场景2和场景3-代码echo set_value$house_number,$details->row'house_number'?>默认情况下,将使用从MySQL结果集1中提取的数据预填充自身,或者-如果它检测到已提交的内容-使用存储在house_number中的先前数据重新填充自身
我的问题是:我如何在场景1中构建它,理想情况下不重复任何代码,不添加嵌套的ifs,等等?无论何时“从头开始”加载表单,PHP都会输出有关未设置$details的错误,这是可以理解的,因为没有任何东西可以从数据库或我的模型中获取
我的模型返回一个MySQL结果集,但我想你能用一个空行初始化这个结果集吗?但我不确定这样做是否正确
谢谢
Jack为了防止未设置$details的输出错误,在使用$details之前,应首先检查$details是否为null。所以你可以-
$house_number = '';
if($details)
{
$house_number = $details->row('house_number');
}
然后
<input id="house_number" name="house_number" value="<?php echo set_value('house_number', $house_number);?>"/>
我希望这会有所帮助。谢谢,确实有帮助-但我不必担心在会话中保留数据,因为CodeIgniter会自动为我处理所有这些。我仍然有点担心,如果我必须对每个输入进行这些检查,那么可能会有很多不必要的代码。
$house_number = '';
if(isset($_SESSION['house_number']))
{
$house_number = $_SESSION['house_number'];
}
else if($details)
{
$house_number = $details->row('house_number');
}