MySQL / PHP新闻系统

时间:2011-07-10 14:07:22

标签: php mysql sql

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

最新的文章有效,但我的问题是,每当我试图回应新闻页面上的所有新闻文章时,它要么重复相同,要么输出一个,而不是其他任何内容。

**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']; 
}
?>

我只是想让它依次输出每篇新闻文章,我可以在以后对格式进行整理。

4 个答案:

答案 0 :(得分: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 :(得分:1)

以这种方式改写:

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

当你先调用输出时,它只返回一个值,这将循环遍历所有。

答案 2 :(得分: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']; 
}
?>

答案 3 :(得分:0)

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

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