2011-12-21 7 views
2

価格、製品、登録、およびチェックアウトエリアを持つシンプルなPHPショッピングカートを作成しようとしています。 Googleでチュートリアルを検索しましたが、それらのすべてにまだ自分のスキルに含まれていないSQLが組み込まれています。誰でもPHPの初心者を参照できるサンプルや他のチュートリアルのリソースがありますか?シンプルなPHPショッピングカート(SQLなし)

また、製品の配列、さまざまなプログラムタスクの機能、フォームの検証、カートの連続性、テンプレートファイル、確認/受信メールのクッキー/セッションを使用して簡単なPHPショッピングカート(SQLなし)を作成しようとしています。

ありがとうございました!見つかっ

+2

なぜドン代わりにSQLを学ぶのですか?実際には、DBなしで使用可能なショッピングカート(単純なものでも)を書くよりも簡単です。 –

+1

悲しいことに何が言った。スキルセットの欠如に基づいてソリューションを実装しないでください。自分でそれを学ぶか、コンサルタントを雇って始めましょう。オープンソースのeコマースソリューションを調べることもできます。 –

+0

SQLを学習し、そのジョブに適切なツールを使用してください。 – Kenaniah

答えて

0

クイックグーグル:SQLはおそらく配列に変換することができる最も基本的なショッピングカートの例では http://www.webforcecart.com/

は、グローバルまたはセッション変数に保管しました。おそらく、実際のショッピングカートを作る最良の方法ではありませんが、楽しみの価値があるかもしれませんか?

カートを持ち、商品を追加/削除することができるかどうかを確認する基本的なカートだと思うが、ユーザー登録/追加/編集/削除などが必要な場合は、人生が楽になります。

+0

参考にしていただきありがとうございますa1210! – rex

2

あなたの質問からは、SQLの内容とPHP配列の基本的な誤解があるようです。

キーワードは実際には「持続性」です。顧客や取引に関するデータをどのように保存したいのですか?単にPHP配列を生成して、後で必要なときにこのデータを覚えておくことはできません。 は、このデータを何らかの形でディスクに保存する必要があります。この事実を回避することは単にありません。

データをディスクに永続化するには、いくつかのオプションがあります。

ファイルシステム

http://php.net/manual/en/book.filesystem.php

PHPはファイルシステムで動作するようにさまざまな機能を提供します。永続性の手段としてフラットなテキストファイルを使用するショッピングカートを作成することができます。おそらく、SQLを学んだだけの場合よりも、これを実装する上でより多くの問題があるでしょう。

のNoSQLデータベース

http://php.net/manual/en/class.mongodb.php

PHPは相互作用し、ストレージにSQLを使用していないMongoDBのような文書データベースをサポートしています。結局のところ、このデータベースにアクセスする方法を学ぶ必要がありますが、それはJavaScriptに非常に似ています。

SQLデータベース

http://www.php.net/manual/en/book.mysqli.php

そしてもちろん、PHPは、従来のSQLデータベースのサポートを提供します。あなたはになります


いずれかの方法は、周りに方法は、単に存在しない、何か新しい学びます。本当の疑問は、あなたが最も学ぶことを大切にしていることですか?私は間違いなくSQLの学習にあなたをプッシュします。それは貴重なものになり、データを格納するためにデータベースを使用する方法を学ぶと、最終的には開発プロジェクトをより簡単にすることができます。

+0

私はあなた方全員に完全に同意します.SQLは私が学ぶ次のコース/トピックです。しかし、私の現在のPHPプロジェクトのために、PHPを使用して上記のショッピングカートを作成する必要があります。明らかに私はこれを理解するのに苦労しているので、私はGoogleのPHP/MySQLショッピングカートで見つかったすべてのチュートリアルを見つけることができることを願っていました。誰かがPHPだけの買い物カゴの参照を持っている場合、それは非常に高く評価されるだろう。 – rex

+0

そして、私の質問に答える時間をとってくれてありがとう!ほんとうにありがとう。 – rex

6

批判するのではなく、ただ助けてみませんか?偽善的だが、何でも。 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.") 
    ); 
?> 

を格納するテーブルを必要としています。 ここでは、この情報をすべて表示して表示し、ログインとログアウトを許可し、カート内のアイテムを追跡するシステムを作成するのが難しい部分です。ここ

<?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; 
?> 

あなたがPHPを解析できるサーバーがない場合、私は私のサーバー上でこれを配置したに(私はそれを与える前にそれをテストするために、必要に応じて)下盛: Your SQL-less shopping cart

+0

あなたは素晴らしいKodlee Yinです!うわー、あなたの助けをありがとう。私は座って、あなたのコードを今日作業して、私がすでに始めたことに取り入れようとします。幸運にも私はXAMPP/Aptanaを使ってPHPを解析するための内部サーバ/プログラミング環境の設定をしていますが、あなたのサーバでそのサンプルをホストしてくれてありがとう!!私は何か問題がある場合は、私はあなたの電子メールアドレスに書き込むことを確認します。あなたの非常に寛大な助けをもう一度ありがとう! – rex

関連する問題