使用Joomla的JForm将“Ghost”/不正确的变量保存在MySQL数据库中

时间:2012-09-03 15:29:35

标签: php mysql joomla joomla2.5

简而言之,userID正在数据库中保存,而代码中的任何其他位置都不存在。我是PHP和Joomla的初学者,刚刚完成了一个很大程度上很简单的组件:

组件说明

  • 主屏幕包含所有用户的列表,按部门过滤。
  • 有两个主表,其值列在该主屏幕上。单击一个值,调出edit.php视图。
  • Chapters表的链接包含用户的ID,类ID,如果记录存在记录ID,如果没有,则使用Joomla的JForm本机保存功能在保存时填充记录ID。
  • 共有9章,因此每个用户最多可以有9个条目,具体取决于他们所处的完成阶段。
  • 填写信息,保存/保存&关闭/取消是唯一的选择。

问题描述   - 如果用户根本没有第1-9章的条目,则保存用户ID为127。 127来自哪里?没有线索。如果在一章中有一个条目,那么它可以正常工作。

代码段:

要保存:(view.html.php)

JToolBarHelper::apply('chapters.apply', 'JTOOLBAR_APPLY');
JToolBarHelper::save('chapters.save', 'JTOOLBAR_SAVE');

XML (chapters.xml)

<field name="chapter_userid"
  type="text"
  label="Student UserID"
  description=""
  size="10"
  readonly="true" 
  class="readonly"
/> 

编辑表格:(edit.php)

<li> 
  <?php echo $this->form->getLabel('chapter_userid'); ?>
  <?php echo $this->form->getInput('chapter_userid', null, $this->UserID ); ?>          
</li>

HTML输出,例如用户 170 (在数据库中保存为127,Joomla表示已正确保存):

<input type="text" name="jform[chapter_userid]" id="jform_chapter_userid" **value="170"** class="readonly" size="10" readonly="readonly"/>  

我做过的事:

  • 进行调试

  • 多次添加值以查看触发此操作的内容。

  • 搜索“127”的整个html输出(主屏幕和edit.php)并启用调试 - 没有

  • 在编辑屏幕顶部使用了get_defined_vars(),搜索了127 - 没有。

  • 拉出了很多头发

我不明白为什么如果正确地将userID = 170传递给html输出它被保存为127.有没有人见过这样的东西?还有什么我可以做调试吗?要检查的地方?我怀疑它在Joomla的记忆中存在某种价值,但我也会认为get_defined_vars会以某种方式吐出来。或者某种二进制2 ^ 8偏移1(好吧,所以现在我在MIDI领域,但我很绝望)。

谢谢!

1 个答案:

答案 0 :(得分:0)

127值真的很烦我,经历了所有输出并且找不到任何不合适的地方 - 事实证明我不仅设置了错误的数据类型,而且我错误地知道数据类型是什么:

http://matthom.com/archive/2006/11/28/mysql-integer-columns-and-display-width

我期待不超过三位数值,所以将它设置为TinyInt(4)似乎是安全的,因为()与值的长度无关,只与显示长度无关。

希望这有助于其他人。