没有SQL的简单PHP购物车

没有SQL的简单PHP购物车,php,Php,我正在尝试创建一个简单的PHP购物车,其中包含价格、产品、注册和结账区。我在谷歌上搜索过教程,但所有教程都包含了SQL,这还不在我的技能范围之内。任何人有任何例子或其他教程资源,你可以参考PHP新手 再次尝试创建简单的PHP购物车(无SQL),使用产品数组、各种程序任务的函数、表单验证、购物车连续性的cookie/会话、模板文件和确认/接收电子邮件 提前感谢您的帮助 快速谷歌搜索发现: 在大多数基本的购物车示例中,SQL可能会转换为保存在全局或会话变量中的数组。也许不是制作真正购物车的最佳方式

我正在尝试创建一个简单的PHP购物车,其中包含价格、产品、注册和结账区。我在谷歌上搜索过教程,但所有教程都包含了SQL,这还不在我的技能范围之内。任何人有任何例子或其他教程资源,你可以参考PHP新手

再次尝试创建简单的PHP购物车(无SQL),使用产品数组、各种程序任务的函数、表单验证、购物车连续性的cookie/会话、模板文件和确认/接收电子邮件

提前感谢您的帮助

快速谷歌搜索发现:

在大多数基本的购物车示例中,SQL可能会转换为保存在全局或会话变量中的数组。也许不是制作真正购物车的最佳方式,但可能值得一玩


我认为一个基本的购物车,看看你是否可以有一个购物车和添加/删除产品,这可能是好的,但一旦你开始想要用户注册/添加/编辑/删除产品等。,使用数据库将有助于简化工作。

从您的问题来看,您似乎对SQL是什么以及PHP数组提供了什么有一个基本的误解

这里的关键词真的是“坚持”。您希望如何保存有关客户和交易的数据?您不能简单地填充一个PHP数组,并期望这些数据在以后需要时保留下来。您必须以某种方式将此数据持久化到磁盘。根本无法回避这个事实

在将数据持久化到磁盘上时,有一些不同的选项

文件系统

PHP提供了多种用于文件系统的函数。您可以创建一个使用平面文本文件作为持久性手段的购物车。如果您走这条路,实现这一点的问题可能会比简单地学习SQL要多

NoSQL数据库

PHP支持这样的文档数据库,而不使用SQL进行交互和存储。最终,您可能还需要学习如何访问该数据库,尽管它非常类似于JavaScript

SQL数据库

当然,PHP提供了传统的SQL数据库支持



无论哪种方式,你都必须学习新的东西,根本没有办法。真正的问题是你最重视学习什么?我肯定会推动您学习SQL。它对您来说将是无价的,一旦您学会了如何使用数据库存储数据,它将最终使您的开发项目变得更加容易。

与其批评,为什么不帮助呢?虚伪,但不管怎样。 请记住,如果没有SQL数据库,您无法“注册”,但您可以拥有预制用户名和密码

因此,让我们用php创建您的伪sql数据库

我们需要一个表来存储用户名和密码,以便登录

<?php
    //name this "users.php"
    //Keep in mind, this method does not secure your passwords... in fact, their so visible that you shouldn't ever use this method to store passwords. EVER. i'm just using to because i'm cool like that.
    //we'll name this "accounts", and make it a 2D array
    $accounts = array (
        array("username" => "username 1", "password" => "my password!"),
        array("username" => "username 2", "password" => "weeeeeee"),
        array("username" => "username 3", "password" => "aidsfijasjdfiawe"),
        array("username" => "rex", "password" => "asdfajweiogjr"),
        array("username" => "Kodlee Yin", "password" => "ghreoghrueagre")
    );
    //you get the point. Username goes into username, password into password. Create more for more users etc.
?>

现在我们需要一张桌子来存放产品

<?php
    //name this "products.php"
    $products = array (
        array("name" => "Whoop-ass", "price" => "9.99", "description" => "Its a can of whoop-ass"),
        array("name" => "Mouse", "price" => "54.95", "description" => "No, it's not real. It's a gaming mouse. 9200 DPI"),
        array("name" => "iPad", "price" => "Too expensive", "description" => "Something you never need, but something you want"),
        array("name" => "Stack Overflow", "price" => "9001.00", "description" => "The best website in the world."),
        array("name" => "Generic item 5", "price" => "4.99", "description" => "It says 4.99, but deep in your heart, you know its really 5 dollars.")
    );
