PHP フォームを使った計算 【配列】
S本さんとS藤さんが、前回作ったフォームを実戦で使ってみてもらえるとの事でしたので、さっそくバージョンアップしました。
パっと見はほとんど変わりませんが、スクリプトの中身はかなり変わりました。
僕はギャンブルは全くやらないので詳しくはわからないのですが
あると便利そうなものを想像して、いろいろ付け足してみました。
続・多点買いで均等払いになる投資金額を求める
《主な変更点》
*点数は最大10点まで、好きな点数で使える。
*買い目等を記入する memo 欄を追加(空白でも可)
*金額は3桁ごとにカンマ区切りで表示。
*オッズが整数の場合でも、小数点第一位まで表示。
*払い戻しが投資金額を下回る場合は、払戻金を赤色で表示。
*変換切替がじゃまくさい場合は、全角数字でもOK
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <style> body{padding:10px;background-color:#000;color:#fff;line-height:40px} h1{color:#f00;font-size:16px;margin:0} </style> <title>続・多点買いで均等払いになる投資金額を求める</title> </head> <body> <h1>続・多点買いで均等払いになる投資金額を求める</h1> <form method="POST" action="php02_2.php"> 投資金:<input type="text" name="money"> <input type="submit" value="計算する"> <div id="loops"></div> <script>//------------------------------------------------------------> var loop =""; for (i=0;i<10;i++){ loop += ' memo:<input type="text" size="10" name="text[]"> '; loop += ' オッズ:<input type="text" size="3" name="odds[]"><br>';} document.getElementById("loops").innerHTML=loop; </script><!-----------------------------------------------------------> </form> </body> </html>
php02_2.php
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <style> body{padding:10px;background-color:#000;color:#fff;line-height:40px} h1{color:#f00;font-size:16px;margin:0;} </style> </head> <body> <?php # 代入&計算 ----------------------------------------------------- $moy = htmlspecialchars(mb_convert_kana($_POST['money'],"a","utf-8")); $a=0; for ($i=0;$i<10;$i++){ $tx[$i] = htmlspecialchars(mb_convert_kana($_POST['text'][$i],"a","utf-8")); $od[$i] = htmlspecialchars(mb_convert_kana($_POST['odds'][$i],"a","utf-8")); $a += $od[$i]; } $c=0; for ($i=0;$i<10;$i++){ if ($od[$i]){$b[$i] = $a/$od[$i];} $c += $b[$i]; } $kei=0; for ($i=0;$i<10;$i++){ if ($od[$i]){$d[$i] = round($b[$i]/$c*$moy,-2);} $kei += $d[$i]; } # 表示 ----------------------------------------------------------- echo '<h1>投資金額 合計 ---> '.number_format($kei).' 円</h1>'; for ($i=0;$i<10;$i++){ if ($d[$i]){ $o = number_format($od[$i],1); if ($tx[$i]!='') { $tx[$i] .= " ---> ";} else { $tx[$i] = "オッズ ".$o." --->"; } echo " $tx[$i] ".number_format($d[$i])." 円 × "; $p = number_format($od[$i]*$d[$i]); if ($od[$i]*$d[$i]<$moy){ $p = '<span style="color:#f00">'.$p.'</span>';} echo $o." 倍 = ".$p.' 円<br>'; } } echo '<input type="button" onClick="history.back()" value="戻る">'; ?> </body> </html>
PHP フォームを使った計算
ギャンブルの多点買いで、どれが当たってもほぼ均等な払戻金になる
資金配分を計算。
多点買いで均等払いになる投資金額を求める
公営ギャンブルに合わせて最小単位を100円に調整している為
投資金の合計に±100円の誤差が出る場合がある。
配列を使えば10点買いとかでももっとシンプルに出来そう。
PHPは変数の頭に$が必要なところがかなりダルい。
<!DOCTYPE html> <html lang="ja"> <head> <style> body{padding:20px;background-color:#000;color:#fff;line-height:40px} h1{color:#f00;font-size:16px} </style> <meta charset="UTF-8"> <title>PHPで計算</title> </head> <body> <h1>多点買いで均等払いになる投資金額を求める</h1> <form action="keisan.php" method="get"> 投資金:<input type="text" name="money"><br> オッズ1:<input type="text" name="odds1"><br> オッズ2:<input type="text" name="odds2"><br> オッズ3:<input type="text" name="odds3"><br> <input type="submit" value="計算する"> </form> </body> </html>
keisan.php
<style> body{padding:20px;background-color:#000;color:#fff;line-height:30px} h1{color:#f00;font-size:16px} </style> <?php # 変数代入 ------------ $moy = $_GET['money']; $od1 = $_GET['odds1']; $od2 = $_GET['odds2']; $od3 = $_GET['odds3']; # 計算 --------------------- $a = $od1 + $od2 + $od3; $b1 = $a/$od1; $b2 = $a/$od2; $b3 = $a/$od3; $c = $b1 + $b2 + $b3; $d1 = round($b1/$c*$moy,-2); $d2 = round($b2/$c*$moy,-2); $d3 = round($b3/$c*$moy,-2); # 表示 ----------------------------------------------------------- echo '<h1>投資金 合計:'.($d1+$d2+$d3).'円</h1>'; echo "オッズ $od1 倍 ⇒ $d1 円 × $od1 = ".($od1*$d1).' 円<br>'; echo "オッズ $od2 倍 ⇒ $d2 円 × $od2 = ".($od2*$d2).' 円<br>'; echo "オッズ $od3 倍 ⇒ $d3 円 × $od3 = ".($od3*$d3).' 円'; ?>
PHP データベースへアクセスする
*更新の度に全曲をシャッフルする
*何曲目まで再生したかを表示
*一度再生したら一巡するまで同じ曲を再生しない
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>作業用音楽装置2</title> </head> <body style="background-color:#000;color:#fff;padding:10px"> <input type="button" value="再生" onclick="start();"> <span id="saisei" style="margin :10px 0;font-size:13px"></span> <?php // phpinfo(); --> PHP Version 5.3.1 // #===================================================== $_axs = mysql_connect('localhost', 'root', 'root'); $_sel = mysql_select_db('test', $_axs); $_sel = mysql_query('SET NAMES utf8', $_axs); #===================================================== $_sel = mysql_query('SELECT * FROM music', $_axs); while ($dat = mysql_fetch_array($_sel)) { $aa[$b]=$dat[0]; $b++; } shuffle($aa); for ($i=0;$i<$b;$i++){ $a.=$aa[$i].","; } #============================= $_axs = mysql_close($_axs); #============================= ?> <script type="text/javascript"> <!-- var a="<?php echo $a ?>"; var b="<?php echo $b ?>"; var c=document.getElementById("saisei") var i=0; list=a.split(","); hyouji(); function start(){ if (i==b) {i=0;} window.open(list[i]); i++; hyouji(); } function hyouji(){ c.innerHTML = " 全 "+b+" 曲中 … "+i+" 曲目"; } --> </script> </body> </html>
鬱陶しい広告がキレイさっぱりなくなるAdblock
YouTube の始まる前の鬱陶しい CM とか邪魔な広告が、一切表示されなくなります。
Chrome
https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom?hl=ja
Firefox
https://addons.mozilla.jp/firefox/details/1865
作者による説明
Adblock Plus では Web をコントロールし外観を変えることができます。広告削除からマルウェアのブロックまで対応できる 40 以上の同期フィルタがあり、言語に応じて自動的に設定されます。また、コンテキストメニューやタブ、リストからの選択など便利な機能を利用して自分でカスタマイズすることもできます。
追記
Adblock で動画まで表示されなくなってしまった場合の対処法
http://www.oshiete-kun.net/archives/2009/02/9_0017.html
PHP echo と print の違い
echo と print の違いが、すごくわかりやすくまとめてありました。
java script 作業用音楽装置
作業中の音楽は YouTube で聴く派です。
BGMを流していて曲が終わった時、次の1曲を選ぶ時に(結局いつもの曲になるのに)意外と時間喰ってるなあと思って、java script でなんとかならないものかと考えました。
YouTube の自動再生を利用して、あらかじめ選んでおいたよく聴く曲(動画)の中からランダムに再生する仕組みを作ってみました。
*あらかじめ配列に好きなだけ、YouTube のアドレスを追加しておく
*ボタンをクリックしたらランダムに選択され、その動画が流れる
スクリプトは大半が YouTube のアドレスで、メインの部分は超シンプルです。
ブックマークみたいなもんですが、ランダムに選曲されるところがミソです。
厳密にいうと「再生」してるわけではなくて、単にリンク先を開いているだけですがw使ってみると思ってた以上に便利だったので、今後スキルに合わせてもっと使いやすくバージョンアップしていきます。(多分)
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>java script 作業用音楽装置</title> </head> <body> <input type="button" value="再生" onclick="random();"> <script> <!-- var i=0 var list=[ "http://www.youtube.com/watch?v=IuySfO8UMOU", "http://www.youtube.com/watch?v=qPYC-ImquTk", "http://www.youtube.com/watch?v=18_-fI-AgyI", "http://www.youtube.com/watch?v=W9deYiOc7Qk", "http://www.youtube.com/watch?v=s5ls7axfIhQ", "http://www.youtube.com/watch?v=mC4zSlbG1AU&feature=related", "http://www.youtube.com/watch?v=-vwkiG7sEHw", "http://www.youtube.com/watch?v=iMYpGoXI77Q&feature=fvwrel", "http://www.youtube.com/watch?v=rhN7SG-H-3k", "http://www.youtube.com/watch?v=76AwAPehK9Q", "http://www.youtube.com/watch?v=NVnDtdAfO2s", "http://www.youtube.com/watch?v=X4frpiT5gZs&feature=related", "http://www.youtube.com/watch?v=gTP_B-Q6gPY&feature=related", "http://www.youtube.com/watch?feature=player_embedded&v=e4EqjvnWfRM", "http://www.youtube.com/watch?v=LO1eU0a_T1o", "http://www.youtube.com/watch?v=vrrF0FrjM3w", "http://www.youtube.com/watch?v=CQwpJ_b1MFU&feature=related", "http://www.youtube.com/watch?v=wafm6WGfAxM&feature=related", "http://www.youtube.com/watch?v=-HqvuwrdITE", "http://www.youtube.com/watch?v=nGLyyFIm_ao", "http://www.youtube.com/watch?v=1WkHlof8iqs", "http://www.youtube.com/watch?v=GJ5ufqcj_hA", "http://www.youtube.com/watch?v=FJuFqxAUyog", "http://www.youtube.com/watch?v=WAUJC8HKAWI", "http://www.youtube.com/watch?v=Rftw_GOu8hI", "http://www.youtube.com/watch?v=RSnUR_pnUd0", "http://www.youtube.com/watch?v=j1PDjAMGPm0&feature=related", "http://www.youtube.com/watch?v=PYq1f-F97Pk&feature=related", "http://www.youtube.com/watch?v=sZevW7VLROQ&feature=youtu.be", "http://www.youtube.com/watch?v=eWzTWiLObGs&feature=related", "http://www.youtube.com/watch?v=4L7KYpn9wfY", "http://www.youtube.com/watch?v=qTqPy7kbVMA", "http://www.youtube.com/watch?v=kh3wcEFOG2E&feature=related", "http://www.youtube.com/watch?v=A7Ws5zC6-8M", "http://www.youtube.com/watch?v=K7ukmTpYLNU&feature=related", "http://www.youtube.com/watch?v=TYXLmkEx9gM", "http://www.youtube.com/watch?v=zeRoEBvBL4Y", "http://www.youtube.com/watch?v=HJQFiVHae9I", "http://www.youtube.com/watch?v=3Di6sF7ym0U&feature=related", "http://www.youtube.com/watch?v=NSG5lghZANg", "http://www.youtube.com/watch?v=KTYD3Hgw2kI&feature=related", "http://www.youtube.com/watch?v=m9We2XsVZfc", "http://www.youtube.com/watch?v=ZCTiJnXW-9w&feature=related", "http://www.youtube.com/watch?v=bZS6Qnyq_0E", "http://www.youtube.com/watch?v=ld2YAKLLSuo", "http://www.youtube.com/watch?v=9WkaoupfcVI", "http://www.youtube.com/watch?v=Ega858XBBXA", "http://www.youtube.com/watch?v=JYsKDaQIX54", "http://www.youtube.com/watch?v=PrStAppHGqU", "http://www.youtube.com/watch?v=JBfEGS3Zw54", ]; for(;;){ if (list[i]==null ) break ; i++; } document.write("全 "+i+" 曲 からランダム再生"); function random(){ window.open(list[Math.floor(Math.random()*i)]); } --> </script> <div style="margin :100px;"></div> </body> </html>
japa script ストップウォッチ
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <style> body{ background-color:#000; color:#fff; padding :10px; } h1{ margin :0; padding :5px; width :250px; text-align:center; } #sec,#mode{ background-color :#aaa; color :#000; width :250px; margin :20px 0; padding :5px; text-align:center; } #sec{ font-size:100px; } #mode,.button{ font-size:30px;font-weight:bold; } #play{ margin :30px 0 100px;} </style> <title>java script ストップウォッチ</title> </head> <body> <h1>ストップウォッチ</h1> <div id="mode">練習モード</div> <div id="sec">0.00</div> <input type="button" value="練習モード" onclick="rens();"> 数字が表示されます。<br> <input type="button" value="本番モード" onclick="honb();"> 数字が表示されません。<br> <input type="button" value="スタート" onclick="start();"><br> <input type="button" value="ストップ" onmousedown="stop();"><br> <div id="play"> <a href="http://www.youtube.com/watch?v=IOKwNybh64Y" target="_blank">遊び方(前半)</a><br><br> <a href="http://www.youtube.com/watch?v=CgMcQWVQp0c&feature=relmfu" target="_blank">遊び方(後半)</a> </div> <script type="text/javascript"><!------------------------------------------------> var a=0,b=0,c=0,time,mode=0,run; var mo=document.getElementById("mode") var se=document.getElementById("sec") function start(){ if (run) return; run=1; time=setInterval(function(){ c++; if (c>9) { c=0; b++; if (b>9) {b=0; a++; if (a>59) a=0; }} if (mode) { se.innerHTML=c+"."+c+c; }else{ se.innerHTML=a+"."+b+c; }},10); } function stop() { if (!run) return; run=0; clearInterval(time); se.innerHTML=a+"."+b+c; a=0;b=0;c=0; } function rens() { if (run) return; mode=0;re(); mo.style.backgroundColor ="#aaa"; mo.style.color ="#000"; mo.innerHTML="練習モード"; } function honb() { if (run) return; mode=1;re(); mo.style.backgroundColor ="#000"; mo.style.color ="#f00"; mo.innerHTML="本番モード"; } function re(){ a=0;b=0;c=0;se.innerHTML="0.00"; } </script><!----------------------------------------------------------------------> </body> </html>