【问题标题】:Dynamic Link for Random Post not Tallying with Post ID随机帖子的动态链接与帖子 ID 不相符
【发布时间】:2014-12-26 16:53:08
【问题描述】:

下面的代码应该显示我表中的随机帖子;它会这样做,但它显示的帖子的 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']);
                               }

【问题讨论】:

  • 您在页面random 中使用$_GET ['page']/$row['id'] 值的代码在哪里?
  • @Sean 抱歉,我的时间即将到期。很快就会发布这个。谢谢。
  • @Sean ,我已经发布了“random.php”页面。谢谢。

标签: php mysql pdo


【解决方案1】:

如果我没记错的话,如果设置了页面,你想检索帖子,否则随机化?

如果这是你想要的,你可以试试这个(假设 page 是整数并且 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>";

希望对你有帮助。

亲切的问候。

【讨论】:

    【解决方案2】:

    我的 random.php 页面缺少 $_GET:

    $tbl='posts';
              $id=$_GET['page'];
    
              $db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass');
              $sql = $db->query("SELECT * from $tbl WHERE id = ".$_GET['page']." ");
                  $row = $sql->fetch(PDO::FETCH_ASSOC);
    

    谢谢大家!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多