簡體   English   中英

MySQL/PHP 新聞系統

[英]MySQL/PHP News System

我有一個 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>';
    }
}
?>

這是新聞頁面上的 Output (/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']; 
}
?>

我只希望它對 output 每篇新聞文章依次進行,一旦它起作用,我可以稍后整理格式。

您在濫用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']);  
}

以這種方式重寫它:

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

當您首先調用 output 時,它只返回一個值,這將循環所有。

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

最后一個 foreach 循環不應該使用$value ,即

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM