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

时间:2016-03-18 14:52:40

标签: php jquery html sql

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

3 个答案:

答案 0 :(得分:1)

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

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

然后,您可以检查$_GET['id'],以便了解要编辑的ID /页面,并从数据库中获取该数据:

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

答案 1 :(得分:0)

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

主要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

答案 2 :(得分:0)

我相信@egg提供了最好的答案。这种方式相对简单,据我所知没有任何缺陷。

我将渐进的$ i变量输入到while循环中的锚标记href属性中,如下所示:

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

然后在另一个页面(edit-page.php)上使用以下代码来回显数据库中用于用户选择的锚点的相应页面内容:

<?php 
    $edit_page_query_url = $_SERVER['QUERY_STRING'];
    $edit_page_url = preg_replace("/[^0-9]/","",$edit_page_query_url);
    $connection = mysql_connect('localhost', 'root', 'root');
    mysql_select_db('posts');
    $query = "SELECT * FROM pages WHERE page_id = $edit_page_url";
    $result = mysql_query($query);
    $x = 0;
    while($row = mysql_fetch_array($result)){
        $x++;
        echo $row['page_content'];
    }
    mysql_close();
?>

谢谢@egg,非常感谢您的帮助! :

有人对上面的代码有评论吗?