用PHP折扣代码系统?

时间:2014-06-29 15:24:27

标签: php

我正在开发一个简单的基于平面文件数据库的折扣代码系统。所以用户可以进入结账页面,他们可以输入一个给定的代码,与该代码相关的金额将从购物车的最终价值中扣除。

没什么复杂的。

我可以进行演绎等但是我很困惑,因为我使用的是平面文件数据库,如果像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输入字段中输入任何内容。所以我只需要提交表格,金额将被推断出来,这不是我想要的。

有什么建议吗?

提前致谢

2 个答案:

答案 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>

如上所述,如果您的代码具有固定长度,则可以限制输入框中的最大字符数。