2016-07-19 6 views
-1

나는 최신 게시물을 전체 화면으로 표시하지 않고 전체 화면으로 표시하고 싶습니다. 그러나 다른 게시물은 잘려야합니다. 나는 이렇게하는 방법을 모릅니다. 그래서 여기 있습니다! 여기에 몇 가지 코드가 있습니다!최신 게시물을 트리밍되지 않은 상태로 표시하고 나머지는 트리밍 할 수 있습니까?

<div id="news"> 
    <?php 

    $query=mysql_query("SELECT NewsID, Title, Content, Author, 
         date_format(Date, '%m/%d/%y') AS Date 
         FROM news ORDER BY NewsID DESC LIMIT 2"); 

    while($row=mysql_fetch_assoc($query)){ 
     echo "<div class=\"news_item\"> 
       <div class=\"title\"> 
        <a href=\"article.php?newsID=$row[NewsID]\">$row[Title]</a> 
       </div> 
       <div class=\"date\"> 
        Posted: $row[Date] by $row[Author] 
       </div> 
       <div class=\"news_content\"> 
        <p>".trimNewsContent($row[Content])."</p> 
       </div> 
       </div>"; 
    } 
    ?> 
</div> 
+1

최종 게시물을 출력 할 때 감지 할 코드가 필요합니다. 빠르고/더러운 방법은 행 수를 얻고 최종 행을 출력하는지 확인하는 것입니다. 또는 배열로 페치/캐시하고, 배열을 반복하면 배열의 크기를 알 수 있습니다. –

답변

1

우선 : don't use mysql_ functions, 그러나 mysqli_ 또는 PDO. mysql_ 함수는 몇 년 전에 더 이상 사용되지 않았으며 더 이상 최신 PHP 버전에서 지원되지 않습니다.

this question에 대한 응답에는 결과 집합의 마지막 행을 찾는 방법에 대해 여러 가지 방법이 설명되어 있습니다.

나는 비난 한 mysql_ 기능에 근거를 둔 해결책을주지 않을 것이다; 먼저 코드를 변환해야합니다. 당신이 mysqli_에 대한 가서 $ 콘에서 연결을 얻을 경우

, 당신은이 작업을 수행 할 수 있습니다

$query = mysqli_query($con, "SELECT NewsID, Title, Content, Author, date_format(Date, '%m/%d/%y') AS Date FROM news ORDER BY NewsID DESC LIMIT 2"); 
// fetch all rows 
$rows = mysqli_fetch_all($query); // pass MYSQLI_ASSOC as 2nd argument if needed 
foreach($rows as $i => $row) { 
    $content = $i == count($rows)-1 ? $row['Content'] : trimNewsContent($row['Content'])); 
    echo ".... // etc 
     $content 
     ....// etc 
    "; 
} 

을 목표 다르게 첫 번째 레코드를 처리 한 후 바로 따라 조건을 변경하는 경우 :

$content = $i == 0 ? $row['Content'] : trimNewsContent($row['Content'])); 
1

이것은 가장 최근 결과가 쿼리에 기반한 것으로 가정합니다. 이제

$content = ""; 
if($shouldTrim){//Anything but the latest 
    $content = trimNewsContent($row[Content]); 
} else { //This is your latest 
    $content = $row[Content]; //output to full content 
    $shouldTrim = true; //Set this to true going forward will trim 
} 

당신이

을 할 수 있습니다 while 루프의 상단에 다음

$shouldTrim = false; //Sine the latest is your first item you do not want to trim first 

:

당신은 당신의 while 루프의 추가 외부 그래서 트림을 잘 할 수있는 조건과 방법이 필요합니다
<p>".$content."</p> 
0

마크 B와 마찬가지입니다. 마지막 게시물이 어디에 있는지 알아야합니다. 그것을하는 한 방법 :

$query2 = mysql_query("SELECT count(*) AS nb_news FROM news"); 
$nbNews = mysql_fetch_array($query2); 

그걸로 당신은 얼마나 많은 뉴스를 알 수 있습니다. 동안 전에

:

$i = 0; 

그냥 잠시 후, $ 증가 I : $i++;

$ i가 뉴스의 수와 동일한 경우, 마지막에 있습니다 그렇다면 그런 다음, 테스트 게시물 :

if($i == $nbNews['nb_news']) 
{ 
    $content = $row[Content]; 
} 
else 
{ 
    $content = trimNewsContent($row[Content]); 
}