2011-05-06 18 views
0

My Site用戶可以登錄並添加新聞。這工作正常。試圖顯示新聞時遇到問題。第一個問題是,如果新聞文字沒有填滿新聞圖像旁邊的所有空間,則下一個新聞項目顯示得太快(不在橙色斷路器下方),正如您現在在網站上看到的那樣。我想繞過這個,我可以將每個新聞發佈div的高度設置爲圖像的高度,雖然圖像比div短一些,所以我不知道該怎麼做。其次,用戶在他們的新聞帖子中放置鏈接。我如何讓它們顯示爲活動狀態?在Firefox上,他們只是作爲文本出來。請有人指出我正確的方向!幫助格式化PHP中的新聞條目

下面的代碼:

$query="SELECT id, date, title, text, author, media1, media2, deleted FROM news ORDER BY id DESC LIMIT 4"; 
$result=mysql_query($query); 

$counter = 0; 
$number1 = 1; 
$number2 = 2; 
while($row = mysql_fetch_array($result)){ 
     if($row['deleted'] == 0) { 
         if (($counter % 2) == 0) { 
echo '<div id="text">'; 
echo '<a name="'.stripslashes($row['title']).'" id="'.stripslashes($row['title']).'"></a>'; 
echo '<span class="kisstitle">'.stripslashes($row['title']).'</span><br>'; 
echo ' ('; 
echo $row['date']; 
echo ')'; 
echo '<br>'; 
echo '<br>'; 



if((preg_match ("/\bjpg\b/",$row['media1'])) || (preg_match ("/\bjpeg\b/",$row['media1'])) || (preg_match ("/\bpng\b/i",$row['media1'])) || (preg_match ("/\bgif\b/i",$row['media1']))){ 

echo '<img style="max-width:300px;" src="media/news/'.$row['media1'].'" class="floatRightClear" id="border">'; 

} 

if((preg_match ("/\bjpg\b/",$row['media2'])) || (preg_match ("/\bjpeg\b/",$row['media2'])) || (preg_match ("/\bpng\b/i",$row['media2'])) || (preg_match ("/\bgif\b/i",$row['media2']))){ 

echo '<img style="max-width:300px;" src="media/news/'.$row['media2'].'" class="floatRightClear" id="border">'; 

} 




if((preg_match ("/\bmp3\b/", $row['media1']))) { 

    echo ' <p id="audioplayer_'.$number1.'" class="floatRightClear">Media Content</p> 
     <script type="text/javascript"> 
     AudioPlayer.embed("audioplayer_'.$number1.'", {soundFile: "http://kiddiessupportscheme.org/media/news/'.$row['media1'].'"}); 
     </script>'; 
     echo '<br>'; 
} 

if((preg_match ("/\bmp3\b/", $row['media2']))) { 

    echo ' <p id="audioplayer_'.$number2.'" class="floatRightClear">Media Content</p> 
     <script type="text/javascript"> 
     AudioPlayer.embed("audioplayer_'.$number2.'", {soundFile: "http://kiddiessupportscheme.org/media/news/'.$row['media2'].'"}); 
     </script>'; 
     echo '<br>'; 

} 

echo stripslashes(nl2br($row['text'])); 
echo '<br><br>'; 
echo stripslashes($row['author']); 
echo '</div>'; 

echo '<p align="right" id="seperater"><a href="index2.php?op=News#top">Top</a><img src="images/seperater.jpg" width="950" height="6" style="border:none;" /></p>'; 
} 

else { 
echo '<div id="text">'; 
echo '<a name="'.stripslashes($row['title']).'" id="'.stripslashes($row['title']).'"></a>'; 
echo '<span class="kisstitle">'.stripslashes($row['title']).'</span><br>'; 
echo ' ('; 
echo $row['date']; 
echo ')'; 
echo '<br>'; 
echo '<br>'; 


if((preg_match ("/\bjpg\b/",$row['media1'])) || (preg_match ("/\bjpeg\b/",$row['media1'])) || (preg_match ("/\bpng\b/i",$row['media1'])) || (preg_match ("/\bgif\b/i",$row['media1']))){ 

echo '<img style="max-width:300px;" src="media/news/'.$row['media1'].'" class="floatLeftClear" id="border">'; 

} 

if((preg_match ("/\bjpg\b/",$row['media2'])) || (preg_match ("/\bjpeg\b/",$row['media2'])) || (preg_match ("/\bpng\b/i",$row['media2'])) || (preg_match ("/\bgif\b/i",$row['media2']))){ 

echo '<img style="max-width:300px;" src="media/news/'.$row['media2'].'" class="floatLeftClear" id="border">'; 

} 



if((preg_match ("/\bmp3\b/", $row['media1']))) { 

    echo ' <p id="audioplayer_'.$number1.'" class="floatLeftClear">Media Content</p> 
     <script type="text/javascript"> 
     AudioPlayer.embed("audioplayer_'.$number1.'", {soundFile: "http://kiddiessupportscheme.org/media/news/'.$row['media1'].'"}); 
     </script>'; 
     echo '<br>'; 

} 
if((preg_match ("/\bmp3\b/", $row['media2']))) { 

    echo ' <p id="audioplayer_'.$number2.'" class="floatLeftClear">Media Content</p> 
     <script type="text/javascript"> 
     AudioPlayer.embed("audioplayer_'.$number2.'", {soundFile: "http://kiddiessupportscheme.org/media/news/'.$row['media2'].'"}); 
     </script>'; 
     echo '<br>'; 

} 

echo stripslashes(nl2br($row['text'])); 
echo '<br><br>'; 
echo stripslashes($row['author']); 
echo '</div>'; 


echo '<p align="right" id="seperater"><a href="index2.php?op=News#top">Top</a><img src="images/seperater.jpg" width="950" height="6" style="border:none;" /></p>'; 

} 
$number1++; 
$number1++; 
$number1++; 
$number2++; 
$number2++; 
$number2++; 
$counter++; 
}} 

