1

サイトのすべてのユーザーを表示するページを作成しました。

各ユーザーのuser_idユーザー名が表示されます。各ユーザーの横にフォローボタンを追加してみました。誰かをフォローするために、 user_idを取得します。

残念ながら、ループのために、取得されているuser_idが常にデータベースの最後のものであるため、機能させることができません。

したがって、リストの誰かのフォローボタンを押すと、常に最後の人がフォローされます。

どうすればこれを修正できますか?

20時間以上さまざまな方法を試してきましたが、すべて同じ問題を抱えているようです...

コードは次のとおりです。

<?php
 class Database()
 {
    // connect
    // query

    public function fetchAll() {
       $this->rows = $this->result->fetch_all(MYSQLI_ASSOC);
       return $this->rows;
    }

    public function display() {
      $this->query("SELECT * FROM `users`");
      $this->fetchAll();
    }
 }

 $class = new Database();

 $users = $class->display();

 foreach ($users as $user) {
   $user_id = $user['user_id'];
   $username = $user['username'];

   echo $user_id . ' ' . $username;
   echo '<form action="" method="post">';
   echo '<input type="submit" name="follow" value="Follow">';
   echo '</form>';
 }

 if ($_POST['follow']) {
   $FClass->follow($user_id);
 }
4

1 に答える 1

0

ええ、それは理にかなっています。

foreach ($users as $user) {
    $user_id = $user['user_id']; // At the end of the loop this is the last user
    $username = $user['username'];

    echo $user_id . ' ' . $username;
    echo '<form action="" method="post">';
    echo '<input type="submit" name="follow" value="Follow">';
    echo '</form>';
}

if ($_POST['follow']) {
    // Regardless of what you input you're getting the last user here
    $FClass->follow($user_id); 
}

このようなことを試してください

foreach ($users as $user) {
    $user_id = $user['user_id']; // At the end of the loop this is the last user
    $username = $user['username'];

    echo $user_id . ' ' . $username;
    echo '<form action="" method="post">';
    echo '<input type="hidden" name="userid" value="' . $user_id . '">';
    echo '<input type="submit" name="follow" value="' . $user_id . '">';
    echo '</form>';
}

if ($_POST['follow']) {
    // Regardless of what you input you're getting the last user here
    error_log($_POST['follow']); // View your logs to verify
    $FClass->follow($_POST['follow']); 
    // or
    $FClass->follow($_POST['userid']);
}
于 2013-06-06T23:23:23.687 に答える