【问题标题】:PHP sort table when submit button is clicked单击提交按钮时的PHP排序表
【发布时间】:2015-04-13 01:40:18
【问题描述】:

我希望能够在单击提交按钮时在字段中将我的表排序为 ASC。

我使用数组函数从 SQL 数据库中获取信息,我尝试创建排序函数,但是当我单击“提交”时没有任何反应。

这是我创建提交按钮的尝试:

 <h1> Courses </h1>
<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Order by Week
<button type="submit" name="week" class="button" <?php echo $value='1'; ?>"> Sort Week </button>
</form>
<?php 
if(isset($_POST['week'])){
        $query="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
   }

当我点击提交时,表格保持不变。

这是我的表连接信息

$con = mysql_connect("host", "username", "password");
if (!$con) 
{
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("username", $con);
$sql = "SELECT * FROM `classes`";
$myData = mysql_query($sql, $con);
echo "<table border=1>
<tr>
<th> Name 1 </th>
<th> Name 2 </th>
<th> Name 3 </th>
<th> Name 4 </th>
</tr>";
while ($record = mysql_fetch_array($myData)){
    echo "<tr>";
    echo"<td>" . $record['name 1'] . "</td>";
    echo"<td>" . $record['week'] . "</td>";
    echo"<td>" . $record['name 3'] . "</td>";
    echo"<td>" . $record['name 4'] . "</td>";
    echo "</tr>";
}
echo "</table>";
mysql_close($con);
}
?>

我过去曾问过类似的问题,但我认为由于缺乏完整的信息,他们误解了。

【问题讨论】:

  • 我没有看到您在任何地方按周执行 SQL 订单。
  • 它在顶部。我的代码的后半部分按原样显示表格。我希望用户能够看到表格,然后如果他们想订购它,他们可以点击一个按钮。
  • 您只是在定义查询,但从不运行它
  • 如果你能引导我到一个教你如何通过按钮运行脚本的网站会很有帮助

标签: php mysql arrays sorting html-table


【解决方案1】:

当提交按钮被按下时,您定义了您的操作,但实际上并没有使用它。您不需要表单后面的 php 部分。 尝试编辑您的表连接信息:

...
mysql_select_db("username", $con);
if(isset($_POST['week'])){
    $sql="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
}
else{
    $sql = "SELECT * FROM `classes`";
}
$myData = mysql_query($sql, $con);
...

【讨论】:

    【解决方案2】:

    试试这个代码

    $con = mysql_connect("host", "username", "password");
    if (!$con) 
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("username", $con);
    $sql = "SELECT * FROM `classes`";
    
    if(isset($_POST['week'])){
            $sql="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
       }
    
    $myData = mysql_query($sql, $con);
    echo "<table border=1>
    <tr>
    <th> Name 1 </th>
    <th> Name 2 </th>
    <th> Name 3 </th>
    <th> Name 4 </th>
    </tr>";
    while ($record = mysql_fetch_array($myData)){
        echo "<tr>";
        echo"<td>" . $record['name 1'] . "</td>";
        echo"<td>" . $record['week'] . "</td>";
        echo"<td>" . $record['name 3'] . "</td>";
        echo"<td>" . $record['name 4'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
    mysql_close($con);
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      您必须更改原始查询。 $sql = "SELECT * FROM classes";

      让我们总结一下:

      您的表格:

      <h1> Courses </h1>
      <form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      Order by Week
      <button type="submit" name="week" class="button" <?php echo $value='1'; ?>"> Sort Week </button>
      </form>
      

      提交时:

      <?php
      
      $orderString = ''; // default 
      if (isset($_POST['week'])){
          $orderString = "`classes`.`week` ASC";
      }
      

      你的显示器:

      $con = mysql_connect("host", "username", "password");
      if (!$con) 
      {
          die('Could not connect: ' . mysql_error());
      }
      mysql_select_db("username", $con);
      $sql = "SELECT * FROM `classes`";
      // now check order
      if ($orderString !== '') {
          // Concatenate
          $sql .= ' ORDER BY ' . $orderString;
      }
      $myData = mysql_query($sql, $con);
      echo "<table border=1>
      <tr>
      <th> Name 1 </th>
      <th> Name 2 </th>
      <th> Name 3 </th>
      <th> Name 4 </th>
      </tr>";
      while ($record = mysql_fetch_array($myData)){
          echo "<tr>";
          echo"<td>" . $record['name 1'] . "</td>";
          echo"<td>" . $record['week'] . "</td>";
          echo"<td>" . $record['name 3'] . "</td>";
          echo"<td>" . $record['name 4'] . "</td>";
          echo "</tr>";
      }
      echo "</table>";
      mysql_close($con);
      }
      ?>
      

      【讨论】:

        【解决方案4】:

        在“表连接信息”的SQL语句中添加ORDER BY子句。

        【讨论】:

        • 这会使显示的表格有序吗?我希望表格一开始是无序的,因为它正在显示,然后当他们点击提交按钮时它会排序。
        猜你喜欢
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多