从点击的锚标签中获取变量

Grab variable from clicked anchor tag

我目前正在制作一个基本的内容管理系统。在这段代码中,我从数据库 'posts' 中获取了一个页面列表,然后将它们回显出来。该列表的目的是让用户能够 select 现有页面,然后编辑标题和内容,但是我不确定如何从 selected [=17] 中获取数据=] 然后让我的 page-edit.php 显示正确的内容以进行相应的编辑。我已将变量 $i 分配给每个锚标记,这些标记在整个 while 循环中递增,理想情况下我会使用 $i 来 SELECT 来自数据库的正确页面。我想避免使用 jQuery,尽管我假设有人会建议这样做。任何见解都会很棒,提前致谢。

<?php
        $connection = mysql_connect('localhost', 'root', 'root');
        mysql_select_db('posts');
        $query = "SELECT * FROM pages";
        $result = mysql_query($query);
        $i = 0;
        while($row = mysql_fetch_array($result)){
            $i++;
            echo '<a href="edit-page.php">' . $row['page_title'] . ' - ' . $i . '</a>' . '</br>';
        }
        mysql_close();
?>

使用此方法,您需要为每个页面制作一个编辑页面。

主要php文件

<?php $db = mysqli_connect("localhost","user","pass","name");
foreach($this->db->query("SELECT * FROM pages") as $row): ?>
    <a onclick="loadPage(<?php echo $row['id']; ?>)">
        <?php echo $row['page_title']; ?>
    </a>
<?php endforeach; ?>

<script>
   function loadPage(id){
      $.get('handler.php', { param: id })
         .done(function (loaded){
              document.getElementById("example").innerHTML = loaded;
         });
   }
</script>

处理程序php文件

<?php if(isset($_GET['param'])):
   foreach($this->db->query("SELECT * FROM pages") as $row):
      catch($_GET['param']){
          case 1:
              require_once 'edit-data.php';
              break;
          case 2:
              require_once 'edit-data-two.php';
              break;
          default:
              break;
      }
   endforeach; ?>

edit-data.php = 编辑页面 X
edit-data-two.php = 编辑页面 Y

在 while 循环中的 link 中使用 $i 作为 GET id 变量:

echo '<a href="edit-page.php?id=' . $i . '>' . $row['page_title'] . ' - ' . $i . '</a>' . '</br>';

然后您可以检查 $_GET['id'] 以便您知道要编辑的 id/page 并从数据库中获取数据:

if (!empty($_GET['id'])) {
  $query = 'SELECT * FROM pages WHERE id=' . $_GET['id'];
  ...
  // Show the form populated with data from the above query.
}

为了让您入门,我一直保持简单。

别忘了研究防范 SQL Injection and moving away from the deprecated MySQL API to use the MySQLi API or MySQL PDO