<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">からすまる日誌 mySQL</title>
  <subtitle type="html">授業ノートのまとめ</subtitle>
  <link rel="self" type="application/atom+xml" href="https://karasumaru.tosalog.com/atom"/>
  <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/"/>
  <updated>2020-09-12T19:19:32+09:00</updated>
  <author><name>karasumaru</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>karasumaru.tosalog.com://entry/103</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-29-%20%E3%81%8A%E3%81%BE%E3%81%91%20%E3%81%95%E3%81%8F%E3%82%89%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" />
    <published>2021-01-28T19:05:37+09:00</published> 
    <updated>2021-01-28T19:05:37+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(29) おまけ さくらサーバーについて</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>授業の最後の週に<br />
まきの先生に制作課題さくらサーバーにあげましたと報告したところ、<br />
さくらには無料SSLがあるのでそれを取得した方が良いとのこと<br />
<br />
設定がいまいち不明だったので、<br />
さくらサーバーに問い合わせた回答がこちら<br />
<br />
(余談ですがさくらサーバーはUIが個人的に分かりづらい<br />
サポートセンターは親切)<br />
<br />
かいつまんでいうと、<br />
<br />
<strong>・初期ドメインでは無料SSLサーバ証明書は発行できないが、</strong><br />
<strong>「共有SSL」が利用可能</strong><br />
<strong>・「http」と「https」でファイルのアップロード先は同一のフォルダ<br />
</strong><br />
<br />
どういうことかというと、さくらサーバーにファイルをアップした時点で、<br />
<span style="color: #ff0000;">http</span>://xxxxxxx<br />
<span style="color: #ff0000;">https</span>://xxxxxxx<br />
<br />
の2つが自動で生成されている<br />
<br />
httpsの方は証明書、暗号化通信つき<br />
ということのようです</p>
<p><br />
実際の回答もおいておきます<br />
&nbsp;</p>
<hr /><hr />
<p>&gt;お問い合わせいただきました無料SSLサーバ証明書の発行につきまして、<br />
ご案内いたします。</p>
<p>恐れ入りますが、初期ドメインでは無料SSLサーバ証明書は発行できませんが、<br />
「共有SSL」がご利用可能でございます。</p>
<p>　▼【共有SSL】設定方法<br />
　<a href="https://help.sakura.ad.jp/206054862/">https://help.sakura.ad.jp/206054862/</a></p>
<p>なお、すでに初期ドメインに「共有SSL」が設定されているため、以下のURLで<br />
アクセスが可能でございます。</p>
<p>-----------------------------------------------------<br />
　　　https://xxxxx<br />
-----------------------------------------------------</p>
<hr />
<p>&gt;「http」と「https」でファイルのアップロード先は同一のフォルダでございます。</p>
<p>初期ドメイン「berrysystems.sakura.ne.jp」は「www」フォルダ直下に<br />
アップロードされたファイルを参照いたします。</p>
<p>つきましては、FTP接続設定の際にファイルのアップロード先フォルダを<br />
「www」に指定してくださいますようお願いいたします。</p>
<p>FFFTPの設定方法に関しましては、以下のサポートページに詳細な案内が<br />
ございますので、ご参照ください。</p>
<p>　▼FFFTPを利用する<br />
　<a href="https://help.sakura.ad.jp/206207161/">https://help.sakura.ad.jp/206207161/</a></p>
<p>上記手順でホームページデータをサーバにアップロードが完了しましたら、<br />
ブラウザでアクセスする際にURLを「https://xxxxx」に<br />
していただくと暗号化通信が可能でございます。<br />
</p>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/102</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-28-%20class-6-" />
    <published>2021-01-28T18:59:34+09:00</published> 
    <updated>2021-01-28T18:59:34+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(28) class(6)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>編集のシーンで入力漏れがないかバリデーションをする<br />
