【问题标题】:checked checkbox will remain through pagination选中的复选框将通过分页保留
【发布时间】:2014-08-22 13:38:11
【问题描述】:

我正在做一个 php 脚本,其中我需要记住选中的复选框并将其保存在所有数据库中。不幸的是,我的代码只保存了我选中复选框的当前页面,但另一个复选框未被选中。

示例在第 1 页我检查了 3 个项目,在第二页我检查了我的项目。当我单击提交按钮时,我只得到了当前页面的选中项。当我返回上一页时,我检查的项目变为未选中。如何通过分页保留和保存我选中的复选框的值?

这是我的 CreateTest.php 代码

<html>
<body>
<?php
ob_start();
session_start();
include("connect.php");
error_reporting(0);
$item_per_page=10;
$results = mysqli_query($con,"SELECT COUNT(*) FROM tblitem");
$get_total_rows = mysqli_fetch_array($results); //total records

//break total records into pages
$pages = ceil($get_total_rows[0]/$item_per_page);   

//create pagination
if($pages > 1)
{
    $pagination = '';
    $pagination .= '<ul class="paginate">';
    for($i = 1; $i<=$pages; $i++)
    {
        $pagination .= '<li><a href="#" class="paginate_click" id="'.$i.'page">'.$i.'</a></li>';
    }
    $pagination .= '</ul>';
}

?><!DOCTYPE html>

<script type="text/javascript">
$(document).ready(function() {
    $("#results").load("fetch_pages.php", {'page':0}, function() {$("#1-page").addClass('active');});  //initial page number to load

    $(".paginate_click").click(function (e) {

        $("#results").prepend('<div class="loading-indication"><img src="ajax-loader.gif" /> Loading...</div>');

        var clicked_id = $(this).attr("id").split("-"); //ID of clicked element, split() to get page number.
        var page_num = parseInt(clicked_id[0]); //clicked_id[0] holds the page number we need 

        $('.paginate_click').removeClass('active'); //remove any active class

        //post page number and load returned data into result element
        //notice (page_num-1), subtract 1 to get actual starting point
        $("#results").load("fetch_pages.php", {'page':(page_num-1)}, function(){

        });

        $(this).addClass('active'); //add active class to currently clicked element (style purpose)

        return false; //prevent going to herf link
    }); 
});
</script>
<form name="myform" action="CreateTest.php" method="POST" onsubmit="return checkTheBox();" autocomplete="off">

<body>
<?php 
if(isset($_POST['save'])){
    $testPrice = $_POST['testPrice'];
    $testName = $_POST['testName'];
    $items = $_POST['items'];
    $quantity = $_POST['quantity'];
    $testDept = $_POST['testDept'];
    $measurement = $_POST['measurement'];
 global $con;
   Tool::SP_Tests_Insert(strip_tags(ucwords($testName)), $testPrice, $testDept);
    $result = mysqli_query($con, "SELECT MAX(TestID) FROM lis.tbltests");
    $data=  mysqli_fetch_array($result);
    $testID=$data[0];
    foreach ($items as $key => $value){
     $checkedItem[] = $value; 
    echo $value, " | ",$quantity[$key], " | ",$measurement[$key], "<br>";
     mysqli_query($con,"INSERT INTO tbltestitem (TestID, ItemID, ItemQuantity, ItemMeasurement) VALUES ($testID, $value, '$quantity[$key]', '$measurement[$key]')");
}
echo "<script type='text/javascript'>alert('Succesfully added test!')</script>";
    $site_url = "tests.php";
    echo "<script language=\"JavaScript\">{location.href=\"$site_url\"; self.focus();  }</script>";

}else if(!isset($_POST['save'])){
$selectDept='';
$result= mysqli_query($con,"select * from tbldepartment");
$selectDept.="<option value=''>Select Department:</option>";
while($data = mysqli_fetch_array($result)){
    $selectDept.="<option value='{$data['DeptID']}'>{$data['DeptName']}</option>";
}
?>
<td style="vertical-align: top;">
    <body>   
    <div id="container" align="center">
        <div id="title">Create Test</div>
        <div id="a">Input Test Name:</div><div id="b"><input type="text" name="testName" id="myTextBox" onkeyup="saveValue();" ></div>
        <div id="a">Input Test Price:</div><div id="b"><input type="number" name="testPrice"></div>
         <div id="a">Select Department:</div><div id="b"><select name="testDept" ><?php echo $selectDept; ?></select></div>

    <div id="results"></div><div id="a"><?php echo $pagination; ?></div>
<div align="right" style="padding: 10px;"><input type="submit" name="save" value="Submit"></div> </div>
<?php
}
?>   
</body>
</html>

这是我的 fetch_pages.php 代码。 这个 php 页面帮助我通过 jquery 的分页来保持文本框的值,它将被加载而无需进入另一个分页页面

<?php

include("connect.php"); 
require_once('classes/tool.php');
$item_per_page=10;
//sanitize post value
$page_number = $_POST["page"];

//validate page number is really numaric
if(!is_numeric($page_number)){die('Invalid page number!');}

//get current starting point of records
$position = ($page_number * $item_per_page);

//Limit our results within a specified range. 
$results = mysqli_query($con,"SELECT * FROM tblitem ORDER BY ItemID ASC LIMIT $position, $item_per_page");
$connection=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
$selectMeasure='';
$measurements = Tool::SP_Measurement_Select();    
foreach($measurements as $measure) {      
    $selectMeasure.='<option value=' . $measure['MeaName'] . '>' . $measure['MeaName'] . '</option>';
$i=0;
while($item = mysqli_fetch_array($results))
{
    echo "<div id='a'><input type='checkbox' name='items[$i]' id='item[]' value='". $item['ItemID'] ."' >".$item['ItemName']."</div>";
    echo "<div id='b'><input type='number' name='quantity[$i]' class='quantity' /></div>";        
    echo "<div id='b'><select name='measurement[$i]' class='quantity'>'".$selectMeasure."'</select></div>";
$i++;
}
?>

希望你能帮助我。提前致谢

【问题讨论】:

  • 我的第一个想法是使用本地存储,使用 this 之类的东西来记住我之前所做的事情。

标签: javascript php


【解决方案1】:

Ugg...太多代码无法查看。

不过,简短的回答是,您可以使用 &lt;input type-"hidden"...&gt; 标记将值从一种形式传递到另一种形式。

警告,手写代码类型

Page1.php

<form action="page2.php">
  <div>
    <input type="checkbox" name="test1">
  </div>
</form>

Page2.php

<?php
  if (is_set($_REQUEST["test1"])) {
    $test1 = $_REQUEST["test1"];
  } else {
    $test1 = false;
  }

<form action="page3.php">
  <div>
    <input type="hidden" name="test1" value="<?php echo $test1 ?>">
  </div>
</form>

Page3.php

<?php
    $test1 = $_REQUEST["test1"];
?>

【讨论】:

  • 我在这里没有使用很多表格,我只使用了一种表格,那就是 CreateTest.php。因为我需要在使用分页时保留我的 3 个文本框的值。所以我需要使用一页。 @jeremyJstarcher
  • 同一概念适用于跨一页工作。只是更容易展示展开。
  • 你能给我举个例子吗?很抱歉打扰你。 @jeremyjstarcher
猜你喜欢
  • 1970-01-01
  • 2017-01-27
  • 2012-04-23
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多