我如何使一个可点击的列标题,将导致数据重新排序



第一部分如下。下面是第二部分:

我使用了下面提供的代码。我移动了一些东西,去掉了所有的错误。但是,现在我的数据丢失了。我得到了带有标题的表格,它们是可点击的(然而,没有表格就不可能看到点击会发生什么)。有人能看出我做错了什么让数据无法显示出来吗?

 <html>

 function getRecords($query) {
     $con = mysql_connect("localhost", "movie", "moviepw");
     if (!$con)
     {
        die('Could not connect: ' . mysql_error());
     }
     mysql_select_db("movies", $con);
     $result = mysql_query($query);
     return $result;
     function buildQuery($sortOrder) {
             $so = mysql_real_escape_string($sortOrder);
             $so = $so ? $so : "movie_title";
             return "SELECT * FROM table1 ORDER BY " + $so;
 }
     ?>
     </thead>
      <tbody>
      <?
                $sortOrder = $_GET['sortOrder'];
           $query = buildQuery($sortOrder);
           $records = getRecords($query);
 ?>
      <?
     while($row = mysql_fetch_array($result)){ ?>
               <tr>
               <td><?= $row['movie_title']; ?></td>
               <td><?= $row['movie_rating']; ?></td>
               <td> <img src="<?= $row['movie_image'];?>"> </td>
               <td><?= $row['movie_description']; ?></td>
      </tr>

 <table border='1'>
      <thead>
             <tr>
                    <th><a href="?sortOrder=movie_title">Title</a></th>
                    <th><a href="?sortOrder=movie_rating">Rating</a></th>
                    <th>Image</th>
                    <th><a href="?sortOrder=movie_description">Description</a></th>
             </tr>
</table>
</body>

谢谢!

第一部分:

我是PHP新手,对HTML也很生疏,所以这是一个真正的初学者问题。下面是正在进行的代码。但请注意,这不是我的完整代码。我尝试了很多不同的东西,我得到了这个语法错误:

解析错误:语法错误,unexpected '?' in C:xampphtdocsmoviedata3.php on line 30

就我所知,我需要那个"?"

那么,这就是全部内容:

<html>
<body>
<table>
<?php
$con = mysql_connect("localhost", "movie", "moviepw");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("movies", $con);
$result = mysql_query("SELECT * FROM table1");
echo "<table border='1'
<tr>
?>
<?php
while($row = mysql_fetch_array($result))
  {
  ?>
   <? { ?>
   <a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>
   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_rating")") ?>"><th>Rating</th></a>
   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_image")") ?>"><th>Image</th></a>
   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_description")") ?>"><th>Description</th></a>
  </tr>";
<? } ?>
  <tr>
 <td><?= $row['movie_title']; ?></td>
 <td><?= $row['movie_rating']; ?></td>
 <td> <img src="<?= $row['movie_image'];?>"> </td>
 <td><?= $row['movie_description']; ?></td>
 </tr>
 <?
  }
echo "</table>";
mysql_close($con);
?>
    </td></tr>
</table>
</body>
</html>

第30行是这样的:

<a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>

非常感谢!

看来你没有注意应该在哪里执行什么。查询DB是服务器端代码,点击按钮(在您的情况下列标题)是客户端。

所以试着用这样的方式重写你的片段:

 <?php
     function buildQuery($sortOrder) {
        $so = mysql_real_escape_string($sortOrder);
        $so = $so ? $so : "movie_title";
        return "SELECT * FROM table1 ORDER BY " + $so;
     }
     function getRecords($query) {
         $con = mysql_connect("localhost", "movie", "moviepw");
         if (!$con)
         {
            die('Could not connect: ' . mysql_error());
         }
         mysql_select_db("movies", $con);
         $result = mysql_query($query);
         return $result;
     }
     $sortOrder = $_GET['sortOrder'];
     $query = buildQuery($sortOrder);
     $records = getRecords($query);
     ?>
     <table border='1'>
          <thead>
                 <tr>
                        <th><a href="?sortOrder=movie_title">Title</a></th>
                        <th><a href="?sortOrder=movie_rating">Rating</a></th>
                        <th>Image</th>
                        <th><a href="?sortOrder=movie_description">Description</a></th>
                 </tr>
          </thead>
          <tbody>
    <?php
     while($row = mysql_fetch_array($result)){ ?>
          <tr>
          <td><?= $row['movie_title']; ?></td>
          <td><?= $row['movie_rating']; ?></td>
          <td> <img src="<?= $row['movie_image'];?>"> </td>
          <td><?= $row['movie_description']; ?></td>
          </tr>
    <? } ?>
          </tbody>
    </table>

我相信你的问题是从这一行开始的:

echo "<table border='1'

你正在使用双引号打开一个字符串,但它没有找到匹配的双引号,直到它到达:

<a href="<?

它以"作为字符串的结尾,然后是<作为操作员。下一个角色是意想不到的?>

如果你修改你的代码,使引号是正确的,问题就会消失。

代码中还有许多其他问题。例如,在循环外打开一个<tr>,但在循环内关闭它。至于循环中的mysql_query()调用…我不知道你从哪里抄来的代码,但我觉得它很可疑。它不会返回一个字符串来回显,作为开始,而是一个资源;$result变量在双引号中,这意味着它们会被插入。正如其他人所说,这是一个烂摊子,你最好找到另一个例子来解决你的问题。

相关内容

  • 没有找到相关文章

最新更新