html表单:auto_increment字段

时间:2015-08-25 03:30:37

标签: php html forms

我目前正在制作一个简单的票务系统。 我从一个简单的表单开始,用户将生成tripticket。 我遇到的一个问题是我想要#34;票#"字段具有基于下一个递增数字的默认值。为了更清楚,例如我生成了第一张旅行票(" 1")并已经提交它以保存到数据库..当用户生成另一个tripticket时,表单必须显示& #34;门票#"字段的默认值为" 2"。

目前这是我在html中的全部内容,

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
<table border=0 width="500" cellspacing=1 cellpadding=3 bgcolor="#353535" align="center">
    <tr>
    <td bgcolor="#ffffff" colspan=2 align="center">
        <span class="error">* required field.</span>
    </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">TT ref #:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="CONTRACT" size="10" maxlength="9" value="<?php echo $_SESSION['CONTRACT']; ?>" disabled>
   <span class="error"><?php echo $contractErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Date of Usage:</td> <td bgcolor="#ffffff" width="70%"><input type="date" name="FNAME" value="<?php if(isset($_POST['FNAME'])){echo $_POST['FNAME'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $fnameErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Vehicle number:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="MNAME" value="<?php if(isset($_POST['MNAME'])){echo $_POST['MNAME'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $mnameErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Employee ID:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="LNAME" value="<?php if(isset($_POST['LNAME'])){echo $_POST['LNAME'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $lnameErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Destination:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="NUMBER" value="<?php if(isset($_POST['NUMBER'])){echo $_POST['NUMBER'];} ?>" size="15" maxlength="20">
   <span class="error"><?php echo $numberErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Purpose:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="EMAIL" value="<?php if(isset($_POST['EMAIL'])){echo $_POST['EMAIL'];} ?>" size="15" maxlength="20"></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Status:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="USERNAME" value="<?php if(isset($_POST['USERNAME'])){echo $_POST['USERNAME'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $usernameErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Last update:</td> <td bgcol    or="#ffffff" width="70%"><input type="text" name="PASSWORD" value="<?php if(isset($_POST['PASSWORD'])){echo $_POST['PASSWORD'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $passwordErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Created by:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="PASSWORD" value="<?php if(isset($_POST['PASSWORD'])){echo $_POST['PASSWORD'];} ?>" size="15" maxlength="20">
   <span class="error">*<?php echo $passwordErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Generation Date:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="PASSWORD" value="<?php echo date('Y/m/d'); ?>" size="15" maxlength="20" disabled>
   <span class="error">*<?php echo $passwordErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Issued by:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="PASSWORD" size="15" maxlength="20">
   <span class="error">*<?php echo $passwordErr;?></span></td>
   </tr>

   <tr>
   <td bgcolor="#ffffff" width="30%">Approved by:</td> <td bgcolor="#ffffff" width="70%"><input type="text" name="PASSWORD" size="15" maxlength="20">
   <span class="error">*<?php echo $passwordErr;?></span></td>
   </tr>

   <tr>
    <td bgcolor="#ffffff" colspan=2 align="center">
        <INPUT type="submit" name="submit" value="Submit">
        <INPUT type="RESET" name="RESET" value="Clear"></td>
    </tr>

</form>
</body>
</html>

请忽略表单名称,因为尚未编辑。 如果您需要更多说明,我很高兴为您提供启发。 任何想法或建议都非常感谢。

非常感谢!!

2 个答案:

答案 0 :(得分:1)

尝试

mysql_insert_id (deprecated and  not recommended)

http://php.net/manual/en/function.mysql-insert-id.php

if you're using mysqli, then

mysqli_insert_id()

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

if you're using PDO [recommended], then

 PDO::lastInsertId()

http://php.net/manual/en/pdo.lastinsertid.php

OR

尝试使用

进行查询
last_insert_id()
SELECT LAST_INSERT_ID();

手动提供增量

=============================================== ==========

如果您想在提交前获取, 从表中获取最大ID,或者将last_inserted_id保存在某处并在此处使用

OR

当我对特定的自动增量值有这个要求时,我很久以前用mysql函数做了类似的事情......(当有可能从表中删除max_id时可以使用它)

$sql  = "SHOW TABLE STATUS LIKE 'table_name'";
$res  = mysql_query($sql) or die(mysql_error());
$row  = mysql_fetch_assoc($res);
return  $row['Auto_increment'];

不推荐使用mysql函数,不推荐使用,所以请在mysqli或PDO中相应地转换它!

答案 1 :(得分:1)

这真是一个糟糕的方法。想想如果超过1个用户尝试使用此表单创建旅行机票会发生什么。他们都将从数据库中看到相同的auto_id。只有提交表单的第一个用户才能获得表单中显示的实际值。

更好的方法是不显示id。让用户在不知道ID的情况下提交表单。提交表单后,mysql会将自动ID与此票证相关联。然后,您可以使用mysql_insert_id获取此id并将其显示给用户。