2014-11-06 2 views
-1

Я использую <? foreach $posts as $post) ?>, чтобы вызывать все мои сообщения, которые добавлены в базу данных. Я на самом деле хочу вызывать 3 из новых добавленных записей в базу данных, не все 20.

Как я могу это сделать? Я прочитал большинство тем, но они не работали, как я.

Спасибо!

+0

Используйте предложение 'LIMIT' в вашем запросе –

+0

Ограничьте свои данные, а не свой вывод, но при этом сказано, что' array_slice' должен работать нормально. В качестве альтернативы просто добавьте '1' в число и' break', когда число превышает '3'. – h2ooooooo

+0

ограничьте свой запрос или используйте счетчик php-side и 'break;' –

ответ

3

Этот запрос будет делать ...

select * from posts order by id desc limit 3 //hoping posts is your table name 

order by id desc будет ORDE своих сообщений, чтобы

limit 3 будет получать первые 3 данные

после получения данных, которые вы можете использовать foreach на убывание показать их

надеюсь, что это поможет ...

+0

Да, это работает. Спасибо. Я забыл, что могу использовать запрос. – LabKitty

+0

Быстрый вопрос, как вы это делаете 2 раза, если есть одни и те же запросы из одной таблицы, но один показывает 3 и другие показывает все на одной странице. – LabKitty

+1

'$ query =" select * from posts order by id desc "; if (condition) $ query. = "limit 3" 'при стартовом лимите до 3, если пользователь хочет просмотреть все, что вы можете показать всем. вышеуказанное 'if' будет делать. – Ronser

0

Там в несколько способов ограничить $posts, но если вы не можете изменить, что по какой-то сумасшедшей причине, вы можете использовать:

for ($i = 0; $i < 3; $i++) { 
    if ($i == 0) $post = current($posts); 
    else $post = next($posts); 
    // Do stuff with $post 
} 
+0

Какой смысл использовать 'current' и' next'? Почему бы просто не использовать оператор '[]'? –

+0

@ bali182 Ключи неизвестны – sjagr

0

Или, если вы не можете использовать предложение LIMIT, вы можете сделать

$i = 0; 
foreach ($posts as $post) { 
    if ($i++ > 2) { 
     break; 
    } 

    // do something with $post 
}