【问题标题】:Grab variable from clicked anchor tag从单击的锚标记中获取变量
【发布时间】:2016-03-18 14:52:39
【问题描述】:

我目前正在制作一个基本的内容管理系统。在这段代码中,我从数据库“帖子”中获取页面列表,然后将它们回显出来。该列表的目的是让用户能够选择现有页面,然后编辑标题和内容,但是我不确定如何从所选链接中获取数据,然后让我的 page-edit.php 显示正确的内容进行相应的编辑。我已将变量 $i 分配给在整个 while 循环中递增的每个锚标记,理想情况下我会使用 $i 从数据库中选择正确的页面。我想避免使用 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();
?>

【问题讨论】:

  • 为什么不在锚标签中使用它作为 GET 变量:echo '&lt;a href="edit-page.php?id=' . $i . '&gt;
  • 您好,感谢您如此及时的回复!您能否进一步了解我将如何做这件事?
  • @Egg 提出了一个很好的建议!还有 Leon,您确定要创建自己的 CMS 吗?我认为没有真正的理由这样做(除非这是一个训练练习)。
  • 在 page-edit.php 上,我会从页面 URL 中获取 id ($i) 吗?
  • @MatthewLymer 这是迄今为止我在搜索 Stack 和其他网站后看到的最好的主意。我知道 Wordpress 和其他 CMS 非常灵活,并且由于其开发团队的规模而无法被击败,但我这样做主要是为了提高我对 PHP 和 SQL 的了解。此外,我非常希望有一个用于小型客户项目的白标 CMS。

标签: php jquery html sql


【解决方案1】:

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

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

然后你可以检查$_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 并放弃已弃用的 MySQL API 以使用 MySQLi APIMySQL PDO

【讨论】:

  • 我还没有打算让 CMS 安全/防黑客,因为我目前正在学习很多 SQL 和 PHP 的基础知识,但是如果我有的话,我会记住这一切计划将 CMS 与任何网站一起使用。
【解决方案2】:

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

主 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 2015-08-14
    • 2020-03-28
    • 1970-01-01
    • 2019-03-16
    • 2017-03-30
    • 2014-03-27
    • 2021-03-22
    相关资源
    最近更新 更多