2010-10-09 4 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>'; 
     } 
    } 
    } 
    ?> 

comment afficher sur la page avec chaque ligne de boucles php conformément à une limite qui a été définie dans l'union tous.PHP: Afficher les lignes valeur même avec toutes les limites d'union

sur le résultat comme php page suivante:

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

merci ....

Répondre

1

Vous pouvez utiliser un simple compteur de garder une trace des lignes qui ont été tiré par les cheveux:

$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; 
    } 
} 

Ici, current est utilisé pour obtenir la valeur actuelle que le pointeur interne du tableau pointe vers. Donc, si la limite de courant est égal au nombre de lignes qui ont été tiré par les cheveux, la limite est imprimé, le pointeur est avancé (voir next) et le compteur est remis à 0.

+0

Nice. courant d'écho (limites de $); suivant (limites de $); peut être consolidé pour faire écho à chacun ($ limites); Je pense. –

+0

merci pour la réponse, mais je ne sais pas comment mettre en œuvre à mon script. S'il vous plaît voir mon script précédent ci-dessous. merci gumbo. – key

+0

whoaaahhhh enfin, je peux mettre en œuvre vos solutions, maintenant mes scripts ont fonctionné! Merci. – 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

merci alec, s'il vous plaît voir mon script précédent ci-dessous: – key

1

Je pense que la requête peut être simplifed de simplifier aussi cela pour PHP:

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

cela vous obtenir les données MySQL formatées comme vous le souhaitez en PHP. Vous pouvez simplement imprimer chaque ligne.

+0

merci pour la réponse tandu. – key

+0

Cela ne tient pas compte des limites, je me rends compte. Si vous voulez utiliser les limites strictes, php devra faire le travail. Puisque vous avez le bon séparateur, vous pouvez juste exploser dessus, prenez array_splice ($ input, $ limit); –

Questions connexes