-4

私はjoomla2.5を使用していますが、個別のカテゴリのリストと記事のリストを取得したいと思います。

次のコードを使用してすべてのカテゴリをフェッチしていますが、別の挿入で使用するためのカテゴリIDを取得できません。

以下の選択リストでも、これらの個別のフィールドIDを取得するにはどうすればよいですか。

$db = &JFactory::getDBO();
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level";
$db->setQuery($query);
$rows = $db->loadObjectList();
?>
<?php $catagories = (isset($this->settings['catagories']) ? $this->settings['catagories'] : "");?>
<select id="catagories" name="settings[catagories]">
<option value="default" selected="selected">---Default---</option>
<?php foreach ($rows as $row) {?>
<option <?php //if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php //echo $row->id;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>
</select>
4

2 に答える 2

0
<?php 
$db = &JFactory::getDBO();
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level";
$db->setQuery($query);
$rows = $db->loadObjectList();
?>
<?php foreach ($rows as $row) {
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1'  LIMIT 1 ";
$db->setQuery($query);
$rowid = $db->loadResult();
?>
<option value="<?php echo $rowid;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>
于 2012-10-10T12:05:45.510 に答える
0

最初のステップは、「catagories」の検索/置換を実行して「categories」に変更し、コードがデータベーステーブルと同じ言語を話していることと、英語であることを確認することです。

質問を理解した場合:カテゴリの個別のタイトルのリストはありますが、これらのIDはありません。各タイトルが正確に1つのIDに対応するという保証はありません。実際、クエリで「DISTINCT」を使用して返される行に影響を与える場合は、1つのタイトルに対応するIDが最後に2つあります。

これは非常に珍しいので、(i)いくつかの同名の(同じ名前の)カテゴリがある理由と(ii)これが当てはまる理由、フォームでの選択のためにそれらを返さない理由を確認することをお勧めします。

個別のカテゴリタイトルのリストを提供する必要があり、フォーム送信でこれらを処理するにはIDが必要であることが判明した場合、タイトルごとに使用するIDの選択はあいまいです。

どのIDを使用するかは問題ではないと仮定すると、適切なタイトルと一致する限り、次のことができます。

<?php foreach ($rows as $row) {
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1'  LIMIT 1 ";
$db->setQuery($query);
$row->id = $db->loadResult();
?>
<option <?php if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php echo $row->id;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>

より効率的な解決策として、元のクエリでUNIONを使用して、返された各行のIDを提供することを検討できます。

于 2012-10-10T10:37:02.250 に答える