2010-10-09 6 views
1
<? 
    // Connect database 
    include("cat-config.php"); 

    // Get all records in all columns from table and put it in $result. 
    $result=mysql_query(" 

    (select * from stok_lukisan where `Ukuran` LIKE '20x25' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 3) 
    union all 
    (select * from stok_lukisan where `Ukuran` LIKE '30x40' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 4) 
    union all 
    (select * from stok_lukisan where `Ukuran` LIKE '20x50' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 5) 
    "); 

    /*Split records in $result by table rows and put them in $row. 
    Make it looping by while statement. */ 
    while($row=mysql_fetch_assoc($result)){ 

    echo '<table><tr>'; 
     echo "<td align='center'>$row[Kode]<br><a href='$GAMBAR_URL/$row[Gambar]' rel='lightbox' title='Kode Lukisan: $row[Kode]'><img src='$GAMBAR_URL/$row[Gambar]'><br> 

     Rp.$row[Harga]<a href=\"javascript:;\" onclick=\"simpleCart.add('name=$row[Kode]', 'price=$row[Harga]','size=tiny','quantity=1','thumb=$GAMBAR_URL/$row[Gambar]');\"><br><img src='./images/buy.gif'><p></a>"; 

    $rows = 1; 
    while ($row = mysql_fetch_assoc($result)) { 
     echo "<td align='center'>$row[Kode]<br><a href='$GAMBAR_URL/$row[Gambar]' rel='lightbox' title='Kode Lukisan: $row[Kode]'><img src='$GAMBAR_URL/$row[Gambar]'></a><br> 

    Rp.$row[Harga]<a href=\"javascript:;\" onclick=\"simpleCart.add('name=$row[Kode]', 'price=$row[Harga]','size=tiny','quantity=1','thumb=$GAMBAR_URL/$row[Gambar]');\"><br><img src='./images/buy.gif'><p></a>"; 

     ++$rows; 
     if ($rows %4 == 0) { 
     echo '</tr><tr></tr> 

    </table></tr><tr><table><tr>'; 
     } 
    } 
    } 
    ?> 

Как отображать на странице с каждой строкой петли php в соответствии с лимитом, установленным в объединении всех.PHP: отображение значений строк одинаково со всеми ограничениями объединения

на PHP страницу результат:

1001 - 1002 - 1003 (<---- 3 record on rows) 
2001 - 2002 - 2003 - 2004 (<---- 4 record on rows) 
3001 - 3002 - 3003 - 3004 - 3005 (<---- 5 record on rows) 

спасибо ....

ответ

1

Вы можете использовать простой счетчик для отслеживания строк, которые были извлечены:

$limits = array(3, 4, 5); 
reset($limits); 
$counter = 0; 
while ($row = mysql_fetch_array($result)) { 
    var_dump($row); 
    $counter++; 
    if ($counter === current($limits)) { 
     echo current($limits); 
     next($limits); 
     $counter = 0; 
    } 
} 

Здесь current используется для получения текущего значения, на которое указывает указатель внутреннего массива. Так что, если текущий предел равен числу строк, которые были неправдоподобными, предел напечатан, указатель продвигается (см next) и счетчик сбрасывается в 0.

+0

Ницца. эхо-ток ($ limits); следующие ($); пределы могут быть объединены для эхо каждого ($ limits); Я думаю. –

+0

спасибо за ответ, но я не знаю, как реализовать его сценарий. см. мой предыдущий сценарий ниже. спасибо гамбо. – key

+0

whoaaahhhh наконец, я могу реализовать ваши решения, теперь мои скрипты сработали! Благодарю. – key

0
$sql = "(select *, 3 AS limit 
    from stock 
    where `size` LIKE '25' 
    AND `category` LIKE '1' 
ORDER BY `code` ASC 
    limit 3) 
union all 
(select *, 4 AS limit 
    from stock 
    where `size` LIKE '30' 
    AND `category` LIKE '1' 
ORDER BY `code` ASC 
    limit 4) 
union all 
(select *, 5 AS limit 
    from stock 
    where `size` LIKE '45' 
    AND `category` LIKE '1' 
ORDER BY `code` ASC 
    limit 5)"; 
$res = mysql_query($sql); 
while ($r = mysql_fetch_object($res)) { 
    // assuming each record has a unique id 
    $data[$r->limit][$r->id] = $r->name; 
} 

foreach ($data as $limit => $names) { 
    echo implode(' - ',$names); 
}
+0

спасибо alec, см. Мой предыдущий скрипт ниже: – key

1

Я думаю, что запрос может быть также упрощенным упростить это для PHP:

SELECT 
    GROUP_CONCAT(name SEPARATOR ' - ') names, 
FROM 
    stock 
WHERE 
    category 
    AND size IN (25, 30, 45) 
GROUP BY 
    size 

Это поможет вам данные MySQL отформатированных как вы хотите его в PHP. Вы можете просто распечатать каждую строку.

+0

спасибо за ответ tandu. – key

+0

Это не учитывает пределы, я понимаю. Если вы хотите использовать строгие ограничения, php должен будет выполнить эту работу. Поскольку у вас есть хороший разделитель, вы можете просто взорваться на нем, возьмите array_splice ($ input, $ limit); –