PHP选择基于以前的选择

时间:2012-06-08 18:01:48

标签: php mysql html database onchange

我在PHP中有两个函数,其中一个显示ISBN和书名,另一个显示数据库中存在的版本,这些版本基于上一个选择中选择的ISBN。

以下是2个功能:

ISBN - 书籍下拉列表:

    <?php include ("includes/connections.php");
function dropdown($intIdField, $strNameField, $strTableName, $strOrderField, $strNameOrdinal, $strMethod="asc") {
   echo "<select name=\"$strNameOrdinal\" onchange=\"selection($id)\">\n";
   echo "<option value=\"NULL\">Select Value</option>\n";



   $strQuery = "select $intIdField, $strNameField
               from $strTableName
               order by $strOrderField $strMethod";

   $rsrcResult = mysql_query($strQuery);

   while($arrayRow = mysql_fetch_assoc($rsrcResult)) {
      $strA = $arrayRow["$intIdField"];
      $strB = $arrayRow["$intIdField"] . " - " . $arrayRow["$strNameField"];
      echo "<option value=\"$strA\">$strB</option>\n";
   }

   echo "</select>";
}
?>

版本下拉列表:

<?php include ("includes/connections.php");
function dropdownEdition($intId1Field, $intId2Field, $strTableName, $strOrderField, $strNameOrdinal, $strMethod="asc") {

    $intId2Field = $GLOBALS['book'];
   var_dump($intId2Field);
   var_dump($_POST["book"]);

   echo "<select name=\"$strNameOrdinal\">\n";
   echo "<option value=\"NULL\">Select Value</option>\n";



   $strQuery = "SELECT $intId1Field, $intId2Field
               FROM $strTableName
               ORDER BY $strOrderField $strMethod";

   $rsrcResult = mysql_query($strQuery);

   while($arrayRow = mysql_fetch_assoc($rsrcResult)) {
      $strA = $arrayRow["$intId1Field"];
      echo "<option value=\"$strA\">$strA</option>\n";
   }

   echo "</select>";
   }

?>

我一直试图通过onchange函数传递上一个选择中选择的ISBN,该函数将返回书籍的ISBN,但失败了很多。

<?php

    function selection($id){
            echo $id;
        }

?>

我知道我在这方面很糟糕,但如果你能指出我会非常感激的话,我不知道该怎么办。

如果可能的话,我更喜欢PHP解决方案而不是JavaScript解决方案。

1 个答案:

答案 0 :(得分:2)

您正尝试通过onchange事件调用PHP函数。

您需要编写一个JavaScript函数来对PHP文件进行AJAX调用才能获得结果。


您可以使用jQuery

轻松制作AJAX请求
$.get({
  url: "/selection.php",
  data: {
    id: "ISBN HERE"
  },
  success: function(data) {
    alert(data)
  }
})

您还必须在PHP文件中添加类似的内容以显示结果

echo selection($_GET["id"]);

第一页,其中包含图书清单和Go按钮

<form action="page2.php" method="get">
   <!-- book selection list -->
   <input type="submit" value="Go">
</form>

第二页可列出ID为$_GET[$strNameOrdinal]

的图书的所有版本

要在同一页面上执行此操作,重新加载,您需要检查表单是否已提交

<?php

  if (empty($_GET[$strNameOrdinal])) {
    // List Books
  } else {
    // List editions
  }

?>