Javascript 带有数据库发送的两步表单。有一个大的post数组

Javascript 带有数据库发送的两步表单。有一个大的post数组,javascript,php,Javascript,Php,让我先解释一下这个脚本是如何工作的。在步骤0中,我们输入数据(列表编号、最小值和最大值)。脚本对范围进行计数,并使用数值推送数组。(最小值+1,直到达到最大值) 然后发送到步骤1。这是一个预览网站。它显示最小值、最大值、范围和每个数字 第2步是发送到数据库(按submit)。此脚本在没有步骤实现的情况下运行顺利。但在设置了step系统之后,在将其发送到数据库之前,我不知何故丢失了数字数组和所有数据(步骤2不知何故没有得到步骤1的值)。范围可以高达2k值,很可能更小。我关心的是,是否有一种方法不让

让我先解释一下这个脚本是如何工作的。在步骤0中,我们输入数据(列表编号、最小值和最大值)。脚本对范围进行计数,并使用数值推送数组。(最小值+1,直到达到最大值)

然后发送到步骤1。这是一个预览网站。它显示最小值、最大值、范围和每个数字

第2步是发送到数据库(按submit)。此脚本在没有步骤实现的情况下运行顺利。但在设置了step系统之后,在将其发送到数据库之前,我不知何故丢失了数字数组和所有数据(步骤2不知何故没有得到步骤1的值)。范围可以高达2k值,很可能更小。我关心的是,是否有一种方法不让它们的值显示在url中,从而让它们进入其他步骤,因为这些数字每个都有24个数字,所以url可能非常长。你能和我分享一下如何修复它的想法吗?以及如何将步骤1的值检索到步骤2中(db发送)。谢谢


