• ベストアンサー

かなりなお願い!!野球部のスコア入力をHPで反映させたい!質問。

こんばんわ! いつも助けてくださってありがとうございます。 遠征地で野球の試合があります。 野球部のスコアを(一回の裏だとか)回が終わるごとに みんなが見るのでうちのHPに報告したいんですけど いい方法が見つからず質問させてください。 今のところ話し合って次のように考えています。 遠征先のマネージャーのノートPC(無線LAN接続)で 掲示板PHPを流用した入力画面に1と入力(1点入った場合)すると うちのがっこうのHPのスコアボードの一回の裏に1と表示されるように してるんです。 ただ、これだと掲示板のプログラムを18個(一回表から9回裏まで)作らなきゃいけないし効率がよくありません。 要は、遠征先の彼女(WEB閲覧能力のみ、彼女がFTPやHTMLは不可能)に一回から9回までの入力画面を作ってあげて私たちが作ったHPの緑のスコアボードの枠の中に点が入るようにしたいんですけど もっと掲示板のPHPなど使わず一回から9回までの入力をこなすことは可能なのでしょうか? 皆様ならこのような場合どうされますか? ただ、今後のことも考えて現地のノートのLANでリアルタイムに得点を入れたいんです。 それでもっといい方法を考えてるところなんです。 どなたか知恵を貸していただけると助かります!!

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

こんな感じで、全部の欄を作っておいて、データを入れたところだけ変更して,毎回一つのファイルにデータを上書きするのではどうですか? 必須事項は 先にscore.txtを 試合数×9行の 「0\t0」 で作っておきます。(\tはタブ) 省略と書いてあるところは適宜書き込んでください。 検証はしてないので、スペルミスがあったら済みません。 あ、ファイル読み書きエラーもチェックしてなかった。ま、とりあえず。 ---phpファイル一部--- <? $snum = 3; //試合数 $sstr = {0=>'x','y','z' }; // 入力フィールド名の先頭1文字 $sstr2 = {0=>'xxx','yyy','zzz' }; // 試合名 ?> <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post"> <table> <caption> 入力表 </caption> <tr><th>試合名</th><td>1回表</td><td>1回裏</td><td> ...省略...以後9回まで</td></tr> <? $handle = fopen("score.txt", "r"); for(j=0; j<$snum; j++){ // 試合数分のループ print "<tr><th>" +$sstr2[j]+ "</th>"; for(i=1; i<=9; i++){ ii = i+9*j; $s[ii] = fgetcsv($handle, 2, "\t") if( is_array($_POST) ){ $omote = $sstr[j]+i+'o'; $ura = $sstr[j]+i+'u'; if (isset($_POST[$omote]) && $_POST[$omote] >0 ) { $s[ii][0] = $_POST[$omote]; } if (isset($_POST[$ura]) && $_POST[$ura] >0 ) { $s[ii][1] = $_POST[$ura]; } } print "<td><input type=\"text\" name=\"$omote\" width=\"4\" value=\"" + $s[ii][0] + "\"></td><td><input type=\"text\" name=\"$ura\" width=\"4\" value=\"" + $s[ii][1] +"\"></td></tr>"; } } fclose($handle); ?> </table> <input type="submit" name="sub" value="入力"> </form> <br><br> <table> <caption> 結果表 </caption> <tr><th>試合名</th><td>1回表</td><td>1回裏</td><td> ...省略...以後9回まで</td></tr> <? $handle = fopen("score.txt", "w"); for(j=0; j<$snum; j++){ // 試合数分のループ print "<tr><th>" +$sstr2[j]+ "</th>"; for(i=1; i<=9; i++){ ii = i+9*j; print "<td>"+ $s[ii][0] + "</td><td>"+ $s[ii][1] +"</td>"; fputcsv($handle, $s[ii], "\t"); } print "</tr>\n"; } fclose($handle); ?> </table>

その他の回答 (2)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

プログラムを書く自信がないなら、とりあえず掲示板の設置はできるんですよね? 普通に考えれば、掲示板は1個でいいように思えるのですが…。 ごく単純に「第2試合 2回裏 1点追加で3点」など入力すればいいのでは? 入力からスコアボードに反映されるまでの間に何かあるのかが、ちょっと解りません。 もちろん将来的にでも、最もスマートなのは、入力画面に「第○試合」、「○回」、「裏/表」、の選択欄があり、「1点追加」ボタンをクリックするとスコアボードに反映される、というのが自然でしょう。 操作ミスもありえるので取り消しように「1点減算」ボタンもあったほうがいいかもしれません。

  • 12m24
  • ベストアンサー率23% (193/817)
回答No.1

 そのような時は、「1回表」~「18回裏」(延長を含む)分のリストボックスなどを用意し、たとえば関数「submit_score」の引数を以下のようにすれば同でしょうか? (PHPはわからんので、CやJavaの形式で・・・) submit_score(int score, int ening)//点数、イニングの数値 {...}  ほかにも管理用にそのほかの引数が必要になるかと思われますが、最低限上記の機能は上記の考え方でOKだと思います。ただ、サーバー側のプログラムも少しいじらないといけないでしょうが・・・、プログラムはすっきりすると思います。

noname#20805
質問者

お礼

ありがとうございます! ホント3試合もあって18x3個も掲示板はきついと思っていたんです。 何とか私も、方法を探しているのですが、 関数をまだものにできず、困っているところです。

関連するQ&A

専門家に質問してみよう