The Way to Programming
The Way to Programming
Need help, It suppose to limit the items to show and it must get the data from the table row, but I don’t know why it kept showing all items.
for ($i = 0; $i < count($structure); $i++) { if ($structure[$i]['parent_type'] == 'ItemBlock' && $GLOBALS['BLOCK_LIST']->getBlockById($structure[$i]['parent_id'])->getNumberOfItems()) { $pos = $i; $itemBlockId = $structure[$i]['parent_id']; $items = array(); $items[] = $structure[$i]; while (isset($structure[++$i]) && $structure[$i]['parent_id'] == $itemBlockId) { $items[] = $structure[$i]; $found = true; } if($found) { $noi = array(); /** Call from MySQL **/ $db = $GLOBALS['dao']->getConnection(); $sql = 'SELECT number_of_items FROM '.DB_PREFIX.'item_blocks WHERE id = ?'; $res = $db->query($sql, array($i)); while($row = $res->fetchRow()) { $noi[] = $row['number_of_items']; } $i--; //return $noi; $items = $noi; } array_splice($structure, $pos, $items); } }
A very easy fix would be to add LIMIT 0, 1 to your query. This makes sure you only retrieve one item from the database.
$sql = 'SELECT number_of_items FROM '.DB_PREFIX.'item_blocks LIMIT 1';
Well one way to do so would be something like:
//This depends on what you want to select of course. $sql = 'SELECT number_of_items FROM '.DB_PREFIX.'item_blocks WHERE id = IN(1, 2, 3, 4, 6, 9)'; $res = $db->query($sql, array($i)); while($row = $res->fetchRow()) { //Do something with your data }
With MySQL’s IN() function, you can pass a number of (in your case) ID’s, which will all be fetched. I think this is the best solution for you.
Sign in to your account