物事が正しくエスケープされていないことはわかっていますが、注文内の次の ID と前の ID を取得するために前/次のクエリを作成しようとしていますが、出力が phpmyadmin の並べ替えと一致しません。私はちょうど「次」を書き、逆の条件で前を書きます。このクエリは、注文内で次に高い ID 値番号を取得しているようです...注文インデックスの次または前が必要です...誰か助けてくれますか?
$db = JFactory::getDBO();
$query = "SELECT image_id FROM #__jxgallery_images WHERE image_id >".$currentid."' ORDER BY '".$ordering." ".$direction." LIMIT 1";
// Executes the current SQL query string.
$db->setQuery($query);
// returns the array of database objects
$list = $db->loadObjectList();
// create the list of ids
foreach ($list as $item) {
$next = $item->image_id;
echo $next.'<br/>';
}
echo 'The next ID in this sort state is '.$next.'<br />';
?>
これは phpmyadmin です。その通りです...
SELECT * FROM `jos_jxgallery_images`
ORDER BY `jos_jxgallery_images`.`hits` DESC
LIMIT 0 , 30
コードでこのクエリを照合して、同じ結果を取得しました。私の変数は、私の句内の ($ordering) 'hits' フィールドと 'desc' ($direction) を埋めます。それはうまくいきます。image_ids と hits は特別なものではなく、単なる数字です。ヒットが並べ替えられると、一致するように image_id が再作成されます。フィールドにあるものについては、image_id の次の値は必要ありません。現在の image_id I プラグインに基づいて、値に関係なく、次の行または前の行が必要です。
これらは実際の image_ids LIMIT 5 であり、ヒット フィールドの降順で並べられています。
52791
52801
52781
52771
52581`
現在見ている画像の ID が の52791
場合、前の画像は何もなく、次の画像は になります52801
。私のクエリが行っていることは、次の行ではなく、次に高い VALUED image_id であるため、より高い値の数値の image_id を「next」として提供していると思います。クエリで、より大きい値を要求している理由がわかります...しかし、次の行が必要なだけです