在URL中发布多个变量并使用复选框

这基于以下示例:

http://www.w3schools.com/php/php_ajax_database.asp

差异主要是我使用复选框而不是选择,我希望能够在多个复选框表单中选择多个项目:

以下是我遇到的两个问题:

  1. 我希望能够在URL中发布多个变量,因为到目前为止只能发布一个变量,并且我为未选择的变量收到错误。
  2. 我希望能够一次选择多个复选框。 在当前状态下,您可以选择多个复选框,但仅在最后一个复选框上调整结果。 如果复选框2 + 3被检查,则仅显示3个实例,当我想要2和3的结果时。

下面是html部分:

    function showUser() { var selectedPerson = $('#testform').serialize(); document.getElementById("txtHint").innerHTML = "
  Please wait... Loading New Courses...
"; $.ajax({ url:'getuser.php', type:'post', data:selectedPerson, success:function(res){ $('#txtHint').html(res); } }) } function showUser2() { var selectedPerson = $('#testform2').serialize(); document.getElementById("txtHint").innerHTML = "
  Please wait... Loading New Courses...
"; $.ajax({ url:'getuser.php', type:'post', data:selectedPerson, success:function(res){ $('#txtHint').html(res); } }) }
One
Two
Three
Four
Five
communication
business
Three
Four
Five
Cloud
Java

Person info will be listed here...

以下是PHP部分:

     table { width: 100%; border-collapse: collapse; } table, td, th { border: 1px solid black; padding: 5px; } th {text-align: left;}    <?php $person = ''; $person = isset($_POST['person']) ? $_POST['person'] : ''; $allIds = ''; if($person!=''){ foreach($person as $personid){ $allIds .= $personid.','; } $personid = rtrim($allIds,','); } $person2 = ''; $person2 = isset($_POST['person2']) ? $_POST['person2'] : ''; $allIds = ''; if($person2!=''){ foreach($person2 as $personid2){ $allIds .= $personid2.','; } $personid2 = rtrim($allIds,','); } include("includes/db.php"); global $con; $sql= "SELECT * FROM courses WHERE (course_duration IN ('" . $personid . "')) OR (course_duration IN ('" . $personid2. "')) LIMIT 10"; $result = mysqli_query($con,$sql); $sqlCount = "SELECT * FROM courses WHERE (course_duration IN ('" . $personid . "')) OR (course_subc1 IN ('" . $personid2. "')) OR (course_subc3 IN ('" . $personid2. "')) OR (course_subc1 IN ('" . $personid2. "')) OR (course_subc4 IN ('" . $personid2. "')) OR (course_subc5 IN ('" . $personid2. "'))"; $get_crs_count = mysqli_query($con, $sqlCount); $count_rows = mysqli_num_rows($get_crs_count); echo '

Number of courses available: ' . $count_rows ; while($row_crs = mysqli_fetch_array($result)){ $crs_id = $row_crs['course_id']; $crs_cat = $row_crs['course_cat']; $crs_provider = $row_crs['course_provider']; $crs_title = $row_crs['course_title']; $crs_price = $row_crs['course_price']; $crs_city= $row_crs['course_city']; $crs_category= $row_crs['course_cat1']; $crs_date= $row_crs['course_date1']; $crs_sdesc= $row_crs['course_sdesc']; $crs_shortdesc = mb_strimwidth("$crs_sdesc",0,140,"..."); $crs_image = $row_crs['course_image']; https://stackoverflow.com/questions/29237960/posting-multiple-variable-in-url-and-working-with-checkboxes/$provider_image = $row_crs['provider_image']; echo "

"; } mysqli_close($con); ?>

更新:

     function showUser() { var selectedPeople = {person: []}; $('input[name="person"]:checked').each(function() { selectedPeople.person.push($(this).val()); }); document.getElementById("txtHint").innerHTML = "
  Please wait... Loading New Courses...
"; $.ajax({ url:'getuser.php', type:'post', data:selectedPerson, success:function(res){ $('#txtHint').html(res); } }) } function showUser2() { var selectedPeople = {person2: []}; $('input[name="person2"]:checked').each(function() { selectedPeople.person2.push($(this).val()); }); document.getElementById("txtHint").innerHTML = "
  Please wait... Loading New Courses...
"; $.ajax({ url:'getuser.php', type:'post', data:selectedPerson, success:function(res){ $('#txtHint').html(res); } }) }
One
Two
Three
Four
Five
communication
business
Three
Four
Five
Cloud
Java

Person info will be listed here...

php文件

     table { width: 100%; border-collapse: collapse; } table, td, th { border: 1px solid black; padding: 5px; } th {text-align: left;}    <?php $person = filter_input(INPUT_POST, 'person', FILTER_VALIDATE_INT, FILTER_FORCE_ARRAY); foreach ($person as $personid) { $allIds .= $personid.','; } $personid = rtrim($allIds,','); } $person2 = filter_input(INPUT_POST, 'person2', FILTER_VALIDATE_INT, FILTER_FORCE_ARRAY); foreach ($person2 as $personid2) { $allIds2 .= $personid2.','; } $personid2 = rtrim($allIds2,','); } include("includes/db.php"); global $con; $sql= "SELECT * FROM courses WHERE (course_duration IN ('" . $personid . "')) OR (course_duration IN ('" . $personid2. "')) LIMIT 10"; $result = mysqli_query($con,$sql); $sqlCount = "SELECT * FROM courses WHERE (course_duration IN ('" . $personid . "')) OR (course_subc1 IN ('" . $personid2. "')) OR (course_subc3 IN ('" . $personid2. "')) OR (course_subc1 IN ('" . $personid2. "')) OR (course_subc4 IN ('" . $personid2. "')) OR (course_subc5 IN ('" . $personid2. "'))"; $get_crs_count = mysqli_query($con, $sqlCount); $count_rows = mysqli_num_rows($get_crs_count); echo '

Number of courses available: ' . $count_rows ; while($row_crs = mysqli_fetch_array($result)){ $crs_id = $row_crs['course_id']; $crs_cat = $row_crs['course_cat']; $crs_provider = $row_crs['course_provider']; $crs_title = $row_crs['course_title']; $crs_price = $row_crs['course_price']; $crs_city= $row_crs['course_city']; $crs_category= $row_crs['course_cat1']; $crs_date= $row_crs['course_date1']; $crs_sdesc= $row_crs['course_sdesc']; $crs_shortdesc = mb_strimwidth("$crs_sdesc",0,140,"..."); $crs_image = $row_crs['course_image']; https://stackoverflow.com/questions/29237960/posting-multiple-variable-in-url-and-working-with-checkboxes/$provider_image = $row_crs['provider_image']; echo "

"; } mysqli_close($con); ?>

没有显示错误但是当选中一个复选框时会发生什么,它只是停在这一行(在索引js上找到):

 }); document.getElementById("txtHint").innerHTML = "
  Please wait... Loading New Courses...
";

而不是var selectedPerson = $('#testform').serialize(); 试试这个:

 var selectedPeople = {person: []}; $('input[name="person[]"]:checked').each(function() { selectedPeople.person.push($(this).val()); }); 

并在您的PHP中更改$person = ... to:

 $person = filter_input(INPUT_POST, 'person', FILTER_VALIDATE_INT, FILTER_FORCE_ARRAY); foreach ($person as $personid) { $allIds .= $personid.','; } $personid = rtrim($allIds,',');