0

简而言之,用户ID 被保存在代码中其他任何地方都不存在的数据库中。我是 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 (章节.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>

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

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

我做过的事情:

  • 进行调试

  • 很多添加值,看看是什么触发了这一点。

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

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

  • 拔了很多头发

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

谢谢!

4

1 回答 1

0

127 值真的困扰着我,检查了所有的输出,并没有发现任何不合适的地方——结果证明我不仅设置了错误的数据类型,而且我对数据类型的概念也有错误:

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

我期望不超过三位数的值,因此将其设置为 TinyInt(4) 似乎是安全的,实际上 () 与值的长度无关,仅与显示长度有关。

希望这对其他人有所帮助。

于 2012-09-06T16:18:04.977 回答