?>

为什么不学习SQL呢?事实上,这比编写一个没有DB的可用购物车(即使是一个简单的购物车)要容易得多。不要在缺乏技能的基础上实施解决方案,要么自己学习,要么聘请顾问开始。你可能还想研究开源电子商务解决方案。去学习SQL并使用合适的工具来完成这项工作。我完全同意你们所有人的观点,SQL是我将学习的下一门课程/主题。但是为了我当前的PHP项目,我必须只使用PHP创建上述购物车。显然,我很难弄明白这一点,所以我希望能找到一些替代教程,因为我在谷歌上找到的都是PHP/MySQL购物车。如果有人有任何PHP的购物车参考,将不胜感激。并感谢大家花时间回答我的问题!我真的很感激。谢谢你的参考a1210!你真了不起,李寅!哇,非常感谢你的帮助。今天我将坐下来研究您的代码,尝试将其合并到我已经开始的代码中。幸运的是,我有一个内部服务器/编程环境设置,可以使用XAMPP/Aptana解析PHP,但是感谢您在您的服务器上托管这个示例!!如果我有任何问题,我一定会写信给你的电子邮件地址。再次感谢您的慷慨帮助!!!
<?php
    //name this file "index.php"

    //now keep in mind. I'm not going to fancy this up, so it's gonna look pretty ugly.
    //i'm also going to use javascript and jQuery (a javascript library) because I love the two. :)

    //lets name and start a session
    session_name("rexthing");
    session_start();

    //this string is arbitrary, but i like it for debugging
    $errorqueue = '';

    //we need to add our login details and products!
    include("users.php");
    include("products.php");

    //now in a normal php application of logging in or handling of login requests, i don't suggest doing this, but this is quick and easy(ish)
    $action = (isset($_GET['action'])) ? $_GET['action']: ""; //Ternary operator asking if there is an inputted action
    switch($action)
    {
        case "login":
            if(isset($_SESSION['username'])) //check if we're already logged in
            {
                $errorqueue['Login'] = "We've already logged in!";
            } else {
                $errorqueue['login'] = "Invalid username/password";
                $username = (isset($_POST['username'])) ? $_POST['username']: ""; //check if there is a username supplied, if not then leave it blank
                $password = (isset($_POST['password'])) ? $_POST['password']: ""; //check for password
                foreach($accounts as $value) //this is our login attempt
                {
                    if(($username == $value['username']) && ($password == $value['password']))
                    {
                        //please please please, never ever use this as a real login validation method!!! I'm just using it because i'm doing this quickly!
                        $_SESSION['username'] = $username;
                        $_SESSION['cart'] = ''; //this is our cart for the user this session
                        unset($errorqueue['login']);
                    }
                }
            }
            break;
        case "logout":
            session_unset(); //deletes all session variables/cookies
            break;
        case "additem":
            //this is a quick and dirty way to make a cart! plz if you're ever going to make a cart... don't do this!
            $itemid = (isset($_GET['itemid'])) ? $_GET['itemid']: "";
            if($itemid != "")
            {
                if($_SESSION['cart'] == "")
                {
                    $_SESSION['cart'] = array($products[$itemid]);
                } else {
                    array_push($_SESSION['cart'], $products[$itemid]);
                }
            }
            break;
        case "clearcart":
            $_SESSION['cart'] = "";
            break;
    }

    //we can now dynamically load our data knowing if we're logged in or not.
    //I'll even throw in some neat little effects because i'm bored
    echo <<<DISP
    <html>
        <!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">
        <meta http-equiv="X-UA-Compatible" content="IE=9" />
        <head>
            <title>Rex's awesome thing</title>

            <script type="text/javascript" language="javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> </script>
            <script type="text/javascript" language="javascript">
                $(function() {
                    $('.button').mouseover(function() {
                        $(this).animate({opacity:1},200);
                    })
                    .mouseleave(function() {
                        $(this).animate({opacity:.6},200);
                    });
                    $('#login_button').click(function() {
                        $('#login_form').submit();
                    });
                    $('.disp_item').click(function() {
                        var itemid = $(this).attr("id");
                        var location = "index.php?action=additem&itemid="+itemid;
                        window.location.href = location;
                    });
                    $('.disp_item').mouseover(function() {
                        $(this).css("background-color","#CCC");
                    })
                    .mouseleave(function() {
                        $(this).css("background-color","transparent");
                    });
                    $('#clearcart').click(function() {
                        window.location.href= "index.php?action=clearcart";
                    });
                });
            </script>

            <style type="text/css">
                body {
                    background-color:#000;
                    -moz-user-select: -moz-none;
                    -khtml-user-select: none;
                    -webkit-user-select: none;
                    user-select: none;
                    min-width:1000px;
                }
                #wrapper {
                    position:absolute;
                    top:10px;
                    right:50px;
                    left:50px;
                    min-height:500px;
                    background-color:#333;
                    border-radius: 15px;
                    padding: 10px 20px;
                }
                .button {
                    display:inline-block;
                    padding: 2px 20px;
                    background-color:#FFF;
                    border: 1px solid #999;
                    opacity:.6;
                    cursor:pointer;
                    border-radius:7px;
                }
                #logout {
                    color:#FFF;
                }
                .lololol {
                    display:inline-block;
                    width:150px;
                }
                .di_desc {
                    width:600px !important;
                }
                .disp_item {
                    cursor:pointer;
                }
            </style>
        </head>
        <body>
        <div id="wrapper">
