在页面上显示mysql数据而不刷新页面 - 下拉列表

时间:2012-01-10 08:42:23

标签: php mysql ajax dynamic refresh

我需要一些帮助,

我有一个带有下拉列表的PHP页面,由mysql数据库查询填充。 我希望能够在其他表格单元格中显示所选选项的数据库详细信息。 理想情况下,这可以在没有页面刷新的情况下实现。

除此之外,该表将包含多达75行(车辆上的托盘 - 这是销售工具),因此需要使用while语句或其他内容来实现此目的。每行都有一个选择框来选择包装码。

我的下拉列表代码如下,该表目前只包含5行。

我知道除此之外我还需要使用ajax或javascript吗?

如果有人有示例脚本或者可以使用我的代码作为示例,我会非常感激。

<?

  $con = mysql_connect("localhost","user","password");
  if (!$con)
  {
    die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("dbname", $con);

  $packcodesql="SELECT packcode from skudata order by packcode"; 
  $resultpackcode=mysql_query($packcodesql); 
  $optionspackcode=""; 

  while ($row=mysql_fetch_array($resultpackcode)) { 
     $packcode=$row["packcode"]; 
     $optionspackcode.="<OPTION VALUE=\"$packcode\">".$packcode; 
  } 
?>

<table border=1>
<tr>
  <td>Pack Code</td>
  <td>Category</td>
  <td>Selling Units</td>        
  <td>Full Pallet QTY</td>
  <td>Order QTY</td>
</tr>
<Tr>
  <td>
    <SELECT NAME=packcode1 style="width:100px;"> 
        <OPTION VALUE=0><?=$optionspackcode?></SELECT> 
  </td>
  <td>
    <!-- show mysql result for "select Category from skudata where packcode=packcode1" -->
  </td>
  <td>
    <!-- show mysql result for "select SellingUnits from skudata where packcode=packcode1" -->
  </td>     
  <td>
    <!-- show mysql result for "select FullPalletQTY from skudata where packcode=packcode1" -->
  </td>
  <td><input type="text" id="qty" name="qty"></td>
</tr>       
<Tr>
  <td>
    <SELECT NAME=packcode2 style="width:100px;"> 
        <OPTION VALUE=0><?=$optionspackcode?></SELECT> 
  </td>
  <td>
    <!-- show mysql result for "select Category from skudata where packcode=packcode2" -->
  </td>
  <td>
   <!-- show mysql result for "select SellingUnits from skudata where packcode=packcode2" -->
  </td>     
  <td>
   <!-- show mysql result for "select FullPalletQTY from skudata where packcode=packcode2" -->
  </td>
  <td><input type="text" id="qty" name="qty"></td>
</tr>       
<Tr>
   <td>
    <SELECT NAME=packcode3 style="width:100px;"> 
        <OPTION VALUE=0><?=$optionspackcode?></SELECT> 
   </td>
   <td>
    <!-- show mysql result for "select Category from skudata where packcode=packcode3" -->
   </td>
   <td>
    <!-- show mysql result for "select SellingUnits from skudata where packcode=packcode3" -->
   </td>        
   <td>
    <!-- show mysql result for "select FullPalletQTY from skudata where packcode=packcode3" -->
   </td>
   <td><input type="text" id="qty" name="qty"></td>
</tr>       
<Tr>
   <td>
    <SELECT NAME=packcode4 style="width:100px;"> 
        <OPTION VALUE=0><?=$optionspackcode?></SELECT> 
   </td>
   <td>
    <!-- show mysql result for "select Category from skudata where packcode=packcode4" -->
   </td>
   <td>
   <!-- show mysql result for "select SellingUnits from skudata where packcode=packcode4" -->
   </td>        
   <td>
    <!-- show mysql result for "select FullPalletQTY from skudata where packcode=packcode4" -->
   </td>
   <td><input type="text" id="qty" name="qty"></td>
</tr>       
</table>

2 个答案:

答案 0 :(得分:2)

您想要从链接到td上方框的数据库中填充数据吗?

如果是这样,你可以使用AJAX,并在选择框的选项上放一个onclick(非常确定应该这样做)。

<select>
    <option onclick="myAjaxFunction(this);">Some name</option>
    <option onclick="myAjaxFunction(this);">Some other name</option>
</select>

然后你必须创建函数myAjaxFunction,它将包含Ajax请求的代码(http://api.jquery.com/jQuery.ajax/)。 简单的例子可能是:

<script>
function myAjaxFunction(elem) {
    $.ajax({
        url: 'target/file.php',
        success: function(response) {
            $("#target-td").html(response);
        }
    });
}
</script>

最后是一个用AJAX调用的.php文件,包含你的数据库调用。在文件中,您只需回显您想要显示的内容。

理想情况下,您将使用json进行一次调用并将其全部返回。属性

dataType: 'json'

可以添加到$ .ajax()调用中,您可以使用:

echo json_encode($myContent);

在PHP中你json编码php内容(最好是在数组()中)。

这应该指明你的方式:)请告诉我,如果我需要更具体,或提供更好的例子......

<强>更新

您可以为要定位的每个td创建唯一的ID。然后创建

<td>
    <select>
        <option onclick="firstPackCodeAjax('<?=$packcodeValue?>');" value="<?=$packcodeValue?>"><?=$packcodeValue?></option>
    </select>
</td>
<td id="categoryTd">
   <!-- show mysql result for "select Category from skudata where packcode=packcode1" -->
</td>
<td id="unitsTd">
    <!-- show mysql result for "select SellingUnits from skudata where packcode=packcode1" -->
</td>     
<td id="palletTd">
    <!-- show mysql result for "select FullPalletQTY from skudata where packcode=packcode1" -->
</td>

然后您的AJAX功能将是:

<script>
function firstPackCodeAjax(packCode) {
    $.ajax({
        url: 'target/file.php',
        data: {code: packCode},
        dataType: 'json',
        success: function(json) {
            $("#categoryTd").html(json.Category);
            $("#unitsTd").html(json.SellingUnits);
            $("#palletTd").html(json.FullPalletQTY);
        }
    });
}
</script>

这要求数据输出为json,格式为:

[
    { "Category": "Fast cars" },
    { "SellingUnits": "9001" },
    { "FullPalletQTY": "9001" }
];

然后,您将为要拉入AJAX的每个选择创建一个函数。 target / file.php你需要自己创建一个地方。在这里,您获取数据并在json中回显它。祝你好运;)另外,这可以非常容易地进行优化,但以后就可以了......

答案 1 :(得分:1)

您可以使用AJAX。我没有任何示例,但结合AJAX和PHP的w3schools教程是一个很好的起点。 http://w3schools.com/ajax/ajax_aspphp.asp我会修改他们的示例,使用与w3schools网站上找到的类似的javascript函数将所有选项标记值直接输出到您的选择标记中。

希望这有帮助!