回答

1

你的第一個問題:

第一個問題是,如果消息文本不通過的消息圖像的側填滿所有的空間,那麼下一個新聞項目顯示得太快(不在橙色斷路器下方),正如您現在在網站上看到的那樣。我想繞過這個,我可以將每個新聞發佈div的高度設置爲圖像的高度,雖然圖像比div短一些,所以我不知道該怎麼做。

您只需編輯你的CSS文件:

變化:

#seperater { 
    float: left; 
} 

要:

#seperater { 
    clear: both; 
} 

對於你的第二個問題,我發現這個鏈接:http://www.sitepoint.com/forums/3713338-post5.html有正是您需要的解決方案。從鏈接

代碼我上面貼:

define('LINK_LIMIT', 30); 
define('LINK_FORMAT', '<a href="%s" rel="ext">%s</a>'); 

function prase_links ($m) 
{ 
    $href = $name = html_entity_decode($m[0]); 

    if (strpos($href, '://') === false) { 
    $href = 'http://' . $href; 
    } 

    if(strlen($name) > LINK_LIMIT) { 
    $k = (LINK_LIMIT - 3) >> 1; 
    $name = substr($name, 0, $k) . '...' . substr($name, -$k); 
    } 

    return sprintf(LINK_FORMAT, htmlentities($href), htmlentities($name)); 
} 

$s = 'Here is a text - www.ellehauge.net - it has some links with e.g. comma, www.one.com, 
in it. Some links look like this: http://mail.google.com - mostly they end with a 
space or carriage return www.unis.no 
<br /> - but they may also end with a period: http://ellehauge.net. You may even put 
the links in brackets (www.skred-svalbard.no) (http://one.com). 
From time to time, links use a secure protocol like https://gmail.com | 
This.one.is.a.trick. Sub-domaines: http://test.ellehauge.net | 
www.test.ellehauge.net | Files: www.unis.no/photo.jpg | 
Vars: www.unis.no?one=1&amp;~two=2 | No.: www.unis2_check.no/doc_under_score.php | 
www3.one.com | another tricky one: 
http://ellehauge.net/cv_by_id.php?id%5B%5D=105&amp;id%5B%5D=6&amp;id%5B%5D=100'; 

$reg = '~((?:https?://|www\d*\.)\S+[-\w+&@#/%=\~|])~'; 
print preg_replace_callback($reg, 'prase_links', $s); 
+0

感謝薩拉。偉大的迴應!除了一件事之外,現在幾乎所有東西都是固定的:在鏈接之後總會有一個
,你可以看到(看現場看看我的意思)。我認爲這是因爲我將$ s設置爲nl2br($ row ['news']),並且在數據庫條目中的每個鏈接之後都有一個換行符。有沒有辦法解決? – nutman 2011-05-06 14:47:14

+0

您是否嘗試過不使用nl2br()的解決方案?那麼錯誤也發生了嗎? – 2011-05-06 18:31:18

+0

我確實嘗試過。但是這些新聞文章需要有他們的nl2br,因爲作者可能會在他們的文章中加入段落。我相信這是因爲當腳本發現url超鏈接時,它會到達url的末尾,nl2br將
放在url後面,因此將它添加到鏈接的末尾。在url之後只需要有一個額外的空間。不知怎的呢? – nutman 2011-05-06 21:10:10