DISP;
//the "DISP;" line must be on the far left with nothing after it. don't ask why. It just must.


        //now check to see if we're logged in or not
        if(isset($_SESSION['username'])) //now i'm using the true/false return of the "isset" function to determine if we've set (logged in) this variable
        {
            //yes we're logged in! lets show some stuff!
            $dUsername = $_SESSION['username'];

            echo <<<DISP
            Welcome $dUsername!<br />
            It's nice to see you back! <br />
            Click <a href="index.php?action=logout" id="logout">here</a> to logout!<br />
            <br />
DISP;
//this disp, same as above
            //lets display the stuff we have in our cart already
            echo "Stuff we have in our cart:<br />\n";
            $cart_total = 0;
            if($_SESSION['cart'] != '') {
            foreach($_SESSION['cart'] as $key => $value)
            {
                $cart_total = $cart_total + $value['price'];
                $name = $value['name'];
                $price = $value['price'];
                $desc = $value['description'];
                echo <<<DISP
                <div class="ahahahaha">
                    <span class="di_name lololol">$name</span>
                    <span class="di_price lololol">\$$price</span>
                    <span class="di_desc lololol">$desc</span>
                </div>
DISP;
            } }
            echo "Cart total: $".$cart_total;
            echo '<br /><span class="button" id="clearcart">Clear Cart</span>';
            echo "<br /> <br/>\n"; //some space
            //lets display stuff not in our cart
            echo "Click an item to add it to your cart:<br />\n";
            foreach($products as $key => $value)
            {
                $name = $value['name'];
                $price = $value['price'];
                $desc = $value['description'];
                echo <<<DISP
                <div id="$key" class="disp_item">
                    <span class="di_name lololol">$name</span>
                    <span class="di_price lololol">\$$price</span>
                    <span class="di_desc lololol">$desc</span>
                </div>
DISP;
//you know the drill...
            }
        } else { //isset if
            //no we're not logged in, show our login form
            echo <<<HAHA
            <form method="post" action="index.php?action=login" id="login_form">
            Username:<br />
            <input type="text" placeholder="Username" name="username" id="login_username" /><br />
            <br />
            Password:<br />
            <input type="password" placeholder="Password" name="password" id="login_password" /><br />
            <br />
            </form>
            <span class="button" id="login_button">Login</span>
HAHA;
//the "HAHA;" line must be on the far left.
        } //isset if

        //show our errors
        echo "<br /> <br />\n";
        if($errorqueue != "") {
        foreach($errorqueue as $key => $value)
        {
            echo $key . " error: " . $value . "! <br />\n";
        }}
        echo <<<FINI
        </div>
    </body>
</html>
FINI;
?>