大致要求是这样的,用PHP做一个小系统,用户提交订单然后post到系统,存储到txt文本文件里面。
每个订单是一行单独保存,为了方便索引,要定义第一个为订单编号,要求订单编号是唯一的,
要怎么样才可以做到这个功能呢?其文本文件的内容大约是这个样子:
B0003  SSS  Great Park  Feb  29  2004
B0004    EAST    China     May     20      2011后面的功能已经可以全部实现,我也可以做到输入B0003就搜索到相应的订单条目并显示
但是问题是用户输入订单的时候,怎么样才可以保持订单编号格式和保持其唯一性呢?
B0003 B0004之类都是用txt文本框输入文本。输入订单页面代码:只是用html处理
------------------<body>
<h1>Booking System</h1>
<hr /><form action="signguestbook.php" method="post">
<p> <label for="booking_code">Booking Code(required): </label>
<input type="text" name="booking_code" id="booking_code" />
</p>

        <p> <input type="submit" value="Submit Booking" />
    <input type="reset" value = "reset"/>
</p>

</form>
<p><a href="showguestbook.php">Show Guest Book</a></p>
</body>-------------------
处理订单录入txt的代码,用php创建文本文件并写入
<?php
$booking_code = $_POST["booking_code"];  
$bookings = fopen($path. "/bookings.txt", "a");
fwrite($bookings, $booking_code ."\t ". $type .  "\r\n"))
fclose($bookings);
?>
-----------------------
我是用strstr函数来查找订单编号的
输入查找的页面代码:<body>
<h1>Booking Search System</h1>
<hr /><form action="showguestbook.php" method="post">

<p> <label for="search">Booking Code: </label>
<input type="text" name="search" id="search" />
</p>

<p> <input type="submit" value="View Booking" />
    <input type="reset" value = "reset"/>
</p>

</form>
<p><a href="booking.php">Star Day Tour Booking</a></p>
</body>----------------
处理查询的PHP代码
<?php
$guestBook = "../data/bookings.txt";
$search = $_POST["search"];
$guestArray = file($guestBook);
for ($i = 0; $i < count($guestArray); $i++) {
echo strstr($ga,$search); //我用strstr功能来查找相应的字符串,然后输出整行内容
}
?>

解决方案 »

  1.   

    今天论坛错误,大家都没有看到吗?
    我想如果在订单提交页面做一个输入验证可以吗?
    先验证订单号码再post,每次自己加一,不过是文本就不知道怎么样加了。
      

  2.   

    貌似题目就是要求这个字段为uniqid的,但是请给些例子好吗?
    我是新手刚刚学PHP,连有什么函数都不清楚啊,谢谢。
      

  3.   


    uniqid(prefix,more_entropy)prefix  可选。为 ID 规定前缀。如果两个脚本在相同的微妙生成 ID,该参数很有用。
    more_entropy  可选。规定位于返回值末尾的更多的熵。//==============
    fwrite($bookings,uniqid('B').' '.$booking_code ."\t ". $type .  "\r\n"))
      

  4.   

    问题是 uniqid 产生的编号格式 适合你用嘛...不过作业嘛,能交了就OK了
      

  5.   

    我用了这个之后又出现新问题,譬如B0001输入是变成了独一无二的数字,
    但是我是靠这个B0001来实现搜索功能的啊,B0001变成了一串数字,却无法搜索了。<?php
    $booking_code = $_POST["booking_code"];  
    $booking_code = uniqid();  //这个是我加入的地方,是可以改变,但是却无法保存原来的B0001了
    $bookings = fopen($path. "/bookings.txt", "a");
    fwrite($bookings, $booking_code ."\t ". $type .  "\r\n"))
    fclose($bookings);
    ?>
      

  6.   

    就是变了新格式,我不能使用了啊,要以B0001这样的格式存储啊,而且搜索功能我是用strstr函数
    也需要B0001这样的格式啊。
      

  7.   

    这样吧 ID 怎么产生我给你写了 自己用吧 别什么都现成。Cf 的作用是得到文本文件的总行数,也就是你有几条记录这个数字就是几.其他的怎么组合自己加油。
    但是你得考虑删除数据的问题,因为是根据行数产生的,所以如果删除了数据那么就有可能产生重复的
    编号.
    $id= 'B'.sprintf('%04d',cf('110.php'));
    echo $id; //B0006function Cf($Fname){
    $fp=fopen(trim($Fname),"r");
    while(!FEOF($fp))
    {
    $Arr[]=fgets($fp,4096);
    }
    return count($Arr);
    }
      

  8.   

    楼上的这个可能有删行的风险,非要说风险的话,您老直接搞DB就完事了,
    简单点,建一个文件来做自增,取里面的值补全做ID,写好加1 多线程需加锁