2012-05-20 2 views
0

У меня в настоящее время есть петля предметов, которые отображаются на странице.Как приостановить цикл после двух прогонов, вставить код между один раз, затем продолжить цикл, где он остановился?

Я хотел бы запустить цикл дважды (вывод 2 результата/элементов), а THEN вставить баннер ONCE сразу после второго результата, а THEN - продолжить цикл, с которого он остановился.

Иллюстрация ниже:

{--- НАЧАЛО ЦИКЛА ---}

ЭЛЕМЕНТ 1 | ПУНКТ 2
{ЗНАМЯ ЗДЕСЬ}
ITEM 3 | ITEM 4
ITEM 5 | ПУНКТ 6
ITEM 7 | ПУНКТ 8

{--- КОНЕЦ ЦИКЛА ---}
< - предыдущая | следующая ->

Элементы находятся внутри время цикла:

$sql = mysql_query("SELECT id, img, description, keyword, category FROM images WHERE connect = 1 ORDER BY id DESC LIMIT $from , $perPage"); 

while($result = mysql_fetch_object($sql)) { 
LOOP OF ITEMS HERE } 

я только когда-либо найденных «делать»/«а» методы, которые на самом деле не то, что я ищу. Если кто-нибудь может помочь, благодарю вас за ваше время & помощь.

+0

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, [эта статья] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите учиться, [это неплохой учебник, посвященный PDO] (http://goo.gl/vFWnC). –

ответ

2
$i=1; 
while($result = mysql_fetch_object($sql)) { 
    //print item 
    if($i==2) { 
     //print banner 
    } 
    $i++; 
} 

, если вы хотите, чтобы напечатать каждые 2 пунктов Юйюань может использовать

if($i % 2 == 0) 
+0

Что конкретно не сработало для вас? Это также нужно упомянуть. – Rahul

+0

Что именно произошло, когда вы попробовали? Трудно догадаться, что могло пойти не так, потому что это почти наверняка взаимодействие между кодом Neil и кодом, который вы вставляли в него. – octern

+0

, если вы использовали скрипт таким же образом выше, он будет работать. проверьте наличие синтаксических ошибок. разместите код, который вы использовали. –

0

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

$result = mysql_fetch_object($sql) 
// print item 
// print banner 
while($result = mysql_fetch_object($sql)) { 
    // print item 
} 

Решение Нейла является более общим, но это может быть проще. Обратите внимание, что ваш ресурс $sql имеет внутренний указатель, который не сбрасывается автоматически, поэтому, если вы вызываете его один раз за пределами цикла while, цикл while начинается со второго элемента. В этом случае это то, что вы хотите.

Смежные вопросы