超初心者 変数について。 - PHPプロ!Q&A掲示板

4943

  • 募集中!! 0P

超初心者 変数について。

質問日時 / 2018年5月16日 21:12    回答数 / 1件

Questioner:  30333033  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

$lastmemdercode=0;
上記のコードに注意書きがありまして、
この変数の使い方を、しっかり理解してください。
とあります。
超初心者なもので、恥ずかしいのですがあまりよく理解できません。
ただのコピーとは違うのでしょうか?

どなたかご指導頂けたら幸いです。
よろしくお願いします。





php

session_start();
session_regenerate_id(true);
?>



<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="keywords" content="">
<meta name="descroption" content="">
<meta name="author" content="akihiro">
<meta name="generator" conten="Tera pad">
<link rel="stylesheet" href="">
<title>ろくまる農園</title>
</head>

<body>

<?php

try
{
require_once('../common/common.php');

$post=sanitize($_POST);



$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];
$address=$post['address'];
$tel=$post['tel'];
$chumon=$post['chumon'];
$pass=$post['pass'];
$danjo=$post['danjo'];
$birth=$post['birth'];


print$onamae.'様<br>';
print'ご注文ありがとうございました。<br>';
print$email.'へメールをお送りしましたのでご確認ください<br>';
print'商品は以下の住所に発送させて頂きます<br>';
print$postal1.'-'.$postal2.'<br>';
print$address.'<br>';
print$tel.'<br>';


$honbun='';
$honbun.=$onamae."様\n\nこのたびはご注文ありがとうございました。\n";
$honbun.="\n";
$honbun.="ご注文商品\n";
$honbun.="---------\n";


$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
$max=count($cart);

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

for($i=0;$i<$max;$i++)
{
$sql='SELECT name,price FROM  mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$cart[$i];
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);

$name=$rec['name'];
$price=$rec['price'];
$kakaku[]=$price;
$suryo=$kazu[$i];
$shokei=$price*$suryo;


$honbun.=$name.'';
$honbun.=$price.'円×';
$honbun.=$suryo.'個=';
$honbun.=$shokei."円\n";
}

$sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE,dat_memder WRITE';
$stmt=$dbh->prepare($sql);
$stmt->execute();


>>CODE
$lastmemdercode=0;

<<CODEif($chumon=='chumontouroku')
{
$sql='INSERT INTO dat_memder(password,name,email,postal1,postal2,address,tel,danjo,born)VALUES(?,?,?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=md5($pass);
$data[]=$onamae;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
 if($danjo=='dan')
  {
   $data[]=1;
  }
  else
  {
  $data[]=2;
  }
$data[]=$birth;
$stmt->execute($data);

$sql='SELECT LAST_INSERT_ID()';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$lastmemdercode=$rec['LAST_INSERT_ID()'];
}





$sql='INSERT INTO dat_sales(code_memder,name,email,postal1,postal2,address,tel)VALUES(?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=$lastmemdercode;
$data[]=$onamae;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
$stmt->execute($data);

$sql='SELECT LAST_INSERT_ID()';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$lastcode=$rec['LAST_INSERT_ID()'];

for($i=0;$i<$max;$i++)
{
$sql='INSERT INTO dat_sales_product(code_sales,code_product,price,quantity)VALUES(?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=$lastcode;
$data[]=$cart[$i];
$data[]=$kakaku[$i];
$data[]=$kazu[$i];
$stmt->execute($data);
}

$sql='UNLOCK TABLES';
$stmt=$dbh->prepare($sql);
$stmt->execute();

$dbh=null;

if($chumon=='chumontouroku')
{
print'会員登録が完了いたしました。<br>';
print'次回からメールアドレスとパスワードでログインしてください。<br>';
print'ご注文が簡単にできるようになります。<br>';
print'<br>';
}


$honbun.="送料は無料です。\n";
$honbun.="--------\n";
$honbun.="\n";
$honbun.="代金は以下の口座にお振込みください。\n";
$honbun.="ろくまる銀行 やさい支店 普通口座1234567\n";
$honbun.="入金確認が取れ次第、梱包、発送させていただきます。\n";
$honbun.="\n";

if($chumon=='chumontouroku')
{
$honbun.="会員登録が完了いたしました。\n";
$honbun.="次回からメールアドレスとパスワードでログインしてください。\n";
$honbun.="ご注文が簡単にできるようになります。\n";
$honbun.="\n";
}
$honbun.="□□□□□□□□□□□□□□\n";
$honbun.="~安心野菜のろくまる農園~\n";
$honbun.="\n";
$honbun.="○○県六丸群六丸村123-4\n";
$honbun.="電話番号090-000-0000\n";
$honbun.="メールinfo@rokumarunouen.co.jp\n";
$honbun.="□□□□□□□□□□□□□□\n";

//print'<br>';
//print nl2br($honbun);



$title='ご注文ありがとうございます。';
$header='From:info@rokumarunouenn.co.jp';
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('japanese');
mb_internal_encoding('UTF-8');
mb_send_mail($email,$title,$honbun,$header);


$title='お客様から注文がありました。。';
$header='From:'.$email;
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('japanese');
mb_internal_encoding('UTF-8');
mb_send_mail('info@rokumarunouenn.co.jp',$title,$honbun,$header);

}

catch(Exception $e)
{
print'ただ今、障害により大変ご迷惑をおかけしております。';
 exit();

}

?>


<br>
<a href="shop_list.php">商品画面へ</a>



</body>
</html>


ツリー一覧

┗A01shimix>この変数の使い方を、しっかり理解してください。

回答一覧

並び替え:

A01
answerershimix [5月21日 09:45]

>この変数の使い方を、しっかり理解してください。

どういうシステムなのかすら提示されていませんので、勝手に解釈するしかありませんが・・・

$lastmemdercode=0;

で初期化したあと、注文種別が'chumontouroku'のとき(注文+会員登録のとき)にdat_memderに登録したときの(登録したレコードの)IDが保存されますね。
その次に(注文種別にかかわらず)dat_salesのデータを作成するときに、$lastmemdercodeをそのまま使っていますが、これだと'chumontouroku'でなかったとき(注文のみで登録しないとき)には 0 のまま登録されます。

ただ、登録済み会員の注文処理というのはここでは扱わない(別のロジックが存在する)のでしょうか?それが気になります。
まぁdat_memderとかlastmemderといった名称なので、一般的な「member」とは扱いが違うのかもしれませんが(苦笑

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)