2011-05-06 4 views
0

My Site 사용자는 로그인하여 뉴스를 추가 할 수 있습니다. 그건 잘 작동합니다. 나는 뉴스를 표시하려고 할 때 문제가있다. 첫 번째 문제는 뉴스 텍스트가 뉴스 이미지 옆에있는 모든 공간을 채우지 못하면 다음 뉴스 항목이 사이트에서 즉시 볼 수있는 것처럼 너무 빨리 표시된다는 것입니다 (주황색 차단기 아래 표시되지 않음). 이 문제를 해결하기 위해 이미지의 높이에 각 뉴스 게시자 div의 높이를 설정할 수 있다고 생각 했었습니다. 이미지가 div보다 약간 짧았 기 때문에 어떻게 할 것인지 잘 모르겠습니다.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

+0

nl2br()을 사용하지 않고 솔루션을 사용해 보셨습니까? 오류가 발생 했습니까? –

+0

나는 그것을 시도했다. 그러나 뉴스 포스트는 저자가 자신의 게시물에 단락을 넣었을 수 있으므로 nl2br을 가져야합니다. 스크립트가 url을 하이퍼 링크로 찾으면 url의 끝 부분에 도달하고 nl2br은 URL 바로 뒤에
을 삽입하고 링크의 끝에 추가하기 때문에 발생한다고 생각합니다. URL 뒤에 여분의 공간이 있어야합니다. 어떻게 든 들어갈 수 있을까요? – nutman

관련 문제