php - ランダム投稿のダイナミックリンクが投稿IDと集計されない

原文 php mysql pdo

以下のコードは、私のテーブルからランダムな投稿を表示することになっています。これは行いますが、表示される投稿はIDがURLと同じではありません。

URLに表示されている内容を表示するにはどうすればよいですか?ありがとう。

$db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass');           
              $sql = $db->query('SELECT id FROM posts ORDER BY RAND() LIMIT 1');
              $row = $sql->fetch(PDO::FETCH_ASSOC);
echo "<a href='random?page=".$row['id']."'>Randomize!</a><br>";




以下の「random.php」ページの関連部分を見つけてください。

$db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass');
$sql = $db->query('SELECT * from posts ORDER BY RAND() LIMIT 1');

              $row = $sql->fetch(PDO::FETCH_ASSOC);
              echo "<a href = 'random.php?page=".$row['id']."'>Re - Randomize!</a><br>";
              if ($row['sort'] == "image"){
              echo "<b>Update: </b>", $row['tag'], "<br>";
              echo "<img src='resize.php?w=240&img=./uploads/".$row['message']."'><br>";
              echo "<b>", "By: ", "</b>", ($row['username']), "<br>"; 
              echo "<b>", "At: ", "</b>", ($row['timestamp']), "<br>";
              if($row['locked'] !='locked'){
              echo "<a href ='edit.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' data-ajax='false' '><b><span class = 'small_blue'>EDIT</span></b></a>";}
              echo "&nbsp;", "&nbsp;";
              echo "<span class = 'small_green'>", ($row['edited']), "</span>", "&nbsp;", "&nbsp;", ($row['locked']);

              echo "&nbsp;", "&nbsp;";

              }

              else if ($row['sort'] == "audio"){            
              echo "<b>Update: </b>", $row['tag'], "<br>";
              echo "<audio controls>";
              echo "<source src='./uploads/".$row['message']."'>";
              echo "</audio>", "<br>";
              echo "<b>", "By: ", "</b>", ($row['username']), "<br>"; 
              echo "<b>", "At: ", "</b>", ($row['timestamp']), "<br>";  
              if($row['locked'] !='locked'){
              echo "<a href ='edit.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' data-ajax='false' '><b><span class = 'small_blue'>EDIT</span></b></a>";}
              echo "&nbsp;", "&nbsp;";
              echo "<span class = 'small_green'>", ($row['edited']), "</span>", "&nbsp;", "&nbsp;", ($row['locked']);                           
              }

              else if ($row['sort'] == "video"){            
              echo "<b>Update: </b>", $row['tag'], "<br>";
              echo "<video controls>";
              echo "<source src='./uploads/".$row['message']."'>";
              echo "</video>", "<br>";
              echo "<b>", "By: ", "</b>", ($row['username']), "<br>"; 
              echo "<b>", "At: ", "</b>", ($row['timestamp']), "<br>";
              if($row['locked'] !='locked'){
              echo "<a href ='edit.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' data-ajax='false' '><b><span class = 'small_blue'>EDIT</span></b></a>";}
              echo "&nbsp;", "&nbsp;";
              echo "<span class = 'small_green'>", ($row['edited']), "</span>", "&nbsp;", "&nbsp;", ($row['locked']);
              }

              else {
              echo "<b>Update:</b><br>";
              echo ($row['message']), "<br>";
              echo "<b>", "By: ", "</b>", ($row['username']), "<br>"; 
              echo "<b>", "At: ", "</b>", ($row['timestamp']), "<br>";
              if($row['locked'] !='locked'){
              echo "<a href ='edit.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' data-ajax='false' '><b><span class = 'small_blue'>EDIT</span></b></a>";}
              echo "&nbsp;", "&nbsp;";
              echo "<span class = 'small_green'>", ($row['edited']), "</span>", "&nbsp;", "&nbsp;", ($row['locked']);
                               }
答え
私が間違っていない場合、ページが設定されている場合は投稿を取得し、それ以外の場合はランダム化しますか?

それがあなたが望むものなら、あなたはこれを試すことができます(ページが整数であり、IDが一意であると仮定します):

$id = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_NUMBER_INT);
$q = ($id) ? "SELECT * from posts WHERE id=$id" : "SELECT * from posts ORDER BY RAND() LIMIT 1";
$db->query($q);


次に、再ランダム化するには、パラメーターなしでページにリンクします。

echo "<a href='random.php'>Re - Randomize!</a><br>";


それが役に立てば幸い。

敬具。
関連記事

php - 配列PHPの順列

php - symfonyのセキュリティ:セッションまたはoauthによる認証

php - HTMLクエリ文字列の代替

php - NodeJSサーバーポートをサブドメインまたはフォルダーにリダイレクトする(amazon ec2)

javascript - Angular + Laravel:ngRouteによるビューの読み込み

php - インターフェイスを直接実装することを禁止することは可能ですか

php - blobを配列に変換

php - PayPal PHP REST SDKを使用して別の請求先および配送先住所を設定するにはどうすればよいですか?

javascript - PHPでサーバー送信イベントがデータを正しく表示しない

php - htaccess経由でLaravelとWordpressを組み合わせる