2011-09-09 3 views
0

내가 while 루프를 가지고 각자가 목록에 <li></li>을 표시, 다른 모든 루프 에코해야 PHP를 알 수있는 방법이있다 말 :while 루프 동안, 다른 모든 루프에 대한 명령문?

<li style="background: #222;"></li> 

을 내 CSS에서 나는 다른 색상 #있을 것입니다 (111) 기본으로 설정하면 내 사이트의 사용자는보고있는 데이터 행을 쉽게 결정할 수 있습니다. 요청에 따라

내 코드 :

function user_details($dbc, $q, $details) { 
echo '<ul class="userlist">'; 
while ($user = $q -> fetch(PDO::FETCH_ASSOC)) { 

    echo '<li><span>(' . $user['id'] . ')</span> <a href="/viewaccount?id=' . $user['id'] . '">' . $user['username'] . '</a><div>'; 

    if ($user['admin'] > 0) { 
     echo '<img class="Tooltip" src="gameimages/admin.png" width="18" height="18" title="Is game admin." alt="" />'; 
    } 

    echo '<img class="Tooltip" src="gameimages/' . $user['gender'] . '.png" width="18" height="18" title="' . $user['gender'] . '" alt="" />'; 

    $last_active = time() - $user['last_active']; 
    $seconds = $last_active % 60; 
     $minutes = ($last_active - $seconds)/60; 
    if ($minutes <= 4) { 
    echo '<img class="Tooltip" src="gameimages/active5.png" width="18" height="18" alt="" title="'; 
     if ($seconds == 0) { 
      echo 'Last active ' . $minutes . ' minutes ago." />'; 
     } 
     elseif ($minutes == 0) { 
      echo 'Last active ' . $seconds . ' seconds ago." />'; 
     } 
     else { 
      echo 'Last active ' . $minutes . ' minutes and ' . $seconds . ' seconds ago." />'; 
     } 
    } 
    elseif ($minutes <= 9) { 
     echo '<img class="Tooltip" src="gameimages/active10.png" width="18" height="18" alt="" title="'; 
     if ($seconds == 0) { 
      echo '<strong>Last active ' . $minutes . ' minutes ago." />'; 
     } 
     else { 
      echo 'Last active ' . $minutes . ' minutes and ' . $seconds . ' seconds ago." />'; 
     } 
    } 
    elseif ($minutes <= 14) { 
     echo '<img class="Tooltip" src="gameimages/active15.png" width="18" height="18" alt="" title="'; 
     if ($seconds == 0) { 
      echo 'Last active ' . $minutes . ' minutes ago." />'; 
     } 
     else { 
      echo 'Last active ' . $minutes . ' minutes and ' . $seconds . ' seconds ago." />'; 
     } 
    } 

    if ($user['subscriber'] > 0) { 
     echo '<img class="Tooltip" src="gameimages/subscriber.png" width="18" height="18" title="Subscriber with ' . $user['subscriber'] . ' days left." alt="" />'; 
    } 

    echo '</div>'; 

    echo '<a href="#"><img class="Tooltip" src="gameimages/sendmessage.png" width="18" height="18" title="Send ' . $user['username'] . ' a message." alt="" /></a>'; 

    $is_friend = $dbc -> prepare("SELECT id, friend_id FROM friends WHERE id = ? && friend_id = ?"); 
    $is_friend -> execute(array($details['id'], $user['id'])); 
    $friend_request = $dbc -> prepare("SELECT id, id_to FROM friend_requests WHERE id = ? || id_to = ? && id = ? || id_to = ?"); 
    $friend_request -> execute(array($user['id'], $details['id'], $details['id'], $user['id'])); 
    if ($is_friend -> rowCount() > 0) { 
     echo '<img class="Tooltip" src="gameimages/isfriend.png" width="18" height="18" title="Friend request sent to ' . $user['username'] . '." alt="" />'; 
    } 
    elseif ($friend_request -> rowCount() > 0) { 
     echo '<img class="Tooltip" src="gameimages/friendrequested.png" width="18" height="18" title="There is a request pending to be friends with ' . $user['username'] . '." alt="" />'; 
    } 
    else { 
     echo '<a href="/confirm?action=addfriend&amp;id=' . $user['id'] . '"><img class="Tooltip" src="gameimages/addfriend.png" width="18" height="18" title="Add ' . $user['username'] . ' as a friend." alt="" /></a></li>'; 
    } 
} 
echo '</ul>'; 
} 

