2012-09-04 40 views
1

因此,这是交易。我有一个我想要填充的html表格。特别是第一行是用mysql数据库中的元素填充的行。确切地说,该表格是关于手机的调查问卷。第一行是手机名称从数据库加载的标题。还有一个选择标签,其中有公司名称作为选项。我需要在select标签上触发一个onChange事件来重新加载页面,并使用当前在下拉列表中选择的公司的新手机名称重新填充第一行。这就是我的选择几乎是这样的:从选择标记触发onChange事件时,从mysql数据库加载html表

<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只是一个想法)

回答

1

保存在一个隐藏值:

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

在你的JavaScript函数从该隐藏的输入字段使用值

:在你的PHP文件现在再次

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

用作检索网址这个值:

$someVal = null; 

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

看看这是否工作!

+0

非常感谢!我试过这个解决方案并且工作。 –

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 =谷歌?”什么 页面打印出来只有HTML(也许更容易为只打印tablerow的(<TR>)。

如果您有任何问题,请询问。

+0

我更喜欢get方法解决方案。我明白这是最佳的,但我对AJAX毫无头绪。 –

+0

是这样的?: $ .get或者完全没有jquery? – HansElsen

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 } 
}); 
相关问题