1

所以,这就是交易。我有一个要填充的 html 表。具体来说,第一行是用 mysql 数据库中的元素填充的行。准确的说,这张表是关于手机的问卷。第一行是从数据库中加载手机名称的标题。还有一个选择标签,其中包含公司名称作为选项。我需要在 select 标记上触发 onChange 事件以重新加载页面并用下拉列表中当前选择的公司的新手机名称重新填充第一行。这就是我的选择几乎看起来的样子:

<select name="select" class="companies" onChange="reloadPageWithNewElements()">
<?php
    $sql = "SELECT cname FROM companies;";
$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs)) {
    echo "<option value=\"".$row['cname']."\">".$row['cname']."</option>\n  ";
}
?>
</select>

所以...有没有办法用 onChange 刷新此页面并将所选值再次传递到同一页面并将其分配到新的 php 变量中,以便我可以执行我需要填写表格的查询?

<?php
//$mobileCompanies = $_GET["selectedValue"];
$sql = "SELECT mname FROM ".$mobileCompanies.";";
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) { 
    echo "<td><div class=\"q1\">".$row['mname']."</div></td>";
}

?>

像这样的东西。(reloadPageWithNewElements() 和 selectedValue 现在只是一个想法)

4

3 回答 3

1

将值保存在 hidden 中input

<input type='hidden' value='<?php echo $row['cname'] ?>' id='someId' />

在您的 JavaScript 函数中使用此隐藏输入字段中的值:

function reloadPageWithNewElements() {
    var selectedValue = document.getElementById('someId').value;
    // refresh page and send value as param
    window.location.href = window.location + '?someVal='+ selectedValue;
}

现在再次在您的 PHP 文件中从 url 中检索此值以用作:

$someVal = null;

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

看看这是否有效!

于 2012-09-04T09:09:23.087 回答
0

最好的选择是使用 AJAX。

reloadPageWithNewElements() 是一个函数,它调用您自己站点的页面,该页面将返回您想要放入表中的数据。

如果你使用的是 JQuery,AJAX 很容易实现:

$.ajax({
    url: '/yourPage',
    data: { selectedCompany: $('.companies').val() },
    success: function(result) {
        //delete your tablerows
        $(".classOfTable tr").remove();
        //put the result in your html table e.g.
        $('.classOfTable').append(result);
    },
    dataType: html
});

浏览器将向“/yourPage?selectedCompany=Google”或其他东西发送请求你所要做的就是让这个页面只打印出 html(也许更简单的是只打印 tablerow (<tr>)。

如果您有任何进一步的问题,请询问。

于 2012-09-04T09:01:48.363 回答
0

我会使用jQuery来做到这一点。

首先您需要为每个选项标签添加“id”属性

<option id="option1">
<option id="option2">

等等......然后使用jQuery:

$('<option>').change(function() {
   var id=$(this).attr('id');
...save data here (i.e: with ajax $.post(url, { selected_id: id}, callback }
});
于 2012-09-04T09:36:20.807 回答