그것은 기본적으로 서로 다른 행에 다른 배경 :

+1

나는 이것을 두 번 읽었습니다. 정확히 그 질문은 무엇입니까? –

+1

while 루프를 보여 주시겠습니까? – TJHeuvel

+0

지금 편집 하시겠습니까? – carlgcode

답변

1

당신은 홀수 또는 예 심지어 행,

$isOdd = true; 
while(...){ 
    if($isOdd) echo '<li style="background: #222;"></li>'; 
    else echo '<li></li>'; 
    $isOdd = ! $isOdd; 
} 
+0

이것은 완벽하게 고마워 alot :) 당신은 시간이 있다면이 기술을 배울 수 있도록 실제로 일어나는 일에 대한 답을 설명해 주시겠습니까? 감사합니다 :) – carlgcode

+0

글쎄, 정말 간단합니다.'$ isOdd'는'true'로 초기화 된 부울 변수이고, 루프의 끝에서'true'와'false' 사이의 값을 바꿉니다 ('$ isOdd =! $ isOdd;'문, '$ isOdd = not $ isOdd'를 읽습니다. 즉, true와 false 사이를 순환합니다. – ain

+0

덕분에 나를 많이 도왔습니다 – carlgcode

2

당신은 모든 짝수 값이 다른 것을 표시 할을해야, 최소의 기능에; 이 모듈로 연산자를 사용하는 것을 할 것입니다 : 당신이 당신의 $index가 이미 정의이 것 때문에

$index = 0; 
while($user = $q->fetch(PDO::FETCH_ASSOC)) 
{ 
    if(++$index%2 == 0) //is index +1 even? 
    echo '<li style="background: #222;"></li>'; 
    else 
    echo '<li></li>'; 
} 

가능하다면, 당신은 for 루프로 변경 될 수 있습니다.

0

는 다음과 같은 일을 할 수 있습니다 깔끔함을 위해

$colors = array('111', '222'); 
$i = 0; 
while (...) { 
    echo '<li style="background: #' . $colors[$i % count($colors)] . '"></li>'; 
    $i++; 
} 

당신은 또한 for 루프로 while 루프를 돌 수 있었다. 예를 들어 :

$colors = array('111', '222'); 
for ($i = 0; ...; $i++) { 
    echo '<li style="background: #' . $colors[$i % count($colors)] . '"></li>'; 
} 
+0

왜 각 루프에서 배열의 내용을 세고 있습니까? PHP는 스레드되지 않으므로 루프에서 루프에 데이터를 추가 할 때까지 루프 실행 중에 배열이 업데이트되지 않습니다. 귀하의 배열이 거대한 경우, 이것은 상처 것입니다 ... –

2

또는 더 나은 아직

$isOdd = true; 
while(...){ 
    echo '<li class="' . ($isodd ? 'odd' : 'even'). '"></li> 
    $isOdd = ! $isOdd; 
} 

는 그 다음에 색상을 넣어 추적하기 위해 부울 플래그를 사용할 수 있습니다 스타일 시트 - 글꼴 등을 변경할 수있는 장점이 있습니다. 코드를 바꿀 필요없이 새로운 모양을 줄 수도 있습니다.

+0

매우 멋지고 :)이 생각하지 못했습니다;) – carlgcode

+0

주머니에 영리한 CSS가 있다면 - 당신은 6 th 상승 할 수 있습니다 –