0

一言で言えば、ユーザーIDは、コード内の他の場所には存在しないデータベースに保存されています。私はPHPとJoomlaの初心者ですが、大部分が単純な大きなコンポーネントを完成させました。

コンポーネントの説明

  • メイン画面には、部門ごとにフィルタリングされたすべてのユーザーのリストがあります。
  • そのメイン画面に値がリストされている2つのメインテーブルがあります。値をクリックして、edit.phpビューを表示します。
  • Chaptersテーブルへのリンクには、ユーザーのID、クラスIDが含まれ、レコードが存在する場合はレコードIDが含まれ、存在しない場合は、JoomlaのJFormネイティブ保存機能を使用した保存時にレコードIDが入力されます。
  • 9つのチャプターがあるため、各ユーザーには、完了の段階に応じて最大9つのエントリがあります。
  • 情報を入力します。保存/保存して閉じる/キャンセルが唯一のオプションです。

問題の説明 -ユーザーに第1章から第9章のエントリがまったくない場合、127のユーザーIDが保存されます。127はどこから来たのですか?全く分からない。1つの章にエントリがある場合は、正常に機能します。

コードスニペット:

保存するには:(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>

たとえば、ユーザー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

私は3桁以下の値を期待していたので、実際には()が値の長さとは関係がなく、表示の長さだけである場合、TinyInt(4)に設定するのは安全だと思われました。

これが他の誰かを助けることを願っています。

于 2012-09-06T16:18:04.977 に答える