2011-07-10 75 views
1

我有一个PHP/MySQL的新闻系统里显示在主页上最新的新闻文章和新闻页面上的完整列表。的MySQL/PHP新闻系统

最新文章位的作品,但我的问题是,每当我试图呼应的新闻页面上的所有新闻文章,要么重复相同或输出一个,别无其他。

**MySQL Information** 

id INT AUTO_INCREMENT, 
author VARCHAR(xxx), 
title VARCHAR(xxx), 
message TEXT, 
date TEXT, 
time TEXT, 
PRIMARY KEY(id) 

这是插入页(news_center.php)

<form action='/?module=admin&n=news_center_ac' method='post'> 
<table align="center" width="68%"> 
    <tr> 
      <td>Title</td> 
      <td><input style="width:100%;" type='text' name='news_title' /></td> 
    </tr> 
    <tr> 
      <td height="57">Message</td> 
      <td><input style="width:100%; height:100%;" type='text' name='news_message' /></td> 
    </tr> 
    <tr> 
      <td colspan='2'><input type='submit' /></td> 
    </tr> 
</table> 

这是news_center_ac.php

<?php 
$conn = mysql_connect(*Connection Information*) or die(mysql_error()); 
$db = mysql_select_db("db372357229")or die(mysql_error()); 

$author == $_SESSION['name']; 

if(!empty($_POST['news_title']) || !empty($_POST['news_message'])) 
{ 
    if(!empty($_POST['news_title']) && !empty($_POST['news_message'])) 
    { 

      $date = date('jS F Y'); 
      $time = date('H:i'); 
      $query = "INSERT INTO news (id, author, title, content, date, time) VALUES('', '".$author."', '".$_POST['news_title']."', '".$_POST['news_message']."', '".$date."', '".$time."')" or die(mysql_error()); 
      $insert = mysql_query($query) or die(mysql_error()); 
      echo '<p>Successful News Update&nbsp;&nbsp;&ldquo;'.$_POST['news_title'].'&rdquo;'; 

    } 
    else 
    { 
     echo '<p>Please fill in all fields</p>'; 
    } 
} 
?> 

这是新闻网页上的输出(/ news/index.php)

<?php 
$conn = mysql_connect("*CONNECTION INFORMATION*") or die(mysql_error()); 
$db = mysql_select_db("db372357229")or die(mysql_error()); 
$news = mysql_query("SELECT * FROM news ORDER BY date DESC,id DESC"); 
$output = mysql_fetch_array($news); 
?> 

*CONTENT* 

<?php 
foreach ($output as $value) { 
echo "<p> &ldquo;" .$output['content']; 
echo "&rdquo;"; 
echo "Posted:" .$output['date']; 
echo "&nbsp;" .$output['time']; 
} 
?> 

我只是希望它输出的每个新闻文章反过来以后我可以理清格式化一次它的工作原理。

回答

2

你滥用mysql_fetch_array()。它需要在循环中调用,因为它一次只返回一行。

$conn = mysql_connect("*CONNECTION INFORMATION*") or die(mysql_error()); 
$db = mysql_select_db("db372357229")or die(mysql_error()); 
$news = mysql_query("SELECT * FROM news ORDER BY date DESC,id DESC"); 

编辑新增htmlentities()调用转换HTML特殊字符

while ($row = mysql_fetch_array($news)) { 
    echo "<p> &ldquo;" . htmlentities($row['content']); 
    echo "&rdquo;"; 
    echo "Posted:" . htmlentities($row['date']); 
    echo "&nbsp;" . htmlentities($row['time']); 
} 
1

重写这样说:

<?php 
while($output = mysql_fetch_array($news)) { 
    echo "<p> &ldquo;" .$output['content']; 
    echo "&rdquo;"; 
    echo "Posted:" .$output['date']; 
    echo "&nbsp;" .$output['time']; 
} 
?> 

当你第一次调用输出,只返回一个值,这将循环所有。

1

尝试/news/index.php

<?php 
$conn = mysql_connect("*CONNECTION INFORMATION*") or die(mysql_error()); 
$db = mysql_select_db("db372357229")or die(mysql_error()); 
$news = mysql_query("SELECT * FROM news ORDER BY date DESC,id DESC"); 


while($output = mysql_fetch_assoc($news)) { 
echo "<p> &ldquo;" .$output['content']; 
echo "&rdquo;"; 
echo "Posted:" .$output['date']; 
echo "&nbsp;" .$output['time']; 
} 
?> 
0

应该不是最后一个foreach循环使用$value,即

<?php 
foreach ($output as $value) { 
echo "<p> &ldquo;" .$value['content']; 
echo "&rdquo;"; 
echo "Posted:" .$value['date']; 
echo "&nbsp;" .$value['time']; 
} 
?> 
+0

这是一个问题,但一个不切题。在第一个行之后,这些行永远不会被正确提取。 –

+0

是的,那是我首先注意到的那个明显的... – ain