$(文档).ready(函数(){
$(“#低”).keydown(函数(事件){
if(event.keyCode==46 | | event.keyCode==8){
//让它发生吧,什么都不要做
}否则如果(event.keyCode<48 | | event.keyCode>57){
event.preventDefault();
}
var remainingChars=$(this).val().length;
如果(剩余字符==24){
$(this.attr('readonly','readonly');
}
});
$(“#高”).keydown(函数(事件){
if(event.keyCode==46 | | event.keyCode==8){
//让它发生吧,什么都不要做
}否则如果(event.keyCode<48 | | event.keyCode>57){
event.preventDefault();
}
var remainingChars=$(this).val().length;
如果(剩余字符==24){
$(this.attr('readonly','readonly');
}
});
$(“#ln”).keydown(函数(事件){
if(event.keyCode==46 | | event.keyCode==8){
//让它发生吧,什么都不要做
}否则如果(event.keyCode<48 | | event.keyCode>57){
event.preventDefault();
}
var remainingChars=$(this).val().length;
如果(剩余字符==24){
$(this.attr('readonly','readonly');
}
});
$(“#DueDate”).datepicker();
$(“#DueDate”).datepicker(“选项”、“日期格式”、“yy-mm-dd”+”+getCurrentTime());
函数getCurrentTime(){
var CurrentTime=“”;
试一试{
var CurrentDate=新日期();
var CurrentHours=CurrentDate.getHours();
var CurrentMinutes=CurrentDate.getMinutes();
CurrentTime=“+CurrentHours+”:“+CurrentMinutes+”;
}
捕获(ex){
}
返回时间;
}
});
最小值:
最大值:
范围:


Lp 数
范围列表生成器 设置 打开:
日期:
ID:
类型 优先级: 正常的 高
列表类型: K N
字母:
列表编号:



范围:

范围:


杀手代码画布,我怀疑最终会有人读到它你的意思是什么
<?PHP

  if (!defined("_VALID_PHP"))
      die('Direct access to this location is not allowed.');
    $db_handler = new PDO('mysql:host=localhost;dbname=proj2', 'root', '');
ini_set('memory_limit', '2000M');
ini_set('post_max_size', '600M');
ini_set('upload_max_filesize', '640M');
$step = 0;
$msg = array();
?>

<?php

if (isset($_GET['error'])) {
if($_GET['error']== 2){
 echo $core->msgError("<span>Alert!</span>List has over (2000) entries.",false); 
 }
if($_GET['error']== 1){
 echo $core->msgError("<span>Alert!</span>List already exists.",false); 
 }

 }

unset($_POST['submit']);
unset($sub_items);
unset($_POST['mainItem']);

?>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>
        <script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' type='text/javascript'></script>

    <script type="text/javascript">
    $(document).ready(function(){




            $("#low").keydown(function(event){
            if ( event.keyCode == 46 || event.keyCode == 8 ) {
                    // let it happen, don't do anything
            }else if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }
            var remainingChars = $(this).val().length;
            if (remainingChars == 24) {
                $(this).attr('readonly','readonly');
            }
        });
        $("#high").keydown(function(event){
            if ( event.keyCode == 46 || event.keyCode == 8 ) {
                    // let it happen, don't do anything
            }else if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }
            var remainingChars = $(this).val().length;
            if (remainingChars == 24) {
                $(this).attr('readonly','readonly');
            }
        });
        $("#ln").keydown(function(event){
            if ( event.keyCode == 46 || event.keyCode == 8 ) {
                    // let it happen, don't do anything
            }else if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }
            var remainingChars = $(this).val().length;
            if (remainingChars == 24) {
                $(this).attr('readonly','readonly');
            }
        });

    $("#DueDate").datepicker();
    $( "#DueDate" ).datepicker( "option", "dateFormat", "yy-mm-dd" + " " + getCurrentTime() );

function getCurrentTime() {
    var CurrentTime = "";
    try {
        var CurrentDate = new Date();
        var CurrentHours = CurrentDate.getHours();
        var CurrentMinutes = CurrentDate.getMinutes();

        CurrentTime = "" + CurrentHours + ":" + CurrentMinutes +"";
    }
    catch (ex) {
    }
    return CurrentTime;
}
    });



    </script>
    <?PHP if(isset($_POST['analizuj']) && $_POST['step']=='1'){
    if($_POST['high'] == NULL || $_POST['ln'] == NULL || $_POST['DueDate'] == NULL || $_POST['low'] == NULL){
header('location: index.php?do=bulkadd');
echo $core->msgError("<span>Alert!</span>Fields ListNumber,Range,Date cant be empty.",false);
}else{
        $liczba_a=$_POST['high'];
        $liczba_b=$_POST['low'];
        $numbers = array($liczba_a, $liczba_b);
        $min = min($numbers);
        $max = max($numbers);

        $a = round(bcsub($max, $min)).'<br>';
        $diffcap = round($a);

        if($a > 2000){ header('location: index.php?do=bulkadd&error=2'); exit();
        }else{
        $size=range(0,$diffcap);
        //$i = 0;
        $count = round($diffcap);

        $array= array();

        $i=0;
        foreach ($size as &$value) {
            array_push($array, preg_replace('/^([^.]*).*$/', '$1',bcadd($min, $i)));
            $i++;
        }
        if(count($array) > 2000){ header('location: index.php?do=bulkadd&error=2'); exit();}
        }
}


    ?>
      <form id="details" method="post" action="index.php?do=bulkadd">
      <table cellpadding="0" cellspacing="0" border="0" class="display" id="subitemsTbl">
      <thead>
        <tr>
            <th>Min Value : <?PHP echo $min; ?></th>
            <th>Max Value : <?PHP echo $max; ?></th>
        </tr>
    </thead>
    <tbody>
    <tr cellpadding="2"><td><strong>Range :</strong> <?PHP echo $a; ?></td></tr>

    </tbody>

    </table>
    <br>
    <br>
    <table cellpadding="0" cellspacing="0" border="0" class="display" id="subitemsTbl">
    <thead>
        <tr>
            <th>Lp</th>
            <th>Number</th>
        </tr>
    </thead>
    <tr cellpadding="2"><td><input type="submit" value="Send to Db" name="licz" class="button-sml"/>
    <input type="hidden" name="step" value="2" /></td></tr>
    <br>
    <tbody id="body">
    <?PHP
    $fakeid=1;
    foreach($array as $key=>$value) 
    { 
    unset($array[$key + 1]); 
    // Note that there is no $b here.
    echo '<tr id="rowNum'.$fakeid.'"><th>'.$fakeid.'</th><td><input class="inputbox-sml" type="text" name="subItem[]" readonly="readonly" value="'.$value.'" size="24" style="width:210px;"></td></tr>';
    $fakeid++;
    }
    ?>
    </tbody>
</table>


<?PHP }else{ ?>
<div id="wrap">
<h1>Range List Generator</h1>
    <form id="details" method="post" action="index.php?do=bulkadd">
    <fieldset>
    <legend>Set</legend>
              <strong>On : </strong>&nbsp;&nbsp;
          <select name="forwho" style="width:180px">
         <?PHP
                  $sql = 'SELECT id, name, surname FROM customers ORDER BY name';
                 foreach ($db_handler->query($sql) as $row) {
                    echo "<option value='".$row['id']."'>".$row['name'] ." ".$row['surname']. "</option>";
                  }
            ?> 
          </select>
          <br>
          <strong>Date :</strong> <input id="DueDate" name="DueDate" style="font-size: 12px;" type="text"  class="inputbox-sml"/><br>
          <strong>ID :</strong> <?PHP echo $user->getID(); ?></fieldset><br>
          <fieldset>
            <legend>Type</legend>
          <strong>Prority : </strong>&nbsp;&nbsp;
          <select name="priority" style="width:180px">
            <option value="0">Normal</option>
            <option value="1">High</option>
          </select><br>
          <strong>List Type :</strong>&nbsp;&nbsp;
          <select name="type" style="width:180px">
            <option value="1">K</option>
            <option value="0">N</option>
          </select><br>
          <strong>Letters : </strong><input type="text" name="letters" id="letters" maxlength="4" class="inputbox-sml"/>
    </fieldset><br>
    <strong>List Number: </strong><input type="text" name="ln" id="ln" maxlength="24" class="inputbox-sml" style="width:210px;"/><br/><br/>
    <hr><br>
    <strong>Range : </strong><input type="text" name="high" id="high" maxlength="24" class="inputbox-sml" style="width:210px;"/><br/><br/>
    <strong>Range : </strong> <input type="text" name="low" id="low" maxlength="24" class="inputbox-sml" style="width:210px;"/><br/><br/>
    <input type="submit" value="Analizuj" name="analizuj" class="button-sml"/>
    <input type="hidden" name="step" value="1" />
    <!-- OLD TABLE START -->
    </form>
</div>


<?php

}
if (isset($_POST['licz']) && $_POST['step']=='2') {
if($_POST['high'] == NULL || $_POST['ln'] == NULL || $_POST['DueDate'] == NULL || $_POST['low'] == NULL){
header('location: index.php?do=bulkadd');
echo $core->msgError("<span>Alert!</span>Can't be empty.",false);
}else{
        $liczba_a=$_POST['high'];
        $liczba_b=$_POST['low'];
        $numbers = array($liczba_a, $liczba_b);
        $min = min($numbers);
        $max = max($numbers);

        $a = round(bcsub($max, $min)).'<br>';
        $diffcap = round($a);
        //secure 1
        if($a > 2000){ header('location: index.php?do=bulkadd&error=2'); exit();
        }else{
        $size=range(0,$diffcap);
        //$i = 0;
        $count = round($diffcap);

        $array= array();

        $i=0;
        foreach ($size as &$value) {
            array_push($array, preg_replace('/^([^.]*).*$/', '$1',bcadd($min, $i)));
            $i++;
        }
        if(count($array) > 2000){ header('location: index.php?do=bulkadd&error=2'); exit();}
        }
}
        //Handle main item already exists error
    try {
        $stmt = $db_handler->prepare('SELECT * FROM listy WHERE number=?');
        $stmt->bindValue(1, $_POST['ln'], PDO::PARAM_STR);
        $stmt->execute();
        $row_count = $stmt->rowCount();
        if($row_count > 0){ header('location: index.php?do=bulkadd&error=1'); exit();}
    } catch(PDOException $ex) {
        die($ex->getMessage());
    }

    try {
        $stmt = $db_handler->prepare('INSERT INTO listy (number,letters,forwho,bywho,prority,type,created) VALUES(?,?,?,?,?,?,?)');
        $stmt->bindValue(1, $_POST['ln'], PDO::PARAM_STR);
        $stmt->bindValue(2, $_POST['letters'], PDO::PARAM_INT);
        $stmt->bindValue(3, $_POST['forwho'], PDO::PARAM_INT);
        $stmt->bindValue(4, $user->getID(), PDO::PARAM_INT);
        $stmt->bindValue(5, $_POST['priority'], PDO::PARAM_INT);
        $stmt->bindValue(6, $_POST['type'], PDO::PARAM_INT);
        $stmt->bindValue(7, $_POST['DueDate'], PDO::PARAM_STR);
        $stmt->execute();
    } catch(PDOException $ex) {
        die($ex->getMessage());
    }


    //Insert loop
    $mainRowId = 0;
    $mainRowId = $db_handler->lastInsertId(); 
    $sub_items = array_unique($array);
    //print_r($_POST);
    //print_r($sub_items);
    foreach($sub_items as $this_sub){
    //echo $this_sub;
        try {
            $stmt = $db_handler->prepare('INSERT INTO numbers (`list_id`,`number`,`return`,`date`) VALUES(?,?,?,?)');
            $stmt->bindValue(1, $mainRowId, PDO::PARAM_INT);
            $stmt->bindValue(2, $this_sub, PDO::PARAM_STR);
            $stmt->bindValue(3, 0, PDO::PARAM_INT);
            $stmt->bindValue(4, $_POST['DueDate'], PDO::PARAM_STR);
            $stmt->execute();

            $subRowId = 0;
            $subRowId = $db_handler->lastInsertId(); 
            $stmt = $db_handler->prepare('INSERT INTO list_has_number (`list_id`,`number_id`) VALUES(?,?)');
            $stmt->bindValue(1, $mainRowId, PDO::PARAM_INT);
            $stmt->bindValue(2, $subRowId, PDO::PARAM_INT);
            $stmt->execute();

        } catch(PDOException $ex) {
            die($ex->getMessage());
        }
    }

        //
        //while ($i < $count) {
        //   echo 'array '.$b = bcadd($liczba_a, $i).'<br>';
        //   array_push($array, $b);
        //   ++$i;
        //}
        //var_dump($array);


} else {
       echo "Error";
}

?>