我正在开发一个简单的基于平面文件数据库的折扣代码系统。所以用户可以进入结账页面,他们可以输入一个给定的代码,与该代码相关的金额将从购物车的最终价值中扣除。
没什么复杂的。我可以进行演绎等但是我很困惑,因为我使用的是平面文件数据库,如果像SELECT, WHERE clause
等这样的东西在平面文件数据库中工作,我就不知道了。
因此,我无法将折扣代码与其扣除金额联系起来。
这是我到目前为止所拥有的:
if (isset($_POST['disCode'])) {
$disCode = $_POST['disCode'];
$arr=file("FlatFile1.txt");
foreach($arr as $str)
{
list($code,$amount)=explode("|",$str);
}
$Total = $Total - $disCode;
}
正如您在上面的代码中看到的那样,我使用$Total = $Total - $disCode;
,所以如果我输入一个数字(示例10或5或任何其他数字),并提交表单,它将取消(扣除)来自$Total
的金额。
但我需要使用从$code
文件中提取的FlatFile1.txt
,然后从$amount
中扣除与$code
相关的$Total
。
平面文件结构如下:
RFHSEP34 | 20
RETBBHUJ | 10
TYRHBNNM | 5
第一部分是$code
将提供给用户,而|
之后的第二部分是$amount
将从$Total
中扣除的是输入$ code。
有人可以就此提出建议吗?
由于
编辑:
我已将我的代码编辑为以下内容。我接近我想要的东西但是输入字段(disCode)中输入的内容并不重要,我总是从$amount
中扣除最后一个折扣代码的$Total
! p>
$arr=file("flatFile1.txt");
foreach($arr as $str)
{
list($code,$amount)=explode("|",$str);
}
if (isset($_POST['disCode'])) {
$disCode = $_POST['disCode'];
if ($disCode = $code)
{
$fDis = $amount;
$Total = $Total - $fDis;
}
}
有关于此的任何想法吗?
要重新生成我的问题,您可以创建.txt文件并将其命名为flatFile1.txt
。然后在该文件中使用上面的平面文件代码。然后创建一个简单的php页面,其中包含我的最后一个代码。最后在同一个.php页面上创建一个名为disCode
的输入字段和简单提交按钮的简单表单。
对于$Total
的值,您只需使用以下内容:
$Total = 50;
或$Total = '50';
我希望这有助于您了解问题并帮助我解决问题:)
第二次和最后一次编辑:
这种简单的功能花了太长时间没有用,所以如果我无法得到最终编辑的答案,我想我会放弃它。
无论如何,我会从我的php页面粘贴整个代码,这样就不会有任何混淆!
<?php
$Total = 500;
$arr=file("flatFile1.txt");
foreach($arr as $str){
list($code,$amount)=explode("|",$str);
}
if (isset($_POST['disCode'])) {
$disCode = $_POST['disCode'];
if ($disCode == $code)
{
$Total -= $amount;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div id="disDiv"><form action="carttest" method="post">
<input type="text" name="disCode"/><br /><br />
<input TYPE="image" SRC="discountBtn.png"
BORDER="0" name="discountCode" id="disCount" class="disCount" /></form></div><br />
<?php echo $Total; ?>
</body>
</html>
上面的代码根本不起作用。这意味着它不会从$amount
中扣除$Total
。
但是,如果我将if ($disCode == $code)
更改为if ($disCode = $code)
,它会扣除 flatFile.txt 中的最后一个$amount
而不在disCode输入字段中输入任何内容。所以我只需要提交表格,金额将被推断出来,这不是我想要的。
有什么建议吗?
提前致谢
答案 0 :(得分:0)
试试这个:
$discount = 0; //set initial discount as zero
foreach($arr as $str)
{
list($code[],$amount[])=explode("|",$str); //$code & $amount should be array
}
for($i=0;$i<sizeof($code);$i++){
if (trim(strtoupper($code[$i]))==trim(strtoupper($disCode))){
$discount=$amount[$i]; //Found
}
}
$Total = $Total - $discount;
答案 1 :(得分:0)
如果我正确理解你,这应该有效:
<?php
$Total = 500;
if (isset($_POST['disCode'])) {
$arr = file('flatfile1.txt');
$disCode = strtoupper(trim($_POST['disCode']));
$found = false;
foreach($arr as $str)
{
// Skip empty or invalid lines (assuming your file flatfile1.txt has blank lines).
if (strpos($str, '|') === false)
continue;
list($code,$amount) = explode('|',$str);
if ($disCode === trim($code))
{
// Code found.
$Total -= $amount;
$found = true;
break;
}
}
if (!$found)
echo "Code $disCode not found.";
else
echo "Discounted total: $Total (discount: $amount).";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div id="disDiv"><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="disCode"/><br /><br />
<input TYPE="image" SRC="discountBtn.png"
BORDER="0" name="discountCode" id="disCount" class="disCount" /></form></div><br />
<?php echo "Total: $Total"; ?>
</body>
</html>
如上所述,如果您的代码具有固定长度,则可以限制输入框中的最大字符数。