onChange 函数更改表中显示的数据


onChange function change the displayed data from a table

我的网站中有一个表格,在我的网站上有一个下拉列表,根据下拉列表中的选定值,它将更改表格的输出。我做了一个搜索,我在stackoverflow上找到了这个,我试图做类似的事情,但它不起作用。这是我的php文件,称为公告,我想显示表格。

<?php
include_once 'header.php';
$connection = mysql_connect("localhost", "root", "smogi")?>
<html>
<head>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<?php
$result = queryMysql("SELECT * FROM doctor WHERE username='$username'");
if (mysql_num_rows($result)):
?>
<!-- Koumpi pou se metaferei sti selida gia tin dimiourgia neas anakoinwseis -->
<form action="new_announcement.php">
<input type="submit" value="Create New Announcement">
</form>
<br />
Select Category :<select id="SelectDisease" name="category">
<option value="*">All</option>
<!--emfanizei tis epiloges gia ta specialties me basi auta p exoume sti basi mas -->
<?php
$sql = mysql_query("SELECT name FROM disease");
while ($row = mysql_fetch_array($sql)) {
echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>";
}
?>
</select><br><br />
<table border="1" style="width:100%">
<tr>
<td><b>Author</b></td>
<td><b>Category</b></td>
<td><b>Subject</b></td>
<td><b>Content</b></td>
</tr>
<?php
if(isset($_GET["selected"])){
$type = $_GET["selected"];
$query = "SELECT author,category,subject,content FROM announcements WHERE category='" . $type . "'";
$announcements = mysql_query($query, $connection);
$counter = 0;
$z = 0;
if ($announcements == FALSE) {
die(mysql_error()); // To get better errors report
}
while ($row = mysql_fetch_assoc($announcements)) {
while ($row = mysql_fetch_assoc($announcements)) {
$counter++;
?>
<tr>
<td><?php echo $row['author'];?></td>
<td><?php echo $row['category']; ?></td>
<td><?php echo $row['subject']; ?></td>
<td><?php echo $row['content']; ?></td>
</tr>
<?php }
}
}
?>
<?php
else:
?>
Select Category :<select id="SelectDisease" name="category">
<option value="*">All</option>
<!--emfanizei tis epiloges gia ta specialties me basi auta p exoume sti basi mas -->
<?php
$sql = mysql_query("SELECT name FROM disease");
while ($row = mysql_fetch_array($sql)) {
echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>";
}
?>
</select><br><br />
<table border="1" style="width:100%">
<tr>
<td><b>Author</b></td>
<td><b>Category</b></td>
<td><b>Subject</b></td>
<td><b>Content</b></td>
</tr>
<?php
if(isset($_GET["selected"])){
$type = $_GET["selected"];
$query = "SELECT author,category,subject,content FROM announcements WHERE category='" . $type . "'";
$announcements = mysql_query($query, $connection);
$counter = 0;
$z = 0;
while ($row = mysql_fetch_assoc($announcements)) {
$counter++;
?>
<tr>
<td><?php echo $row['author'];?></td>
<td><?php echo $row['category']; ?></td>
<td><?php echo $row['subject']; ?></td>
<td><?php echo $row['content']; ?></td>
</tr>
<?php } } endif;?>
</table>
</body>
</html>

这是我的javascript.js文件

$(document).ready(function() {
  $('#SelectDisease').change(function() {
var selected=$(this).val();
  $.get("announcements.php?selected="+selected, function(data){
      $('.result').html(data);
    });
    });
});

感谢您抽出宝贵时间:)

PS:INCLUDE_ONCE代码创建与数据库的连接

首先,除非您的用户做出选择,否则您没有任何可用的 $_GET,因此它将是未定义的。如果值可用,则应获取该值。这样:

if(isset($_GET['selected'])){
    $type = $_GET['selected'];
}

但这不是这里唯一的问题。 $.get是一个 ajax 请求,它只是向您的 php 文件发送请求并获取页面的所有 html 内容。

如果您不在乎每次用户选择选项时都重新加载页面,则只需将用户重定向到该 URL,而不是$.get请求即可。否则,如果您想在不重新加载的情况下执行此操作,则需要正确执行$.get请求。

说您正在尝试执行类似操作的示例不是向用户正在查看的同一页面发送$.get请求。它将 get 请求发送到另一个 php 页面,该页面旨在从其 url 获取$_GET["selected"],向数据库发送查询,从数据库中获取结果,然后返回结果,这将是您的$.get请求中的data

请参阅此示例:使用 php 和 jquery ajax 从 mysql 数据库获取数据

它试图做与您相同的事情,除了$.POST您可以根据需要执行相同的操作或将其更改为$.GET。查看其他 php 页面如何返回结果以及$.get请求如何接收和查看数据。

> 如果有任何错误,mysql_query()将导致布尔值FALSE,请在循环while之前进行检查,以获得更好的错误,

if($announcements == FALSE) { 
    die(mysql_error()); // To get better errors report
}
while($row = mysql_fetch_assoc($announcements)){
  // then you code here
}

mysql_query(( 在出错时返回 FALSE。您必须选择数据库名称。这样:

$connection = mysql_connect("localhost", "root", "smogi", "***DATABASE_NAME***");

请记住,mysql 函数已被弃用!使用 mysqli 或 PDO。

有好的一天