<br />
</div>
<div>新規登録でもしたい</div>
<div>&rarr;関数化すれば使いまわせる</div>
<div>名前と値段は必須というやつ</div>
<div>　</div>
<div>優先順位としては、送信していいかどうかよりも前</div>
<div>　</div>
<div>e.preventDefault();の綴りを2回間違ってるので</div>
<div>Defaultの綴りに注意</div>
<div>　</div>
<div>こういう分岐<br />
<br />
未入力がある？</div>
<div>はい&rarr;alert表示、プリベントデフォルト</div>
<div>いいえ&rarr;</div>
<div>　本当に編集していい？</div>
<div>　はい&rarr;実行</div>
<div>　いいえ&rarr;プリベントデフォルト</div>
<div>　</div>
<div>こういう感じ</div>
<div>　</div>
<div><hr />ここまで<br />
<br />
</div>
lunch.js<br />
&nbsp;<br />
$(function(){<br />
&nbsp;//console.log("hoge");<br />
&nbsp;<br />
&nbsp;//バリデーション<br />
&nbsp;function check(){<br />
&nbsp; var chk;<br />
&nbsp; if($('#menu').val()&nbsp; ==&nbsp; ''&nbsp; ||&nbsp; $('#price').val()==''){//空なら<br />
&nbsp;&nbsp; chk = false;<br />
&nbsp; }else{<br />
&nbsp;&nbsp; chk=true;<br />
&nbsp; }<br />
&nbsp; return chk;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;//編集ボタン<br />
&nbsp;$('#sub1').on('click',function(e){<br />
&nbsp; var chk=check();//上で宣言したのを実行<br />
&nbsp; <br />
&nbsp; //バリデーション<br />
&nbsp; if(!chk){<br />
&nbsp; <br />
&nbsp;&nbsp; //未入力項目あり<br />
&nbsp;&nbsp; alert('未入力項目あるよ');<br />
&nbsp;&nbsp; e.preventDefault();//イベント無効化<br />
&nbsp; &nbsp;<br />
&nbsp; }else{<br />
&nbsp; <br />
&nbsp;&nbsp; //入力OK,編集していいかどうか確認<br />
&nbsp;&nbsp; var&nbsp; flag=confirm('編集してよろしいかな');<br />
&nbsp;&nbsp; if(!flag){//いいえを押された<br />
&nbsp;&nbsp;&nbsp; e.preventDefault();<br />
&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp;});<br />
&nbsp;<br />
&nbsp;//削除ボタン<br />
&nbsp;$('#sub2').on('click',function(e){<br />
&nbsp; var&nbsp; flag=confirm('削除してよろしいかな');<br />
&nbsp; if(!flag){//いいえを押された<br />
&nbsp;&nbsp; e.preventDefault();<br />
&nbsp; }<br />
&nbsp;});<br />
&nbsp;<br />
});<br />

<div>&nbsp;</div>
<div><hr /></div>
<div>さて新規と、編集削除の分岐をする<br />
<br />
</div>
<div>form.phpに戻って、</div>
<div>　</div>
&lt;/table&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php if(empty($id)): ?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub3" id="sub3" value="新規作成"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php else: ?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub1" id="sub1" value="編集"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub2" id="sub2" value="削除"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php endif&nbsp; ?&gt;
<div>　</div>
<div><hr /></div>
<div>id="sub3"を付け加えたので</div>
<div>jsにも付け加え</div>
<div>　</div>
<div>&nbsp;//新規作成ボタン</div>
&nbsp;$('#sub3').on('click',function(e){<br />
&nbsp; var chk=check();<br />
&nbsp; if(!chk){<br />
&nbsp;&nbsp; alert('未入力項目あるよ');<br />
&nbsp;&nbsp; e.preventDefault();<br />
&nbsp; }else{<br />
&nbsp;&nbsp; var flag=confirm('登録してよろしいかな');<br />
&nbsp;&nbsp; if(!flag){<br />
&nbsp;&nbsp;&nbsp; e.preventDefault();<br />
&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp;});
<div>　</div>
<div><hr /></div>
<div>外部からのアタックにチケットの発行は有効なので、</div>
<div>ランダムな数をつくってhiddenでこっそりわたして</div>
<div>sessionととんできたのと比較する<br />
<br />
</div>
<div>自分で予定しているフォームからきていることを確認する</div>
<div>チケットの半券システム</div>
<div>　</div>
<div>echo time();</div>
<div>1900年だかから何秒経過したか</div>
<div>時間だけだとアタックしやすいので、</div>
<div>　</div>
<div>$ran = rand(1,100);</div>
<div>$salt="hogemakino";</div>
<div>$ticket =md5($ran.time().$salt);</div>
<div>echo $ticket ;</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041309.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586748311/" alt="" /></a></div>
<div><br />
ソルトが大事</div>
<div>time()だけではアタックされるしrandomだけでも弱い</div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041310.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586748323/" alt="" /></a></div>
<div><br />
検証で確認すること</div>
<div>　</div>
<div><hr /></div>
<div>&lt;input type="submit" name="sub" id="sub3" value="新規作成"&gt;</div>
<div>新規、編集、削除3つのボタンのnameを全部subに変える</div>
<div>　</div>
<div>すべて整っている前提で、</div>
<div>　</div>
<div>switch文で分岐をする</div>
<div>caseごとにbreakを忘れずに</div>
<div>　</div>
<div><hr />ここまで<br />
<br />
</div>
<strong>exec.php</strong><br />
&nbsp;<br />
&lt;?php<br />
&nbsp;print_r($_POST);<br />
&nbsp;session_start();<br />
&nbsp;<br />
&nbsp;if($_SESSION["ticket"] != $_POST["ticket"]){//チケットの半券一致せず<br />
&nbsp; exit();<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;require_once("class/lunch.class.php");<br />
&nbsp;$obj = new Lunch();<br />
<br />
&nbsp;switch($_POST["sub"]){<br />
&nbsp; case "新規作成"://飛んできたvalueが新規<br />
&nbsp;&nbsp; $obj-&gt;setMenu($_POST["menu"], $_POST["price"], $_POST["c_id"]);<br />
&nbsp;&nbsp; break;<br />
&nbsp; <br />
&nbsp; case "編集":<br />
&nbsp;&nbsp; $obj-&gt;updateMenu($_POST["menu"], $_POST["price"], $_POST["c_id"], $_POST["id"]);<br />
&nbsp;&nbsp; break;<br />
&nbsp; <br />
&nbsp; case "削除":<br />
&nbsp;&nbsp; $obj-&gt;deleteMenu($_POST["id"]);<br />
&nbsp;&nbsp; break;<br />
&nbsp;}<br />
<br />
//header("Location:list.php");<br />
//exit();<br />
&nbsp;<br />
<br />
?&gt;<br />
<br />
<hr /><strong>form.php</strong><br />
&nbsp;<br />
&lt;?php<br />
session_start();<br />
<br />
$ran = rand(1,100);<br />
$salt="hogemakino";<br />
$ticket =md5($ran.time().$salt);<br />
//echo $ticket ;<br />
$_SESSION["ticket"] = $ticket;//sessionでチケット発行<br />
<br />
//新規でも編集でもこのファイルを使いたい<br />
<br />
require_once("class/lunch.class.php");<br />
$obj = new Lunch();<br />
&nbsp;<br />
if(!empty($_GET["id"])){<br />
&nbsp;//編集の場合<br />
&nbsp;<br />
&nbsp;//getで送られてくるidを事前につかまえる<br />
&nbsp;$id=intval($_GET["id"]);<br />
&nbsp;$title="編集";//タイトルも分岐によって変わる<br />
&nbsp;<br />
&nbsp;$arr = $obj-&gt;getMenuById($id);<br />
&nbsp;$menu = htmlspecialchars($arr["menu"],ENT_QUOTES);<br />
&nbsp;$price = $arr["price"];<br />
&nbsp;$c_id = $arr["c_id"];<br />
&nbsp;<br />
}else{<br />
&nbsp;//新規作成の場合<br />
&nbsp;$title="新規作成";<br />
&nbsp;$menu = "";<br />
&nbsp;$price ="";<br />
&nbsp;$c_id=0;//A.I.（オートインクリメント）は1から始まる。わざとありえない番号を初期値にしておく<br />
}<br />
<br />
<br />
?&gt;<br />
<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;メニュー&lt;?php echo $title; ?&gt;&lt;/title&gt;<br />
&nbsp; &lt;link rel="stylesheet" href="css/style.css"&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;div id="container"&gt;<br />
&nbsp;&nbsp; &lt;h1&gt;メニュー&lt;?php echo $title; ?&gt;&lt;/h1&gt;<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;form action="exec.php" method="post"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="menu"&gt;メニュー&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="menu" id="menu" value="&lt;?php echo $menu; ?&gt;"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="price"&gt;価格&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="price" id="price" value="&lt;?php echo $price; ?&gt;"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="c_id"&gt;カテゴリ&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php $obj-&gt;makeCatSelect($c_id); ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php if(empty($id)): ?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub" id="sub3" value="新規作成"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php else: ?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub" id="sub1" value="編集"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub" id="sub2" value="削除"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="hidden" name="id" value="&lt;?php echo $id; ?&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;?php endif ?&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;input type="hidden" name="ticket" value="&lt;?php echo $ticket;/*form側でもチケット発行*/ ?&gt;"&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp;<br />
&nbsp; <br />
&nbsp; &lt;script src="js/lunch.js"&gt;&lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<hr /><strong>lunch.js</strong><br />
&nbsp;<br />
$(function(){<br />
&nbsp;//console.log("hoge");<br />
&nbsp;<br />
&nbsp;//バリデーション<br />
&nbsp;function check(){<br />
&nbsp; var chk;<br />
&nbsp; if($('#menu').val() == '' || $('#price').val()==''){//空なら<br />
&nbsp;&nbsp; chk = false;<br />
&nbsp; }else{<br />
&nbsp;&nbsp; chk=true;<br />
&nbsp; }<br />
&nbsp; return chk;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;//編集ボタン<br />
&nbsp;$('#sub1').on('click',function(e){<br />
&nbsp; var chk=check();//上で宣言したのを実行<br />
&nbsp; <br />
&nbsp; //バリデーション<br />
&nbsp; if(!chk){<br />
&nbsp; <br />
&nbsp;&nbsp; //未入力項目あり<br />
&nbsp;&nbsp; alert('未入力項目あるよ');<br />
&nbsp;&nbsp; e.preventDefault();//イベント無効化<br />
&nbsp; &nbsp;<br />
&nbsp; }else{<br />
&nbsp; <br />
&nbsp;&nbsp; //入力OK,編集していいかどうか確認<br />
&nbsp;&nbsp; var flag=confirm('編集してよろしいかな');<br />
&nbsp;&nbsp; if(!flag){//いいえを押された<br />
&nbsp;&nbsp;&nbsp; e.preventDefault();<br />
&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp;});<br />
&nbsp;<br />
&nbsp;//削除ボタン<br />
&nbsp;$('#sub2').on('click',function(e){<br />
&nbsp; var flag=confirm('削除してよろしいかな');<br />
&nbsp; if(!flag){//いいえを押された<br />
&nbsp;&nbsp; e.preventDefault();<br />
&nbsp; }<br />
&nbsp;});<br />
&nbsp;<br />
&nbsp;//新規作成ボタン<br />
&nbsp;$('#sub3').on('click',function(e){<br />
&nbsp; var chk=check();<br />
&nbsp; if(!chk){<br />
&nbsp;&nbsp; alert('未入力項目あるよ');<br />
&nbsp;&nbsp; e.preventDefault();<br />
&nbsp; }else{<br />
&nbsp;&nbsp; var flag=confirm('登録してよろしいかな');<br />
&nbsp;&nbsp; if(!flag){<br />
&nbsp;&nbsp;&nbsp; e.preventDefault();<br />
&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp;});<br />
&nbsp;<br />
&nbsp;<br />
});<br />
<br />
<hr /><strong>lunch.class.php</strong><br />
&nbsp;<br />
&lt;?php<br />
class Lunch{<br />
&nbsp;private $pdo;//外から直接アクセスはできないように<br />
&nbsp;<br />
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp; // -----------------<br />
&nbsp; //環境によって変更<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $host="localhost";<br />
&nbsp; $dbuser="root";<br />
&nbsp; $dbpass="";<br />
&nbsp; $dbname="lunch";<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $dsn = "mysql:host={$host}; dbname={$dbname}; charset=utf8";<br />
&nbsp; $this-&gt;pdo=new PDO($dsn,$dbuser,$dbpass); //$pdoとは書かない<br />
&nbsp; <br />
&nbsp;}//constructの終わり<br />
&nbsp;<br />
&nbsp;public function getAllMenu(){//publicでないと外から呼び出せない<br />
&nbsp; $sql = "SELECT * FROM foods";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);<br />
&nbsp; $rows = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);<br />
&nbsp; return $rows;//戻り値<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function getMenubyId($id=1){//指定したid番号を取得、引き取るid番号が仮引数の$id<br />
&nbsp; $sql="SELECT * FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; $row = $stmt-&gt;fetch(PDO::FETCH_ASSOC);<br />
&nbsp; return $row;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function setMenu($menu,$price,$c_id){//idはオートインクリメントなので必要ない<br />
&nbsp; $sql = "INSERT INTO foods(menu,price,c_id) VALUES (:menu,:price,:c_id)";//メニューと値段とカテゴリidを追加 <br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);//クラス内の変数なのでstmtやsqlのスコープはここだけ<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; //戻り値は要らない<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function updateMenu($menu,$price,$c_id,$id){//どれがupdateされるか分からないので3つとも仮引数を用意<br />
&nbsp; //主キーである$idがないと全部書き換わってしまうのでどこのレコードか指定するため今回4つプロパティが要る<br />
&nbsp; <br />
&nbsp; $sql = "UPDATE foods SET menu=:menu, price=:price, c_id=:c_id WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);//idも必要ですよ<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function deleteMenu($id){//パラメータは主キーであるidだけでいい<br />
&nbsp; $sql = "DELETE FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;//セレクトプルダウンに表示<br />
&nbsp;<br />
&nbsp;public function makeCatSelect($c_id){<br />
&nbsp; $sql = "SELECT * FROM cats";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);//レコードセットの中に結果セットを入れる形<br />
&nbsp; <br />
&nbsp; echo "&lt;SELECT name=\"c_id\" id=\"c_id\"&gt;\n";<br />
&nbsp; <br />
&nbsp; //ダミーのオプション<br />
&nbsp; echo "&lt;option value=\"\"&gt;以下から選択&lt;/option&gt;\n";<br />
&nbsp; <br />
&nbsp; while($row = $rs-&gt;fetch(PDO::FETCH_ASSOC)){<br />
&nbsp; <br />
&nbsp;&nbsp; $selStr = $c_id==$row["c_id"] ? " selected" : "";//三項演算。selectedか何もないか。あるにせよないにせよechoする。一致すればselected、なければ""<br />
&nbsp; <br />
&nbsp;&nbsp; //option value="1"うどん&lt;/option&gt;みたいなのを出力したい<br />
&nbsp;&nbsp; echo "&lt;option value=\"{$row["c_id"]}\"{$selStr}&gt;";<br />
&nbsp;&nbsp; echo htmlspecialchars($row["cat"],ENT_QUOTES);<br />
&nbsp;&nbsp; echo "&lt;/option&gt;\n";<br />
&nbsp; }<br />
&nbsp; echo "&lt;/select&gt;\n";<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
?&gt;<br />
<br />
<hr /><strong>style.css</strong><br />
&nbsp;<br />
body{<br />
&nbsp;background:#eff;<br />
}<br />
#container{<br />
&nbsp;width:80%;<br />
&nbsp;margin:auto;<br />
}<br />
table{<br />
&nbsp;border-collapse:collapse;<br />
}<br />
th,td{<br />
&nbsp;padding:0.3rem 0.5rem;<br />
&nbsp;text-align:left;<br />
&nbsp;background:#fff;<br />
&nbsp;border:solid 1px #555;<br />
}<br />
th{<br />
&nbsp;background:#ccc;<br />
}<br />
<br />
<br />
<hr />なおエラーがでたが原因は、<br />
<br />
switch($_POST["sub"]){<br />
&nbsp; case "新規作成"://飛んできたvalueが新規<br />
&nbsp;&nbsp; $obj-&gt;setMenu($_POST["menu"], $_POST["$price"], $_POST["$c_id"]);<br />
&nbsp;&nbsp; break;<br />
&nbsp;<br />
$_POST["$price"]じゃなくて、<br />
$_POST["price"]<br />
&nbsp;<br />
$がいらなかった
<div>　&nbsp;</div>
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041311.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586748443/" alt="" /></a></div>
<div></div>
<div></div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/101</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-27-%20class-5-" />
    <published>2021-01-28T18:55:38+09:00</published> 
    <updated>2021-01-28T18:55:38+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(27) class(5)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>セレクトはよく使うので、</div>
<div>専用のメソッドを作って</div>
<div>書き出しまでやってしまおう</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041302.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586744946/" alt="" /></a> <br />
&nbsp;</div>
<div>ここの"c_id"は""の中なので、￥をつけて無効化する</div>
<div>　</div>
<div>本来echo "&lt;SELECT name="c_id" id="c_id"&gt;";と書きたいが</div>
<div>これだと「echo "&lt;SELECT name="」で一回終わってしまうので</div>
<div>無効化が必要</div>
<div>　</div>
<div></div>
&nbsp; while($row = $rs-&gt;fetch(PDO::FETCH_ASSOC)){<br />
&nbsp;&nbsp; echo "&lt;option value=\"1\"&gt;";<br />
&nbsp; }<br />

<div></div>
<div>こうしたいが、</div>
<div>valueの中身は1じゃなくて$row["c_id"]にしたい</div>
<div>まず1と書いてみて、</div>
<div>そのあとはめこんでいく</div>
<div>　</div>
<div>echo "&lt;option value=\"{$row["c_id"]}\"&gt;";</div>
<div>　</div>
<div>この{}はなくてもいいらしいが一応つける</div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041303.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586744974/" alt="" /></a> <br />
&nbsp;</div>
<div>これが</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041304.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586744988/" alt="" /></a></div>
<div><br />
こうなる</div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041305.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586745003/" alt="" /></a></div>
<div><br />
ここには{}が必要なのだが、</div>
<div>それ以前に、</div>
<div>ここの""は無効化してはいけない<br />
<br />
</div>
<div>なぜかというと、この部分はphpに解読して実行もらわないといけない<br />
phpの文章なので</div>
<div>　</div>
<div>その前のoption value=\"</div>
<div>の部分の無効化は、<br />
「htmlなので」「そうやって書き出してくれ」という意味で必要</div>
<div>　</div>
<div>phpの部分はパースしてもらいたいから""がそのまま要るし、<br />
htmlの部分はパースされちゃ困るから無効化する<br />
&nbsp;</div>
<div><hr /></div>
<div>selectedやcheckedがちゃんとなるように工夫</div>
<div>　</div>
<div>呼び出し元を</div>
<div>&lt;?php $obj-&gt;makeCatSelect($c_id); ?&gt;</div>
<div>に変更</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041306.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586745028/" alt="" /></a></div>
<div>　</div>
<div>こうなった</div>
<div>　</div>
&nbsp;public function makeCatSelect($c_id){<br />
<br />
&nbsp; $sql = "SELECT * FROM cats";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);//レコードセットの中に結果セットを入れる形<br />
&nbsp; <br />
&nbsp; echo "&lt;SELECT name=\"c_id\" id=\"c_id\"&gt;\n";<br />
&nbsp; <br />
&nbsp; //ダミーのオプション<br />
&nbsp; echo "&lt;option value=\"\"&gt;以下から選択&lt;/option&gt;\n";<br />
&nbsp; <br />
&nbsp; while($row = $rs-&gt;fetch(PDO::FETCH_ASSOC)){<br />
&nbsp; <br />
&nbsp;&nbsp; $selStr = $c_id==$row["c_id"] ? " selected" : "";//三項演算。selectedか何もないか。あるにせよないにせよechoする。一致すればselected、なければ""<br />
&nbsp; <br />
&nbsp;&nbsp; //option value="1"うどん&lt;/option&gt;みたいなのを出力したい<br />
&nbsp;&nbsp; echo "&lt;option value=\"{$row["c_id"]}\"{$selStr}&gt;";<br />
&nbsp;&nbsp; echo htmlspecialchars($row["cat"],ENT_QUOTES);<br />
&nbsp;&nbsp; echo "&lt;/option&gt;\n";<br />
&nbsp; }<br />
&nbsp; echo "&lt;/select&gt;\n";<br />
&nbsp;}
<div>　</div>
<div><hr /></div>
<div>さてform.php<br />
<br />
</div>
<div>編集だけでなく削除ボタンもやりたい</div>
<div>　</div>
<div>submitボタンは複数あってもいい</div>
<div>ただどちらが押されたかは、name属性で判断させる</div>
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041307.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586745041/" alt="" /></a> <br />
&nbsp;</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041308.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586745075/" alt="" /></a></div>
<div>押されたほうだけの値が来ているのが分かる　</div>
<div>　</div>
<div>&rarr;1個のフォームから異なる挙動をすることができる</div>
<div>なんならupdateやなんとかもメソッドで呼び出して使える</div>
<div>　</div>
<div></div>
<div><hr /></div>
<div>jsからアクセスできるようにidもつける<br />
<br />
</div>
&lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub1" id="sub1" value="編集"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="sub2" id="sub2" value="削除"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/p&gt;
<div>　</div>
<div><hr /></div>
<div>プリベントデフォルトをやるので<br />
<br />
</div>
&nbsp;//編集ボタン<br />
&nbsp;$('#sub1').on('click',function(e){<br />
&nbsp; <br />
&nbsp;});
<div>としておく<br />
<br />
</div>
<div>eが入るよ</div>
<div>　</div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/100</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-26-%20class-4-" />
    <published>2021-01-28T18:51:59+09:00</published> 
    <updated>2021-01-28T18:51:59+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(26) class(4)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>さくらサーバを申し込んだら</div>
<div>レッツエンクリプトをするといい（無料）</div>
<div>というかやるべきらしい。</div>
<div>＊2週間のお試し期間が終わったらすぐ申し込む　</div>
<div>　</div>
<div>　</div>
<div>クリプトの暗号化をつかったSSL　HTTPS</div>
<div><a href="https://www.sakura.ne.jp/function/freessl.html" title="">https://www.sakura.ne.jp/function/freessl.html</a></div>
<div></div>
<div><a href="https://help.sakura.ad.jp/115000136822/" title="">https://help.sakura.ad.jp/115000136822/</a></div>
<div>&nbsp;</div>
<div><a href="https://secure.sakura.ad.jp/rscontrol/rs/domain" title="">https://secure.sakura.ad.jp/rscontrol/rs/domain</a></div>
<div>&nbsp;</div>
<div><hr /></div>
<div>CSS Grid Layout</div>
<div><a href="https://qiita.com/kura07/items/e633b35e33e43240d363" title="">https://qiita.com/kura07/items/e633b35e33e43240d363</a></div>
<div><a href="https://www.w3schools.com/css/css_grid.asp" title="">https://www.w3schools.com/css/css_grid.asp</a></div>
<div>　</div>
<div><a href="https://ferret-plus.com/9420" title="">https://ferret-plus.com/9420</a></div>
<div><a href="http://korywakefield.com/iota/#overview" title="">http://korywakefield.com/iota/#overview</a></div>
<div>　</div>
<div><a href="https://cssgridgarden.com/#ja" title="">https://cssgridgarden.com/#ja</a></div>
<div>　</div>
<div><hr /></div>
<div>先週のlunchのつづき</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041300.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586741180/" alt="" /></a></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041301.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586741194/" alt="" /></a></div>
<div>　</div>
<div><br />
ここまで</div>
<div>&nbsp;<hr /></div>
<strong>form.php</strong><br />
&nbsp;<br />
&lt;?php<br />
//新規でも編集でもこのファイルを使いたい<br />
<br />
require_once("class/lunch.class.php");<br />
$obj = new Lunch();<br />
&nbsp;<br />
if(!empty($_GET["id"])){<br />
&nbsp;//編集の場合<br />
&nbsp;<br />
&nbsp;//getで送られてくるidを事前につかまえる<br />
&nbsp;$id=intval($_GET["id"]);<br />
&nbsp;$title="編集";//タイトルも分岐によって変わる<br />
&nbsp;<br />
&nbsp;$arr = $obj-&gt;getMenuById($id);<br />
&nbsp;$menu = htmlspecialchars($arr["menu"],ENT_QUOTES);<br />
&nbsp;$price = $arr["price"];<br />
&nbsp;$c_id = $arr["c_id"];<br />
&nbsp;<br />
}else{<br />
&nbsp;//新規作成の場合<br />
&nbsp;$title="新規作成";<br />
&nbsp;$menu = "";<br />
&nbsp;$price ="";<br />
&nbsp;$c_id="";<br />
}<br />
<br />
<br />
?&gt;<br />
<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;メニュー&lt;?php echo $title; ?&gt;&lt;/title&gt;<br />
&nbsp; &lt;link rel="stylesheet" href="css/style.css"&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;div id="container"&gt;<br />
&nbsp;&nbsp; &lt;h1&gt;メニュー&lt;?php echo $title; ?&gt;&lt;/h1&gt;<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;form action="exec.php" method="post"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="menu"&gt;メニュー&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="menu" id="menu" value="&lt;?php echo $menu; ?&gt;"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="price"&gt;価格&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="price" id="price" value="&lt;?php echo $price; ?&gt;"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;&lt;label for="c_id"&gt;カテゴリ&lt;/label&gt;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; セレクト予定<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;p&gt;&lt;input type="submit" value="編集"&gt;&lt;/p&gt;<br />
&nbsp;&nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp;<br />
&nbsp; <br />
&nbsp; &lt;script src="js/lunch.js"&gt;&lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
&nbsp;<hr /><strong>style.php</strong><br />
&nbsp;<br />
body{<br />
&nbsp;background:#eff;<br />
}<br />
#container{<br />
&nbsp;width:80%;<br />
&nbsp;margin:auto;<br />
}<br />
table{<br />
&nbsp;border-collapse:collapse;<br />
}<br />
th,td{<br />
&nbsp;padding:0.3rem 0.5rem;<br />
&nbsp;text-align:left;<br />
&nbsp;background:#fff;<br />
&nbsp;border:solid 1px #555;<br />
}<br />
th{<br />
&nbsp;background:#ccc;<br />
}<br />
<br />
<hr />この２つは先週から変化なし<br />
<br />
<strong>lunch.class.php</strong><br />
&nbsp;<br />
&lt;?php<br />
class Lunch{<br />
&nbsp;private $pdo;//外から直接アクセスはできないように<br />
&nbsp;<br />
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp; // -----------------<br />
&nbsp; //環境によって変更<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $host="localhost";<br />
&nbsp; $dbuser="root";<br />
&nbsp; $dbpass="";<br />
&nbsp; $dbname="lunch";<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $dsn = "mysql:host={$host}; dbname={$dbname}; charset=utf8";<br />
&nbsp; $this-&gt;pdo=new PDO($dsn,$dbuser,$dbpass); //$pdoとは書かない<br />
&nbsp; <br />
&nbsp;}//constructの終わり<br />
&nbsp;<br />
&nbsp;public function getAllMenu(){//publicでないと外から呼び出せない<br />
&nbsp; $sql = "SELECT * FROM foods";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);<br />
&nbsp; $rows = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);<br />
&nbsp; return $rows;//戻り値<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function getMenubyId($id=1){//指定したid番号を取得、引き取るid番号が仮引数の$id<br />
&nbsp; $sql="SELECT * FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; $row = $stmt-&gt;fetch(PDO::FETCH_ASSOC);<br />
&nbsp; return $row;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function setMenu($menu,$price,$c_id){//idはオートインクリメントなので必要ない<br />
&nbsp; $sql = "INSERT INTO foods(menu,price,c_id) VALUES (:menu,:price,:c_id)";//メニューと値段とカテゴリidを追加 <br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);//クラス内の変数なのでstmtやsqlのスコープはここだけ<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; //戻り値は要らない<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function updateMenu($menu,$price,$c_id,$id){//どれがupdateされるか分からないので3つとも仮引数を用意<br />
&nbsp; //主キーである$idがないと全部書き換わってしまうのでどこのレコードか指定するため今回4つプロパティが要る<br />
&nbsp; <br />
&nbsp; $sql = "UPDATE foods SET menu=:menu, price=:price, c_id=:c_id WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);//idも必要ですよ<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function deleteMenu($id){//パラメータは主キーであるidだけでいい<br />
&nbsp; $sql = "DELETE FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
}<br />
?&gt;<br />
<br />
&nbsp;<hr /><strong>lunch.php</strong><br />
&nbsp;<br />
$(function(){<br />
&nbsp;console.log("hoge");<br />
});<br />
<br />
<br />
]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/99</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-25-%20class-3-" />
    <published>2021-01-28T18:49:13+09:00</published> 
    <updated>2021-01-28T18:49:13+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(25) class(3)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>idを指定して取り出す</div>
<div>基本的に「ひとつ取り出す」というのは主キーだし主キーであるべき</div>
<div>重なってると面倒なことになる</div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041012.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586502242/" alt="" /></a></div>
<div><br />
ここ全体がpdoなのでさらに-&gt;でプリペアー</div>
<div>　</div>
<div><hr /></div>
&nbsp;public function getMenubyId($id=1){ //指定したid番号を取得、引き取るid番号が仮引数の$id<br />
&nbsp; $sql="SELECT * FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; $row = $stmt-&gt;fetch(PDO::FETCH_ASSOC);<br />
&nbsp; return $row;<br />
&nbsp;}
<div></div>
<div></div>
<div><hr /></div>
<div>$row = $obj-&gt;getMenuById(2);</div>
<div></div>
<div>中略</div>
&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;?php print_r( $row); ?&gt;<br />
&nbsp;&nbsp; &lt;/p&gt;<br />
<br />

<div><hr /></div>
<div>idの2番を呼び出すのだが、<br />
メソッドの中のパラメータに値を代入（public function getMenubyId(<span style="color: #ff0000;">$id=1)</span>）すると<br />
「デフォルト値」としてphpでは扱われる</div>
<div>仮に呼び出し元で何の指定もなければこれ（id=1）が採用されるし、</div>
<div>なにか指定があればちゃんとid=2をとってくる</div>
<div>&nbsp;</div>
<div><hr /></div>
<div>insert</div>
<div>update</div>
<div>deleteも追加</div>
<div></div>
<div></div>
&nbsp;&lt;?php foreach($arr as $val): ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="form.php?id=3"&gt;&lt;?php echo $val["menu"]; ?&gt;&lt;/a&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endforeach; ?&gt;
<div>　</div>
<div>こんな風にしたい</div>
<div>これだと全部id=3になってしまうので、<br />
&rarr;<br />
&lt;a href="form.php?id=<span style="color: #ff0000;">&lt;?php echo $val["id"]; ?&gt;</span>"&gt;</div>
<div>&nbsp;</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041013.png" title=""><img src="//karasumaru.ko-me.com/Img/1586502276/" alt="" /></a></div>
<div>hoverするとここにちゃんとidがきている</div>
<div>　</div>
<div>ここまで<br />
<hr /></div>
<strong>list.php</strong><br />
&nbsp;<br />
&lt;?php<br />
require_once("class/lunch.class.php");<br />
$obj = new Lunch();<br />
$arr = $obj-&gt;getAllMenu();<br />
//print_r($arr);<br />
<br />
//$row = $obj-&gt;getMenuById(2);<br />
?&gt;<br />
<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;メニューリスト&lt;/title&gt;<br />
&nbsp; &lt;link rel="stylesheet" href="css/style.css"&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;div id="container"&gt;<br />
&nbsp;&nbsp; &lt;h1&gt;メニューリスト&lt;/h1&gt;<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;ul id="m_list"&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--方法１一番外側の階層（[0～20]）をぐるぐる回すよ、その中身をvalとするよ--&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php foreach($arr as $val): ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="form.php?id=&lt;?php echo $val["id"]; ?&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php echo $val["menu"]; ?&gt;&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endforeach; ?&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--方法2 count関数を使う<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php for($i=0; $i&lt;count($arr); $i++): ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;?php echo($arr[$i]["menu"]); ?&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endfor ?&gt; <br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; --&gt;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;/ul&gt;<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;?php print_r( $row["menu"]); ?&gt;<br />
&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; --&gt;<br />
&nbsp; &nbsp;<br />
&nbsp; &lt;/div&gt;<br />
&nbsp; <br />
&nbsp; <br />
&nbsp; &lt;script src="js/lunch.js"&gt;&lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<hr /><strong>lunch.class.php</strong><br />
&nbsp;<br />
&lt;?php<br />
class Lunch{<br />
&nbsp;private $pdo;//外から直接アクセスはできないように<br />
&nbsp;<br />
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp; // -----------------<br />
&nbsp; //環境によって変更<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $host="localhost";<br />
&nbsp; $dbuser="root";<br />
&nbsp; $dbpass="";<br />
&nbsp; $dbname="lunch";<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $dsn = "mysql:host={$host}; dbname={$dbname}; charset=utf8";<br />
&nbsp; $this-&gt;pdo=new PDO($dsn,$dbuser,$dbpass); //$pdoとは書かない<br />
&nbsp; <br />
&nbsp;}//constructの終わり<br />
&nbsp;<br />
&nbsp;public function getAllMenu(){//publicでないと外から呼び出せない<br />
&nbsp; $sql = "SELECT * FROM foods";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);<br />
&nbsp; $rows = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);<br />
&nbsp; return $rows;//戻り値<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function getMenubyId($id=1){//指定したid番号を取得、引き取るid番号が仮引数の$id<br />
&nbsp; $sql="SELECT * FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; $row = $stmt-&gt;fetch(PDO::FETCH_ASSOC);<br />
&nbsp; return $row;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function setMenu($menu,$price,$c_id){//idはオートインクリメントなので必要ない<br />
&nbsp; $sql = "INSERT INTO foods(menu,price,c_id) VALUES (:menu,:price,:c_id)";//メニューと値段とカテゴリidを追加 <br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);//クラス内の変数なのでstmtやsqlのスコープはここだけ<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; //戻り値は要らない<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function updateMenu($menu,$price,$c_id,$id){//どれがupdateされるか分からないので3つとも仮引数を用意<br />
&nbsp; //主キーである$idがないと全部書き換わってしまうのでどこのレコードか指定するため今回4つプロパティが要る<br />
&nbsp; <br />
&nbsp; $sql = "UPDATE foods SET menu=:menu, price=:price, c_id=:c_id WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":menu",$menu,PDO::PARAM_STR);<br />
&nbsp; $stmt-&gt;bindvalue(":price",$price,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":c_id",$c_id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);//idも必要ですよ<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public function deleteMenu($id){//パラメータは主キーであるidだけでいい<br />
&nbsp; $sql = "DELETE FROM foods WHERE id=:id";<br />
&nbsp; $stmt = $this-&gt;pdo-&gt;prepare($sql);<br />
&nbsp; $stmt-&gt;bindvalue(":id",$id,PDO::PARAM_INT);<br />
&nbsp; $stmt-&gt;execute();<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
}<br />
?&gt;<br />
<br />
]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/98</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-24-%20class-2-" />
    <published>2021-01-28T18:46:38+09:00</published> 
    <updated>2021-01-28T18:46:38+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(24) class(2)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>この間の続き</div>
<div>lunch</div>
<div>&nbsp;</div>
<div><span style="color: #ff0000;">private</span>としてしまうと同じクラス(class Lunch{})<span style="color: #ff0000;">内</span>からしか呼び出せない</div>
<div>コンストラクタもpublic</div>
<div>　</div>
<div>いま全体が</div>
<div>class Lunch{}であり、</div>
<div>そのなかに</div>
<div>public function __construct(){}や</div>
<div>public function getAllMenu(){}がある</div>
<div>　</div>
<div><span style="color: #ff0000;">内部とは</span></div>
<div><span style="color: #ff0000;">class Lunch{}のこと</span></div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041010.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586499058/" alt="" /></a></div>
<div><br />
エラーが出ましたがここ</div>
<div>$rows = <span style="color: #ff0000;">$rs-&gt;</span>fetchAll(PDO::FETCH_ASSOC);</div>
<div>$rs-&gt;が抜けているとフェイタルが出た　</div>
<div>　</div>
<div><hr /></div>
<div>じゃメニューの名前だけを出力する</div>
<div>連想配列に入っているはず</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020041011.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586499078/" alt="" /></a> 　</div>
<div>　</div>
<div>なぜかfor文をかきつつif-endifをしていたりした　</div>
<div>$iを回す回数は</div>
<div>$i&lt;count($arr)</div>
<div></div>
<div><hr /></div>
<strong>list.php</strong><br />
&nbsp;<br />
&lt;?php<br />
require_once("class/lunch.class.php");<br />
$obj = new Lunch();<br />
$arr = $obj-&gt;getAllMenu();<br />
//print_r($arr);<br />
?&gt;<br />
<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;ニューリスト&lt;/title&gt;<br />
&nbsp; &lt;link rel="stylesheet" href="css/style.css"&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;div id="container"&gt;<br />
&nbsp;&nbsp; &lt;h1&gt;new list&lt;/h1&gt;<br />
&nbsp;&nbsp; &lt;ul id="m_list"&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--方法１一番外側の階層（[0～20]）をぐるぐる回すよ、その中身をvalとするよ--&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php foreach($arr as $val): ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;?php echo $val["menu"]; ?&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endforeach; ?&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--方法2 count関数を使うよ<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php for($i=0; $i&lt;count($arr); $i++): ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;?php echo($arr[$i]["menu"]); ?&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endfor ?&gt; <br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; --&gt;&nbsp; &nbsp;<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; &lt;/ul&gt;<br />
&nbsp; &lt;/div&gt;<br />
&nbsp; <br />
&nbsp; <br />
&nbsp; &lt;script src="js/lunch.js"&gt;&lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
&nbsp;<br />
<hr /><strong>lunch.class.php</strong><br />
&nbsp;<br />
&lt;?php<br />
class Lunch{<br />
&nbsp;private $pdo;//外から直接アクセスはできないように<br />
&nbsp;<br />
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp; // -----------------<br />
&nbsp; //環境によって変更<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $host="localhost";<br />
&nbsp; $dbuser="root";<br />
&nbsp; $dbpass="";<br />
&nbsp; $dbname="lunch";<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $dsn = "mysql:host={$host}; dbname={$dbname}; charset=utf8";<br />
&nbsp; $this-&gt;pdo=new PDO($dsn,$dbuser,$dbpass); //$pdoとは書かない<br />
&nbsp; <br />
&nbsp;}//constructの終わり<br />
&nbsp;<br />
&nbsp;public function getAllMenu(){//publicでないと外から呼び出せない<br />
&nbsp; $sql = "SELECT * FROM foods";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);<br />
&nbsp; $rows = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);<br />
&nbsp; return $rows;//戻り値<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
?&gt;
<div></div>
<div><hr /></div>
<div>メソッドはあまり複雑にせず</div>
<div>１つのことだけをやらせる</div>
<div>値を取るだけとかにするといい</div>
<div>　</div>
<div></div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/97</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-23-%20class-1-" />
    <published>2021-01-28T18:44:38+09:00</published> 
    <updated>2021-01-28T18:44:38+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(23) class(1)</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>フォルダ階層はこう<br />
<br />
lunch</div>
<div>-css</div>
<div>-js</div>
<div>-class</div>
<div>&nbsp;</div>
<div><hr /></div>
<div>lunch.class.phpを作る<br />
<br />
</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040806.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586329376/" alt="" /></a></div>
<div>classの「がわ」はこれ</div>
<div>　</div>
<div><hr /></div>
<div>private $pdo;//外から直接アクセスはできないように</div>
<div>これをpublicにすると外からアクセスできてしまう　</div>
<div>　</div>
<div>最初はコンストラクタ</div>
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp;<br />
&nbsp;}
<div>　</div>
<div><hr /></div>
<div>コメントの時</div>
<div><span style="color: #ff0000;">// -----------------</span></div>
<div><span style="color: #ff0000;">と、//の次に半角開けると一番間違いがない</span></div>
<div>　</div>
<div><hr /></div>
<div>&lt;?php</div>
<div>$obj=new Lunch();</div>
<div>?&gt;</div>
<div>　</div>
<div>&lt;!DOCTYPE html&gt;</div>
<div>　</div>
<div>エラーが起きた</div>
<div><span style="color: #999999;">Fatal error: Uncaught Error: Class 'Lunch' not found in C:\xampp\htdocs\php\makino\lunch\list.php:2 Stack trace: #0 {main} thrown in C:\xampp\htdocs\php\makino\lunch\list.php on line 2</span></div>
<div>　</div>
<div>クラスlunchが見つからない</div>
<div>&rarr;クラスを読み込んでないから当然<br />
<br />
</div>
<div>これならよい</div>
<div>&lt;?php</div>
<div><span style="color: #ff0000;">require_once("class/lunch.class.php");</span></div>
<div>$obj=new Lunch();</div>
<div>?&gt;</div>
<div>&lt;!DOCTYPE html&gt;</div>
<div>　</div>
<div><hr /></div>
<div>さらにこれ</div>
<div><span style="color: #999999;">Parse error: syntax error, unexpected 'function__construct' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in C:\xampp\htdocs\php\makino\lunch\class\lunch.class.php on line 5</span></div>
<div></div>
<div>public function __construct(){//コンストラクタ。初期化されたときに動く</div>
<div>　</div>
<div><span style="color: #ff0000;">functionのあとには半角スペースが要る</span></div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040807.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586329453/" alt="" /></a></div>
<div>　</div>
<div>ふつう戻り値は複数戻せない</div>
<div>配列ならOK</div>
<div>　</div>
<div>つづきは金曜のテストの後で</div>
<div>　</div>
<div><hr /></div>
<div>ここまで<br />
</div>
<div><strong>list.php</strong></div>
<div>&nbsp;</div>
&lt;?php<br />
require_once("class/lunch.class.php");<br />
$obj=new Lunch();<br />
?&gt;<br />
<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;ニューリスト&lt;/title&gt;<br />
&nbsp; &lt;link rel="stylesheet" href="css/style.css"&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;div id="container"&gt;<br />
&nbsp;&nbsp; &lt;h1&gt;new list&lt;/h1&gt;<br />
&nbsp;&nbsp; &lt;ul id="m_list"&gt;<br />
&nbsp; &lt;/div&gt;<br />
&nbsp; <br />
&nbsp; <br />
&nbsp; &lt;script src="js/lunch.js"&gt;&lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
&nbsp;<br />
<hr /><strong>style.css</strong><br />
&nbsp;<br />
body{<br />
&nbsp;background:#fff;<br />
}<br />
#container{<br />
&nbsp;width:80%;<br />
&nbsp;margin:auto;<br />
}<br />
<br />
<br />
<hr /><strong>lunch.js</strong><br />
&nbsp;<br />
$(function(){<br />
&nbsp;console.log("hoge");<br />
});<br />
&nbsp;<br />
<hr /><strong>lunch.class.js</strong><br />
&nbsp;<br />
&lt;?php<br />
class Lunch{<br />
&nbsp;private $pdo;//外から直接アクセスはできないように<br />
&nbsp;<br />
&nbsp;public function __construct(){//コンストラクタ。初期化されたときに動く<br />
&nbsp;<br />
&nbsp; // -----------------<br />
&nbsp; //環境によって変更<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $host="localhost";<br />
&nbsp; $dbuser="root";<br />
&nbsp; $dbpass="";<br />
&nbsp; $dbname="lunch";<br />
&nbsp; // -----------------<br />
&nbsp; <br />
&nbsp; $dsn = "mysql:host={$host}; dbname={$dbname}; charset=utf8";<br />
&nbsp; $this-&gt;pdo=new PDO($dsn,$dbuser,$dbpass); //$pdoとは書かない<br />
&nbsp; <br />
&nbsp;}//constructの終わり<br />
&nbsp;<br />
&nbsp;public function getAllMenu{<br />
&nbsp; $sql = "SELECT * FROM foods";<br />
&nbsp; $rs = $this-&gt;pdo-&gt;query($sql);<br />
&nbsp; $rows = fetchAll(PDO::FETCH_ASSOC);<br />
&nbsp; return $rows;//戻り値<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
?&gt;<br />
<br />
<br />

<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040808.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586329475/" alt="" /></a></div>
<div></div>
<div></div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/96</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-22-%20%E5%92%8C%E6%BC%94%E7%AE%97" />
    <published>2021-01-28T18:41:35+09:00</published> 
    <updated>2021-01-28T18:41:35+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(22) 和演算</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div><strong>UNION ALLについて</strong></div>
<div></div>
<div>lunch db</div>
<div>　</div>
<div>sales table/column2</div>
<div>s_id int(primary,A.I.)</div>
<div>f_id int</div>
<div>　</div>
<div>sales2/column2</div>
<div>s_id int(primary,A.I.)</div>
<div>f_id int</div>
<div></div>
<div>&nbsp;</div>
<div>売れたものを記録したい</div>
<div>2つのよく似たテーブルにf_idに違う値を入れておく</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040607.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586156461/" alt="" /></a> <br />
&nbsp;</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040608.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586156474/" alt="" /></a></div>
<div>　</div>
<div><hr /></div>
<div>支社ごとに違うテーブルで何が売れたかあがってくるとする<br />
（支社1：sales /　支社2：sales2)</div>
<div>これをマージしたい</div>
<div>和演算をしたい</div>
<div>　</div>
<div><hr /></div>
<div>SELECT * FROM sales</div>
<div>UNION ALL</div>
<div>SELECT * FROM sales2</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040609.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586156491/" alt="" /><br />
&nbsp;</a></div>
<div><hr /></div>
<div>統合後の結果が出た</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040610.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586156503/" alt="" /></a></div>
<div>　</div>
<div></div>
<div>前提条件として、セレクトするカラム数とカラム名が一緒でないといけない</div>
<div>もし違ったらAS句で修正してやる</div>
<div>　</div>
<div><hr /></div>
<div>しかしこれでは「どの支社の売り上げか」わからない</div>
<div>　</div>
<div>3つめのカラムをでっちあげ、</div>
<div>店舗名のカラムを無理やり入れる</div>
<div>　</div>
<div>SELECT s_id, f_id,"支店A" FROM sales&nbsp;</div>
<div>UNION ALL&nbsp;</div>
<div>SELECT s_id, f_id ,"支店B" FROM sales2</div>
<div>　　</div>
<div>でた　</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040611.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1586156525/" alt="" /></a></div>
<div>　</div>
<div><hr /></div>
<div>こういう風に存在しないカラムを出力することもできるらしい</div>
<div>　</div>
<div>SELECT s_id, f_id,"支店A" FROM sales&nbsp;</div>
<div>UNION ALL&nbsp;</div>
<div>SELECT s_id, f_id ,"支店B" FROM sales2</div>
<div>UNION ALL&nbsp;</div>
<div>SELECT s_id, f_id ,"支店B" FROM sales3</div>
<div>UNION ALL&nbsp;</div>
<div>SELECT s_id, f_id ,"支店B" FROM sales4</div>
<div>　</div>
<div>とかでいくつでもできるらしい</div>
<div>　</div>
<div>UNION ALLはこうやって全件出てくるが、</div>
<div>UNIONにしてしまうと、完全にかぶったデータは重複データとしてなくなってしまう</div>
<div>売上をみるにはALLがいる</div>
<div>しかもUNION　ALLの方が時間が速い</div>
<div>　</div>
<div>これが集合演算の和演算</div>
<div>AにあってBにないという差演算もできるらしい</div>
<div>ただこっちはちょっとむつかしいらしい</div>
<div>サーバの種類によって方言があるらしい　</div>
<div>　</div>
<div><hr /></div>
<div>なおMySQLより実際まりあDBで直書きしたほうがめっちゃ速いらしい</div>
<div>数時間かかるものが分単位で済むとか</div>
<div>　</div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/95</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-21-%20%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%AE%E3%81%BF%E3%82%92%E6%8A%BD%E5%87%BA" />
    <published>2021-01-28T18:31:55+09:00</published> 
    <updated>2021-01-28T18:31:55+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(21) 正規表現のみを抽出</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>うにゃうにゃした内容物から「正規表現」のものを探し当てたい</div>
<div>　</div>
&lt;?php<br />
for($i=0; $i&lt;300; $i++) {<br />
&nbsp;$y = rand(1970, 2020);<br />
&nbsp;$m = rand(1, 12);<br />
&nbsp;if($m == 2) {<br />
&nbsp; $d = rand(1, 28);<br />
&nbsp;} elseif($m == 4 || $m == 6 || $m == 9 || $m == 11) {<br />
&nbsp; $d = rand(1, 30);<br />
&nbsp;} else {<br />
&nbsp; $d = rand(1, 31);<br />
&nbsp;}<br />
&nbsp;if($i % 11 == 0) {<br />
&nbsp; echo "&lt;div&gt;{$y}_{$m}_{$d}&lt;/div&gt;\n";<br />
&nbsp;} elseif($i % 17 == 0) {<br />
&nbsp; echo "&lt;div&gt;{$y}-{$m}{$d}&lt;/div&gt;\n";<br />
&nbsp;} else {<br />
&nbsp; echo "&lt;div&gt;{$y}-{$m}-{$d}&lt;/div&gt;\n";<br />
&nbsp;}<br />
}<br />
?&gt;
<div></div>
<div>　</div>
<div><hr /></div>
<div>このプログラムで出力されたものをサクラエディタに貼り付ける</div>
<div>正しいものもあかんやつも混じってる300個の日付<br />
<br />
</div>
<div>正規表現を検索するのはサクラエディタの普通の検索にある　</div>
<div>　</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040101.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726283/" alt="" /></a></div>
<div>　</div>
<div><hr /><strong>メタ文字</strong></div>
<div><br />
ある種の文字を指定するための特殊な文字のこと</div>
<div>アルファベットを指定したかったら<span style="color: #ff0000;">\w</span></div>
<div>数字は<span style="color: #ff0000;">\d</span></div>
<div>￥は環境によってバックスラッシュで出ることもあるが意味は同じ</div>
<div>　</div>
<div>さて、年について。数字が4つ続くという正規表現</div>
<div>&rarr;\d\d\d\d</div>
<div>しかし美しくない</div>
<div>\d{4}</div>
<div>これでよい</div>
<div>　</div>
<div>月は1桁か2文字かわからない</div>
<div>揺れがあるときはカンマを使う</div>
<div>\d{1,2}</div>
<div>1つか2つ</div>
<div>　</div>
<div>日も1から31まであって一桁化二けたかわからない</div>
<div>&rarr;</div>
<div>\d{1,2}</div>
<div>&nbsp;</div>
<div><hr /></div>
<div>\d{4}-\d{1,2}-\d{1,2}</div>
<div>&nbsp;</div>
<div>しかしこれだと、<br />
「この前にほげほげ」「この後にほげほげ」が付いていてもヒットしてしまうので、</div>
<div></div>
<div>＾</div>
<div>これが最初の印（ひらがなのへのところにある）</div>
<div>　</div>
<div>$</div>
<div>これがラストの印</div>
<div>　</div>
<div>^\d{4}-\d{1,2}-\d{1,2}$</div>
<div>　</div>
<div><hr /></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040102.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726307/" alt="" /><br />
&nbsp;</a></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040103.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726322/" alt="" /></a></div>
<div>　</div>
<div><hr /></div>
<div>じゃあ正しいやつを「年月日」に変えたい</div>
<div>置換する</div>
<div>置換前　^\d{4}-\d{1,2}-\d{1,2}$</div>
<div>&rarr;ここはそのままにしてほしい、というところを丸括弧で囲う</div>
<div>&rarr;</div>
<div>^(\d{4})-(\d{1,2})-(\d{1,2})$</div>
<div>&nbsp;</div>
<div>この丸括弧は配列っぽく記憶されるらしい</div>
<div>1つめの記憶、2つ目の記憶、3つ目の記憶みたいになるらしい</div>
<div>丸括弧の1つめが　\1　となる</div>
<div>よって置換後は</div>
<div>　</div>
<div>\1年\2月\3日</div>
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040104.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726344/" alt="" /></a></div>
<div>　</div>
<div><hr /></div>
<div>文字を表すメタ文字はドットもしくはプラス</div>
<div>数字でも文字でもなんでもいいよというメタ</div>
<div>　</div>
<div>. あるかもしれないし、ないかも</div>
<div>+ 最低1文字はある</div>
<div>　</div>
<div>という違いがある</div>
<div>　</div>
<div>メタ文字を詳しくなりたかったらそういう本を読むこと</div>
<div>　</div>
<div><hr /></div>
<div>さてサクラエディタのやり方はこのとおり</div>
<div>ではプログラムでどう利用するか</div>
<div>　</div>
<div>ハイフン付きで郵便番号の正規表現なら？</div>
<div>　</div>
<div>^(\d{3})-(\d{4})$</div>
<div>　</div>
<div><hr /></div>
<div>スクリプトで検証してみましょう</div>
<div>　</div>
<div>値を取得するのはvalメソッド</div>
<div>ここが空っぽの場合は別処理が必要だが今回は割愛</div>
<div>　</div>
<div>var zip = $('#zipcode').val();</div>
<div>　　</div>
<div>matchというのがパターンマッチングをするメソッド</div>
<div>結果は配列データとして受け取れる</div>
<div>よって</div>
<div>var arr = zip.match();//この配列が空ならマッチしてない</div>
<div>　</div>
<div>メタ文字は特別な予約語になっているので<br />
はじまりとおわりをスラッシュにする決まり</div>
<div>　</div>
<div>var arr = zip.match(/^(\d{3})-(\d{4})$/);</div>
<div>　</div>
<div>「スラッシュで囲ったものは正規表現のメタ文字だ」と解釈される</div>
<div>正規表現にあってないとnullが返る</div>
<div>　<br />
<hr /></div>
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;submitを止める&lt;/title&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;form action="stop_submit2.php" method="post" id="f1"&gt;<br />
&nbsp;&nbsp; &lt;p&gt;郵便番号をハイフン付きで入力してください&lt;/p&gt;<br />
&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;input type="text" name="zipcode" id="zipcode"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;button type="submit"&gt;送信&lt;/button&gt;<br />
&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &lt;p id="msg"&gt;&lt;/p&gt;<br />
&nbsp; &lt;/form&gt;<br />
&nbsp;<br />
&nbsp; &lt;script&gt;<br />
&nbsp;&nbsp; $(function(){<br />
&nbsp;&nbsp;&nbsp; console.log("hoge");<br />
&nbsp;&nbsp;&nbsp; $('#f1').on('submit',function(event_hoge){<br />
&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp; var flag = confirm('送信しますか？');//okかcancel押すかでflagにtrueかfalseが入る<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(!flag){//偽の時は<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event_hoge.preventDefault();//発生したイベントが無になる<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; //バリデーション<br />
&nbsp;&nbsp;&nbsp;&nbsp; var zip = $('#zipcode').val();//取得<br />
&nbsp;&nbsp;&nbsp;&nbsp; var arr = zip.match(/^(\d{3})-(\d{4})$/);//この配列が空ならマッチしてない<br />
&nbsp;&nbsp;&nbsp;&nbsp; console.log(arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp; event_hoge.preventDefault();<br />
&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; });<br />
&nbsp; <br />
&nbsp; &lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;
<div></div>
<div>&nbsp;</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040105.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726367/" alt="" /></a> <br />
&nbsp;</div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040106.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726379/" alt="" /></a></div>
<div></div>
<div><hr /></div>
<div>じゃあif文でnullかどうか見ればいい</div>
<div>　</div>
<div>nullならとめて警告を出し、</div>
<div>マッチしたら次のページに行く</div>
<div>　<hr /></div>
<strong>stop_submit1.php</strong><br />
&nbsp;<br />
&lt;!DOCTYPE html&gt;<br />
&lt;html lang="ja"&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp; &lt;meta charset="UTF-8"&gt;<br />
&nbsp; &lt;title&gt;submitを止める&lt;/title&gt;<br />
&nbsp; &lt;script src="../jquery-3.4.1.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp; &lt;form action="stop_submit2.php" method="post" id="f1"&gt;<br />
&nbsp;&nbsp; &lt;p&gt;郵便番号をハイフン付きで入力してください&lt;/p&gt;<br />
&nbsp;&nbsp; &lt;p&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;input type="text" name="zipcode" id="zipcode"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;button type="submit"&gt;送信&lt;/button&gt;<br />
&nbsp;&nbsp; &lt;/p&gt;<br />
&nbsp;&nbsp; &lt;p id="msg"&gt;&lt;/p&gt;<br />
&nbsp; &lt;/form&gt;<br />
&nbsp;<br />
&nbsp; &lt;script&gt;<br />
&nbsp;&nbsp; $(function(){<br />
&nbsp;&nbsp;&nbsp; console.log("hoge");<br />
&nbsp;&nbsp;&nbsp; $('#f1').on('submit',function(event_hoge){<br />
&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp; var flag = confirm('送信しますか？');//okかcancel押すかでflagにtrueかfalseが入る<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(!flag){//偽の時は<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event_hoge.preventDefault();//発生したイベントが無になる<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; //バリデーション<br />
&nbsp;&nbsp;&nbsp;&nbsp; var zip = $('#zipcode').val();//取得<br />
&nbsp;&nbsp;&nbsp;&nbsp; var arr = zip.match(/^(\d{3})-(\d{4})$/);//この配列が空ならマッチしてない<br />
&nbsp;&nbsp;&nbsp;&nbsp; //console.log(arr);<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(arr==null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event_hoge.preventDefault();//submitを無効化してとめる<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $('#msg').text("半角英数で7桁の郵便番号をハイフン付きで！");<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; });<br />
&nbsp; <br />
&nbsp; &lt;/script&gt; &nbsp;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040107.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726394/" alt="" /></a></div>
<div>&nbsp;</div>
<div><hr /></div>
<div>phpでも同じことが出来る</div>
<div>　</div>
<div>php manual</div>
<div>preg_match</div>
<div>https://www.php.net/manual/ja/function.preg-match.php</div>
<div>&nbsp;</div>
<div>jsは引数1つでよかったが</div>
<div>phpは最低限2ついる</div>
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040108.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585726420/" alt="" /></a></div>
<div>　</div>
<div>perlのぺくるというのを引き継いでいるらしい</div>
<div>0か1かで返る</div>
<div>matchしたら1</div>
<div></div>
<div>　</div>
<div><hr /></div>
<div>preg_replaceは置換を行う</div>
<div><a href="https://www.php.net/manual/ja/function.preg-replace.php" title="">https://www.php.net/manual/ja/function.preg-replace.php</a></div>
<div>　</div>
<div><br />
<hr /></div>
<div>ではphpでもやろう</div>
<div>　</div>
<div>&lt;?php</div>
<div>$code="123-4567";//これが正しいかを検査する</div>
<div>$flag=</div>
<div>　</div>
<div>これをflagで受け取る</div>
<div>jsとは違って文字列として渡す</div>
<div></div>
<div><a target="_blank" href="//karasumaru.ko-me.com/File/2020040109.PNG" title=""><img src="//karasumaru.ko-me.com/Img/1585718340/" alt="" /></a></div>
<div>　</div>
<div>&lt;?php</div>
<div>$code="123-45678";//これが正しいかを検査する</div>
<div>$flag= preg_match("/^\d{3}-\d{4}$/",$code);</div>
<div>if($flag){</div>
<div>echo ("matchしました");</div>
<div>}else{</div>
<div>echo ("not match");</div>
<div>}</div>
<div>?&gt;</div>
<div>　</div>
<div>もし$codeが正しければmatchにいくし</div>
<div>だめならnot matchにいく</div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
  <entry>
    <id>karasumaru.tosalog.com://entry/94</id>
    <link rel="alternate" type="text/html" href="https://karasumaru.tosalog.com/high/%E9%AB%98%E5%BA%A6-20-%20submit-%E9%80%81%E4%BF%A1-%E3%82%92%E6%AD%A2%E3%82%81%E3%82%8B" />
    <published>2021-01-28T18:27:13+09:00</published> 
    <updated>2021-01-28T18:27:13+09:00</updated> 
    <category term="高度" label="高度" />
    <title>高度(20) submit(送信)を止める</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>submitを止めるやり方</div>
<div>　</div>
<div>formのイベントとして設定する。</div>
<div>エンターキーを押されると先に進んじゃうので。</div>
<div>idをつける</div>
<div></div>
&nbsp; &lt;form action="text2.php" method="post" id="f1"&gt;<br />
&nbsp; <br />
&nbsp; &lt;/form&gt;
<div>　</div>
<div><hr /></div>
<div>今回は沢山じゃないのでjsを内部に書く<br />
<br />
</div>
<div>$('#f1').on('submit',function(){</div>
<div>　　　　</div>
<div>});</div>
<div>&nbsp;</div>
<div>submitイベントは「エンターで来てもクリック出来ても<br />
とにかくサブミット状態になったら」ということで、on clickと違う</div>
<div>　</div>
&nbsp;&nbsp;&nbsp; console.log("hoge");<br />
&nbsp;&nbsp;&nbsp; $('#f1').on('submit',function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp; var flag = confirm('送信しますか？');//okかcancelかでflagにtrueかfalseが入る<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(flag == false) return false;<br />
&nbsp;&nbsp;&nbsp; });
<div>　</div>
<div>しかしこれを押すと次のページに行ったりする<br />
止まったりもするが、とにかくこの書き方はよくない書き方</div>
<div>イベント自体をキャンセルしたい</div>
<div>&rarr;<br />
p</div>
&nbsp;&nbsp; $(function(){<br />
&nbsp;&nbsp;&nbsp; console.log("hoge");<br />
&nbsp;&nbsp;&nbsp; $('#f1').on('submit',function(event_hoge){<br />
&nbsp;&nbsp;&nbsp;&nbsp; var flag = confirm('送信しますか？');//okかcancel押すかでflagにtrueかfalseが入る<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(!flag){//偽の時は<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event_hoge.preventDefault();//発生したイベントが無になる<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; });<br />
&nbsp;
<div><hr /></div>
<div>Javascriptでバリデーションをかける</div>
<div></div>]]> 
    </content>
    <author>
            <name>karasumaru</name>
        </author>
  </entry>
</feed>