【问题标题】:onChange function change the displayed data from a tableonChange 函数更改表中显示的数据
【发布时间】:2015-04-06 12:38:40
【问题描述】:

我的网站中有一个表格,我的网站中有一个下拉列表,根据从下拉列表中选择的值,它将更改表格的输出。 我进行了搜索,找到了this on 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 代码创建与数据库的连接

【问题讨论】:

  • 打开错误报告,并在执行查询后检查 MySQL 错误。 $announcements 很可能(很可能)是错误的,因为您的查询失败。
  • mysql_select_db();你忘了
  • @satishrajak 我从include_once 'header.php';中选择我的数据库
  • 那么首先你写 $connection = mysql_connect("localhost", "root", "smogi");包含include_once'header.php';
  • 如果我按照你说的做,我会得到这个Parse error: syntax error, unexpected 'include_once' (T_INCLUDE_ONCE)

标签: javascript php jquery mysql


【解决方案1】:

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

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

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

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

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

看这个例子:Get data from mysql database using php and jquery ajax

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

【讨论】:

    【解决方案2】:

    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
    }
    

    【讨论】:

    【解决方案3】:

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

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

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

    祝你有美好的一天

    【讨论】:

    • 我与数据库有联系。
    • 能否请您添加一个 $connection 对象的 var_dump?
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多