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

时间:2015-04-06 12:38:41

标签: javascript php jquery mysql

我的网站上有一个表格和我网站上的下拉列表,根据下拉列表中的选定值,它会更改表格的输出。 我做了一个搜索,然后我找到了this on stackoverflow,我尝试做类似的事情,但它不起作用。这是我的php文件,名为announcements,我想显示表格。

<?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代码与数据库建立连接

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

请参阅此示例:Get data from mysql database using php and jquery ajax

尝试与您做同样的事情,除了$.POST您可以做同样的事情,或者如果您愿意,可以将其更改为$.GET。查看其他php页面如何返回结果以及$.get请求如何接收和查看数据。

答案 1 :(得分:0)

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
}

答案 2 :(得分:0)

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

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

请记住,不推荐使用mysql函数! 使用mysqli或PDO。

度过愉快的一天