1. ホーム
  2. php

[解決済み] PHP/HTMLで異なる記事を表示する方法

2022-02-16 05:35:35

質問

私はPHPの初心者で、どなたか助けてください。

私はページに別の記事を表示したいので、私はMYSQLに記事を作成し、それらのすべてを表示しようとすると、私はいつも同じ名前で同じ記事を取得している、私はタブバーからID番号を変更したときに私は別の記事を見ることができますが、名前は変更され、まだ彼らはすべて同じhrefで同じです。

<nav class="sdb_holder">
    <tr>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
      <td><a href="news.php?id=<?php echo $rsNews['id'];?>"><?php echo $rsNews['name']; ?></a></td>
    </tr>
  </nav>

phpのコードです。

$db = mysql_select_db("db"); 
if(isset($_GET['id'])){ 
 $id = $_GET["id"];
}
else{ 
$id="1"; 
} 
$news_sql = " SELECT * FROM news WHERE id = $id"; 
$news_query = mysql_query($news_sql); 
$rsNews = mysql_fetch_assoc($news_query); 
?>

何かお手伝いできることはありますか?

解決方法は?

あなたのスクリプトの他の部分が欠けているようなので、確かなことは分かりませんが、必要なのはこれだと思います。

<?php

$db = mysql_select_db("db"); 
if(isset($_GET['id'])){ 
    $id = $_GET["id"];
}
else{ 
    $id="1"; 
} 

//fetching the register based on your id.
$news_sql = "SELECT * FROM news WHERE id = $id"; 
$news_query = mysql_query($news_sql); 
$rsNews = mysql_fetch_assoc($news_query);

//faching all other records in your db.
$all_news_sql = "SELECT * FROM news"; 
$all_news_query = mysql_query($all_news_sql); 
?>

データベースにあるあなたの他の投稿をすべて取得するために、別のクエリを作成しました。あなたは常に同じIDで取得した同じ投稿を表示しようとしていました。そのため、同じ名前になってしまったのです。

ここで、他のすべてのレコードを表示する部分になります。

<nav class="sdb_holder">
    <tr>
      <?php while ($row = mysql_fetch_assoc($all_news_query)): ?>
          <td><a href="news.php?id=<?php echo $row['id'];?>"><?php echo $row['name']; ?></a></td>
      <?php endwhile ?>
    </tr>
</nav>

なぜなら、データベースにどれだけのレコードがあるかわからない場合があるからです。そのため、whileループの中に一度だけコードを記述し、クエリの最後のレコードを取得するまで繰り返すようにしています。

これで終わりですね。明日に向けて急いでいるのはわかりますが、可能であればmysqlの関数をPDO/Mysqliに変更することを検討してみてください。

うまくいったら教えてください。