ホームページ作成の小技-BreathTake-

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--------(--) --:-- スポンサー広告 編集 |

ショッピング・カートシステム

■有料のショッピング・カートシステムのサイトがダウンしてしまったので、NucleusCMSを使ったショッピング・カートシステムを自作中です。

問題は、
①「カートに入れる」ボタンを押して商品をカートに入れる。
②カートに入れた「商品の一覧を見る」ボタンを押して、蓄積された商品データの一覧を表示する
と言う動作を、どのようにすれば実現出来るのか? です。

■ログイン時に会員登録して貰い、会員データをMySQLに入れておいて、そこに選択した商品データを加算して行く方式だと作り方が判るのですが、MySQLを使わない方法だと、見当がつきません。

【セッションの利用】…不可
セッションを使って、送られて来たデータを一時保存して、「カートの中身を見る」画面に来たら、その値を読み込み表示する。
PHPファイルで、
  session_start();
    $_SESSION["goods_id"] = $goods_id;
…と言うプログラムを書き、
  <%phpinclude(./shoppingcart/xxxxxx.php)%>
で読み込ませて表示させようとすると、
「すでにその関数は宣言されている」みたいなエラー表示が出てしまいます。

【クッキーの利用】…不可
これも、「すでにその関数は宣言されている」みたいなエラー表示が出てしまいます。

■nucleus内部の仕様で、関数が利用出来ないのであれば、インラインフレームで独立したプログラムを書けば良いことは思いつきました。
しかし、nucleusから送られる、商品ID・数量の値をPOST・GETで受け取ることが出来ません。

nucleusからは

$goods-id="商品ID";
$goods-count="購入数量";
 <form action="index.php" method="POST">
 <input type="hidden" name="goods-id" value="<?= goods-id ?>">
 <input type="hidden" name="goods-count" value="<?= goods-count ?>">
 <input type="submit" value="送信">
</form>

で、データ送信をします。

んで、
①データ受信先のindex.phpファイルを作成する
②そのファイルで、nucleusから送られたデータを$POSTで受信する

//商品ID
 $goods_id = _$_POST['goods_id'];
//購入数量
 $goods_count =$_POST['goods_count'];

③index.phpファイルにインラインフレームを作成する

<iframe src="./frame.php?goods-id=<?=$goods_id ?>&goods-count=<
?= $goods_count?>" name="contents" width="800px"
height="660px" frameborder="0" marginwidth="0"
marginheight="0"
scrolling="auto">
  インラインフレーム対応のブラウザでご覧ください
</iframe>

④飛び先のframe.phpで、送信データを受信する

//商品ID
 $goods_id = _$_GET['goods_id'];
//購入数量
 $goods_count =$_GET['goods_count'];

■この方法でパラメータの受け渡しに成功しました。

スポンサーサイト

NucleusをMySQL5にアップデート

■MySQL5へ移管した際の注意
NucleusCMSで使用しているデータベースを「MySQL5」にバージョンアップした際、Nucleusの管理画面を見ると以前に入力していた文字が全部文字化けしている場合があります。
MySQL4からMySQL5への移管時に文字コードの設定を間違えたのかと思い、サーバー上の「MySQLAdmin画面」を開いて、該当するテーブルを見ると文字化けしないで表示されています。
そのような場合は、下記の手順でnucleus/libs/ディレクトリにある「globalfunctions.php」を変更すれば文字化けが無くなるようです。
■解決方法
①nucleus/libs/ディレクトリにある、globalfunctions.phpと言うファイルを捜します。
②ファイルが見つかったら、それを開き、function sql_connect()と言う文字を検索します。
③下記のプログラムに、赤字部分を追加します。
function sql_connect() {
  global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN;
  $MYSQL_CONN = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or startUpError('

Could not connect to MySQL database.

', 'Connect Error');
  mysql_select_db($MYSQL_DATABASE) or startUpError('

Could not select database: ' . mysql_error() . '

', 'Connect Error');
/*/
  $resource = sql_query("show variables LIKE 'character_set_database'");
  $fetchDat = mysql_fetch_assoc($resource);
  $charset = $fetchDat['Value'];
  $mySqlVer = implode('.', array_map('intval', explode('.', mysql_get_server_info($MYSQL_CONN))));
  if ($mySqlVer >= '5.0.7' && phpversion() >= '5.2.3') {
     mysql_set_charset($charset);
  } else {
     sql_query("SET NAMES " . $charset);
  }
//
*/

  ##以下追加開始
   mysql_query("SET NAMES eucjpms");
  ##以下追加終了

  return $MYSQL_CONN;
}
④これで、文字化けは無くなります。
(注)Nucleus3.51ではこの項目がコメントアウトされているようです。

copyright © 2011 BreathTake all rights reserved. / Template By innerlife02
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。