2010-10-23 4 views
4

Ceci est ma boucle while de mon projet:Comment limiter les éléments de boucle while

<?php 
    $select = "SELECT * FROM nk_showcase"; 
    $query = $db->rq($select); 
    while ($user = $db->fetch($query)) { 
?> 

    <div class="index"> 
     <a href="details.php?id=<?php echo $user['id']; ?>"><img width="200" height="171" alt="<?php echo $user['title']; ?>" src="<?php echo $url; ?>/images/niagakit/<?php echo $user['thumb']; ?>"/></a> 
     <h3><a href="<?php echo $url; ?>/"><?php echo $user['title']; ?></a></h3> 
     <p><a href="<?php echo $url; ?>/"><?php echo $user['url']; ?></a></p> 
    </div> 

<?php } ?> 

Comme vous le savez déjà, cette boucle while boucle pour tous les articles qu'ils trouvent dans ma base de données, donc mon quuestion est, comment limiter cette boucle seulement pour 10 éléments seulement de ma base de données et comment faire pivoter ces éléments chaque actualisation?

Répondre

11

Dans SQL:

$select = "SELECT * FROM nk_showcase LIMIT 0,10"; 

ou en PHP:

$counter = 0; 
$max = 10; 

while (($user = $db->fetch($query)) and ($counter < $max)) 
    { 
    ... // HTML code here.... 

    $counter++; 
    } 

Quant à la rotation, voir @ réponse de Fayden.

+0

Pekka: Parfaitement fonctionnel! Merci! Une autre question: comment faire pivoter ces 10 éléments? – Zhaf

+0

@Zhaf vous êtes les bienvenus. Quant à la rotation, voir la réponse @ Fayden - vous devez donner plus d'informations sur le type de rotation que vous voulez dire –

+0

Merci, maintenant mon problème est résolu à 100% :) – Zhaf

4

Rotation comme aléatoire ou comme les 10 éléments suivants?

La plupart des SGBDR vous permettent de commander des lignes par hasard:

-- MySQL 
SELECT * FROM nk_showcase ORDER BY RAND() LIMIT 10 
-- PostgreSQL 
SELECT * FROM nk_showcase ORDER BY RANDOM() LIMIT 10 

qui sélectionnerait 10 lignes au hasard à chaque fois que vous actualisez la page

Si vous voulez afficher les 10 éléments, vous auriez pagine la page (et utiliser la LIMITE X OFFSET syntaxe Y)

+0

Cela fonctionne, merci pour votre aide! – Zhaf

0

vous devez changer votre requête $ select, essayez d'utiliser LIMIT-10 si vous avez juste besoin les 10 premiers articles ou essayer aussi avec OFFSET si vous avez besoin de paginer les résultats.

$select.=" OFFSET $start LIMIT $range;"; 

Ensuite, vous avez besoin de contrôler les $ commencent et gamme de $ variables telles que:

$size_page=10; 
if (!$page) { 
      $start = 0; 
      $page=1; 
     } 
     else { 
      $start = ($page - 1) * $size_page; 
     } 

Vous pouvez remarquer cette gamme de $ devrait être la même valeur de size_page $ et juste vous avez besoin pour calculer la valeur de départ $ pour chaque itération en tenant compte des #pages

Questions connexes