• 締切済み

phpのプログラム

php初心者です。 以下がうまく実行できません。 どなたかご教授お願いします。 <html> <body> <?php $pr1 = new Person; $pr2 = new Person; ?> <table border = "2"> <tr bgcolor = aqua> <th>名前</th> <th>年齢</th> </tr> <?php $pr1->setname("佐藤"); $pr1->setage(34); $pr2->setname("田中"); $pr2->setage(45); print"<tr><td>"; print $pr1->getname(); print "</td><td>"; print $pr1->getage(); print"</td></tr>" print"<tr><td>"; print $pr2->getname(); print "</td><td>"; print $pr2->getage(); print"</td></tr>" ?> </table> <?php class Person{ private $name = "姓名"; private $age = 20; public function setname($nm) { $this->name = $nm; } public function setage($ag) { $this->age = $ag; } public function getname(){return $this->name;} public function getage(){return $this->age;} } ?> </body> </html> よろしくお願いします。

  • PHP
  • 回答数6
  • ありがとう数1

みんなの回答

回答No.6

>わざわざゲッタ、セッタをかぶせなくても public 変数でよい。 ケースバイケースかと。 <?php class Idol extends Parson{ public function setage($age){ $this->age = $age - 2; //2歳どうしてもさば読みたい return $this; //ついでにメソッドチェーンもしたい。 } } ?> とか。 後で細かい修正かけられるし、メソッド一個かませておいたほうがいい場合もあるんじゃないですかね。 あと、 >function h($str, $type=ENT_COMPAT) { echo htmlentities($str, $type, 'Shift_JIS'); } function h($str, $type=ENT_COMPAT){ return htmlentities($str, $type, 'Shift_JIS');} として、直接echoするより値返してから、 <?php echo h($val)?> と呼んでやったほうがいい気がします。 ショートタグで書くときも <?=h($val)?> で呼べるし。 これはまぁ好みの問題ですけどね。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.5

> XMLの開始タグと競合するから使わないほうが良い そうくると思った。 そもそも XML は 単体で成り立っているため、PHP で記述する機会はめったにない。 扱う必要がある場合は API を利用してやればいい。適切なインターフェースを利用してやれば、いい加減な XML を記述することもなくなる。 手書きで、なんてのは HTML 特有のことだ。 > スクリプトがサーバー変わった途端に動かなくなってしまった Apache なら、ある程度自由に設定を変更できるため、ほとんど困ることはない。 まぁ環境によるか。だからデフォルト On でいいと。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

>>3 本題とは関係ありませんし、いつも ここで、ナチュラルにズレた回答をしている俺がツッコむ事をご容赦ください。 気になったのは、ここ↓ >> # ショートタグはデフォルトで On でいいよ。php 連呼するほど php 好きでもないし。 ケースバイケースなので、なんとも言えないこともあるのですが、XMLの開始タグと競合するから使わないほうが良いよん。って意見もあります。 実際、俺もショートタグ派なのですが、今まで動いていたスクリプトがサーバー変わった途端に動かなくなってしまったことがあります。 動かないだけならいいもののソースをPHPとして認識してくれなくて、テキストとして表示して、かなり恥ずかしい目にあったことがあります。 なので、<?php ?>と ちゃんと書くようにしている今日この頃です。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

これがいいとは言わないけど、ミスを減らすように書くのもまた必要というか。 <?php class Person { public $name, $age; // どうせセッタ作るなら、使いやすいほうがいいでしょ。 public function set($name, $age) { $this->name = $name; $this->age = $age; } } $pr1 = new Person; $pr2 = new Person; $pr1->set('佐藤', 34); $pr2->set('田中', 45); function h($str, $type=ENT_COMPAT) { echo htmlentities($str, $type, 'Shift_JIS'); } ?> <title></title> <table border=2> <tr bgcolor="aqua"> <th>名前</th> <th>年齢</th> </tr> <tr><td><?php h($pr1->name);?></td><td><?php h($pr1->age);?></td></tr> <tr><td><?php h($pr2->name);?></td><td><?php h($pr2->age);?></td></tr> </table> # 配列にしてしまいたい気分だ。 # 省略できるところを省略せずに、省略できないところを省略するとはまた酔狂な。 # ショートタグはデフォルトで On でいいよ。php 連呼するほど php 好きでもないし。

  • NARH
  • ベストアンサー率82% (88/107)
回答No.2

Parse error: syntax error, unexpected T_PRINT in /なんか/どっか/XXXX.php on line 34 こんな感じでエラーでません? # php.ini で display_errors = On していないと出ないかな。 34 行目付近のソースは 31: print $pr1->getage(); 32: print"</td></tr>" 33: 34: print"<tr><td>"; 35: print $pr2->getname(); 36: print "</td><td>"; 37: print $pr2->getage(); 38: print"</td></tr>" 39: 40: ?> 32行目のprint文に行末の ; がないので print"</td></tr>" print"<tr><td>"; のような命令はムリとPHPはおっしゃっております。 38行目にもないけど、40行目でスクリプトが終わっているので、暗黙的に print"</td></tr>"; が命令と解釈されています。#でもちゃんと書きましょう。 教えて!goo にかぎらず、仕事でも(仕事ならなおさら)、友人に聞くときでも「できません」ではなく、ちゃんと伝える努力をしましょう。 多分これくらいなら、聞くために必要な情報を準備している段階で気づけると思いますよ。 #オブジェクト思考で書いてみようぐらいのスキルはあるのですから、これくらいの問題解決能力はきっとあるのですよ。 #そしたら、かかなくてもいい恥をかく必要もないのですから。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.1

何がうまくいかないのか分からないけど、とりあえず、わざわざゲッタ、セッタをかぶせなくても public 変数でよろい。 class Person{ public $name = "姓名"; public $age = 20; } $pr1 = new Preson; $pr1->name = '斉藤'; $pr1->age = 39; echo $pr1; クラスを使っているとプロパティを全て隠蔽してしまいたい気分に駆られるというか、いつの間にかそうしているときもある。 なぜそうしてしまうか。PHP の場合多態性が変に効いてくるんだよな。(要するに何でも突っ込めてしまう)から、いちいちチェックしたくなる。 使う側の自由を損なうくらいなら public で十分。 幸い PHP には ゲッタセッタが用意されているから、必要に応じて、(デバッグ時)など、ゲッタセッタをかませてやるのもいい。 PHP 開発者も言っているが、変数隠蔽なんざなくてもほとんど問題にならない。かえって窮屈なだけだ。(それより、多重継承ができないのは何とかならんかな) あぁ、セミコロン「;」が抜けている。いい加減入門書はもう少しましなものを掲載してほしい。パーツごとに分けず全てをまぜこぜにするからそんなくだらないミスが生まれる。

関連するQ&A

  • php クラス

    phpエクラスの勉強をしているのですが、参考書に書いているメンバ変数に値を代入している意味がよくわからないので教えてください。メンバ変数の値を書かなくtも動作できるのになぜ必要なのでしょうか? 参考書 <html> <head> <title>サンプル</title> </head> <body> <?php $pr = new Person; $pr->name = "鈴木"; $pr->age = 56; ?> <table border="2"> <tr bgcolor="#AAAAAA"> <th>名前</th> <th>年齢</th> </tr> <?php print "<tr><td>"; print $pr->getname(); print "</td><td>"; print $pr->getage(); print "</td></tr>"; ?> </table> <?php class Person { public $name ="姓名"; public $age = 20; function getname(){return $this->name;} function getage(){return $this->age;} } ?> </body> </html> テスト <?php class Person { public $name ;←ここに値を格納する意味 public $age ;←ここに値を格納する意味 function getname(){return $this->name;} function getage(){return $this->age;} } ?>

    • ベストアンサー
    • PHP
  • PHPコード読解教えてください

    PHP初心者で、現在独学で学んでいます。 環境:XAMPP1.70(最新)でアパッチなど一括ダウンロード・OSはビスタ 以下のコードで分からない点がありますので教えてください(細かい部分は省略しています) また、●の部分は、疑問点や私の考えを示しています。間違っていましたら逐次ご訂正お願いいたします。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php $pr1=new person("鈴木",56) $pr2=new person("佐藤",38) ●コンストラクタを使用するためこの表記 ?> <table border="2"> <tr> <th>名前</th> <th>年齢</th> </tr> <?php print "<tr><td>" print $pr1->getname() print "</td><td>" print $pr1->getage() print "</td></tr>" print "<tr><td>" print $pr2->getname() print "</td><td>" print $pr2->getage() print "</td></tr>" ?> </table> <?php print <hr/> print "合計人数" print person::$count  ?> <?php class person{ private name="姓名" ●● private age= 20  ●●● public static $count=0 ●●●● public function__construct($nm,$ag) ●●●●● { person::$count++  $this->name=$nm if($ag>=20 && $ag<=60) $this->age=$ag   ▲ } else{ $this->age=-1  } public function agtname(){return $this->name}  public function getage(){return $this->age} } ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ●●および●●●・・>この部分のコードの存在意義が分かりません。 ●●●●・・>クラス全体に関連付ける"static"ですが、いまいちよくわかりません。クラス全体に関連付けるとはすなわち分かりやすく言うとどういう意味でしょうか? ●●●●●・・>コンストラクタについてですが、全てのオブジェクトを処理するまで繰り返される、つまり"for"、"while"みたいなものとの理解でよろしいでしょうか?もうしそうであるなら変数$pr1の処理が終わった後、$pr2の処理をするため、▲のところで"$count++"まで戻り、再び下へ処理していくとの理解でよろしいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php クラス

    クラスの勉強をしているのですが、 記憶寿命をfunctionの中で完結させsample2以降でも同じ変数などを使えるようにするため定義済み関数内でクラスを処理したいのですが下記のエラーが出てしまいます。 functionの中でクラスを簡潔させるにはどのようにすればよいでしょうか?また、これはなぜエラーが起きているのでしょうか? function sample1(){ $pr=new parson; $pr->name="鈴木"; $pr->age=56; print $pr->getname(); print $pr->getage(); class parson { public $name="鈴木"; public $age=56; function getname(){return $this->name;} function getage(){return $this->age;} }} sample1(); Fatal error: Uncaught Error: Class 'parson' not found in hoge/class.php:11 Stack trace: #0 /hoge/class.php(27): sample1() #1 {main} thrown in /hoge/class.php on line 11

    • ベストアンサー
    • PHP
  • クロージャ

    javascriptのクロージャについて。 クロージャにnewは必要ですか? コンストラクタであれば、newでオブジェクトを生成しますが、クロージャはどうでしょうか? クロージャ-------------------- function Person(n, a){ var name = n; var age = a; return { getName: function() { return name; }, setAge: function(i){ if( 0<= i ){ age = i; } }, getAge: function(){ return age; } } } var p = new Person('Hanako', 3); // new を付けなくても生成できる

  • 自動で増えてくれるPHP

    以前に質問させて頂いた内容をもとに、以下のようなものを作成しました。 以前の質問 → http://okwave.jp/qa/q6858703.html 作成したもの ↓ 【Aサーバ】「a.txt」(データ用) $name01='一子'; $age01='11'; $name02='二郎'; $age02='22'; 【Bサーバ】「b.html」(表示用) <?php $data = file_get_contents ('http://www.A/a.txt'); foreach (explode("\n" , $data) as $value) { if (preg_match ("/\\$(.+)='(.+)'/", $value, $matches)) { $$matches[1] = $matches[2]; } } echo '<table>'; echo '<tr><th>'.$name01.'</th><td>'.$age01.'</td></tr>'; echo '<tr><th>'.$name02.'</th><td>'.$age02.'</td></tr>'; echo '</table>'; ?> ここで質問なのですが、↑のような仕組みで、a.txtの中身が $name03='三太'; $age03='33'; $name04='~~'; $age04='~~'; と増えていった場合、b.htmlの echo '<tr><th>'.$name~~.'</th><td>'.$age~~.'</td></tr>'; が自動的に増えてくれるようなものを作りたいと考えています。 配列(?)を使うという方法も調べてみたのですが、分からず……。 ご教示願います。

    • ベストアンサー
    • PHP
  • 予約フォームのPHPの書き方について

    はじめまして。PHP初心者です。個人事業のHPを作成しており、予約システムを導入する為、MTS Simple Bookin C Ver.1.4.0 をインストールし、予約に必要な項目をhttps://www.nishi2002.com/3502.htmlやhttp://www.amagistudio.com/reservedemonstration/を参考に作成中です。 必要項目の plan groom_name groom_frigana groom_age bride_name bride_frigana bride_age arrival_date departure_date hotel を手順通りに追加し、予約フォームの入力まはで出たのですが、入力の確認が出てきません、、、 何が原因かご教授頂けましたら幸いです。 【 mtssb-booking-form.phpの編集】 737行辺りから <?php if (0 < $this->clcols['plan']) : ?><tr>    <th><?php echo apply_filters('booking_form_plan', 'プラン') ?></th> <td>        <?php echo esc_html($client['plan']) ?> <input type="hidden" name="booking[client][plan]" value="<?php echo esc_html($client['plan']) ?>" /> </td> </tr><?php endif; ?> <tr> <th>予約人数</th> <td> <?php foreach ($this->controls['count'] as $key => $val) : ?><div class="input-number"<?php echo $val != 1 ? ' style="display:none"' : '' ?>><?php $title = apply_filters('booking_form_count_label', __(ucwords($key), $this->domain)); if ($title != '') { echo "$title<br />"; } ?> <?php echo esc_html($client[$key]) ?><input type="hidden" name="booking[client][<?php echo $key ?>]" value="<?php echo esc_html($client[$key]) ?>" maxlength="5" /><?php echo apply_filters('booking_form_count_note', '') ?> </div><?php endforeach; ?> <?php if (isset($this->errmsg['count'])) : ?><div class="error-message"><?php echo $this->errmsg['count'] ?></div><?php endif; ?> </td> </tr> <tr> <td class="option-confirm-header" colspan="2"><?php echo apply_filters('booking_form_client_title', 'ご連絡先') ?></td> </tr> <?php if (0 < $this->clcols['company']) : ?><tr> <th><?php echo apply_filters('booking_form_company', '会社名') ?></th> <td> <?php echo esc_html($client['company']) ?> <input type="hidden" name="booking[client][company]" value="<?php echo esc_html($client['company']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_name']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_name', 'ご新郎様のお名前') ?></th> <td> <?php echo esc_html($client['groom_name']) ?> <input type="hidden" name="booking[client][groom_name]" value="<?php echo esc_html($client['groom_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['groom_furigana']) ?> <input type="hidden" name="booking[client][groom_furigana]" value="<?php echo esc_html($client['groom_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['groom_age']) ?> <input type="hidden" name="booking[client][groom_age]" value="<?php echo esc_html($client['groom_age']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_name']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_name', 'ご新婦様のお名前') ?></th> <td> <?php echo esc_html($client['bride_name']) ?> <input type="hidden" name="booking[client][bride_name]" value="<?php echo esc_html($client['bride_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['bride_furigana']) ?> <input type="hidden" name="booking[client][bride_furigana]" value="<?php echo esc_html($client['bride_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['bride_age']) ?> <input type="hidden" name="booking[client][bride_age]" value="<?php echo esc_html($client['bride_age']) ?>" /> </td> </tr><?php endif; ?> 続き→ https://okwave.jp/qa/q9532258.htm

    • 締切済み
    • PHP
  • thisとvar ?

    javascript初心者です。 コンストラクタ(プロトタイプ)とクロージャを学んでいますが、 コンストラクタ(プロトタイプ)では、関数内にthisで変数宣言、クロージャはvarで宣言しています。 この違いの理由は何でしょうか?漠然とした質問ですみません。 thisとvarでの変数宣言の違いなど教えていただけないでしょうか? コンストラクタ-------------------- function Person(n){ this.name = n; } Person.prototype.city = 'Tokyo'; Person.prototype.moveTo = function(c){ document.write(this.name + ': Moving to... ' + c + '<br>'); Person.prototype.city = c; } クロージャ------------------- function Person(n, a){ var name = n; var age = a; return { getName: function() { return name; }, setAge: function(i){ if( 0<= i ){ age = i; } }, getAge: function(){ return age; } } }

  • PHPでMySQLを使った検索のプログラム

    「たったコレだけでPHPプログラミングが理解できる本」を参考にPHPでプログラムを書いていまして、 ビジネスホテルの検索機能をチェックボックス機能を余分につけて検索できないか試したのですが、 チェックボックスにチェックを入れると全く検索できず他のテキストボックスに入力するだけなら検索できます。 なんとかチェックボックスを有効にできないかいろいろなサイトを調べたり本を読んだりしましたが解決策が見つかりません。 いろいろな機能に対応できるようなプログラムを組みたいと思ったのでかなりの初心者で大変恐縮ですが、どなたかご教授お願いできないかと思っております。 あと参考になるサイトがございましたら、教えていただきたいと思っております。 何卒よろしくお願い致します。 前半省略 <form name="search_form" action="" method="post" > <input type="hidden" name="cmd" value="search" /> <table> <tr> <th>物件種別</th> <td> <input type="checkbox" name="kodawari_key[]" value="温泉" <?php if( $_REQUEST["kodawari_key"] == "温泉" ){ print( 'checked' ); } ?>/> 温泉 <input type="checkbox" name="kodawari_key[]" value="ランチ" <?php if( $_REQUEST["kodawari_key"] == "ランチ" ){ print( 'checked' ); } ?>/> ランチ<br /> <input type="checkbox" name="kodawari_key[]" value="ディナー" <?php if( $_REQUEST["kodawari_key"] == "ディナー" ){ print( 'checked' ); } ?>/> ディナー</td> </tr> <tr> <th>価格帯</th> <td> <input type="text" name="price_min" value="<?php print( htmlspecialchars( $_REQUEST["price_min"] ,ENT_QUOTES ) ) ?>" size="8"> ~ <input type="text" name="price_max" value="<?php print( htmlspecialchars( $_REQUEST["price_max"] ,ENT_QUOTES ) ) ?>" size="8"><br /> </td> </tr> <tr> <th>住所</th> <td><input type="text" name="address" value="<?php print( htmlspecialchars( $_REQUEST["address"] ,ENT_QUOTES ) ) ?>" size="20"></td> </tr> </table> <input type="submit" value="検索" class="Btn-gray button"> </form> <p>&nbsp;</p> <?php if( $_REQUEST["cmd"] == "search" ){ $pdo = new PDO("mysql:host=localhost; dbname=hotel_reservation; charset=utf8", "koredake", "koredake123", array( PDO::ATTR_EMULATE_PREPARES => false ) ); $sql = "select * from hotels where 1 = 1 "; $condition = array(); if( !empty( $_POST["kodawari_key"] )){ $sql = $sql . " and kodawari_key = :kodawari_key"; $condition["kodawari_key"] = $_REQUEST["kodawari_key"]; } if( !empty( $_REQUEST["price_min"] ) ){ $sql = $sql . " and price >= :price_min "; $condition[":price_min"] = $_REQUEST["price_min"]; } if( !empty( $_REQUEST["price_max"] ) ){ $sql = $sql . " and price <= :price_max "; $condition[":price_max"] = $_REQUEST["price_max"]; } if( !empty( $_REQUEST["address"] ) ){ $sql = $sql . " and ( pref like :pref or city like :city or address like :address ) "; $condition[":pref"] = "%{$_REQUEST["address"]}%"; $condition[":city"] = "%{$_REQUEST["address"]}%"; $condition[":address"] = "%{$_REQUEST["address"]}%"; } $statement = $pdo->prepare( $sql ); $statement->execute( $condition ); $results = $statement->fetchAll(); ?> <table border="1"> <caption>検索結果</caption> <tr> <th></th> <th>ホテル名</th> <th>宿泊料金</th> <th>住所</th> </tr> <?php foreach( $results as $result ){ ?> <tr> <td><img src="hotel/<?php print( htmlspecialchars( $result["id"], ENT_QUOTES )); ?>.png" /></td> <td><?php print( htmlspecialchars( $result["hotel_name"], ENT_QUOTES )); ?></td> <td>\<?php print( htmlspecialchars( number_format( $result["price"] ),ENT_QUOTES ) ); ?></td> <td> <?php print( htmlspecialchars( $result["pref"], ENT_QUOTES ) ); ?> <?php print( htmlspecialchars( $result["city"], ENT_QUOTES ) ); ?> <?php print( htmlspecialchars( $result["address"], ENT_QUOTES ) ); ?> </td> </tr> <?php } } ?> </table> </div> </body> </html>

    • ベストアンサー
    • MySQL
  • エラーメッセージ(初歩)

    こんにちは。早速ですが質問させていただきます。 javaの課題をやっているのですが、どうしてもエラーメッセージ を解決できません。 まずプログラムですが… class Dog1{ private String name; private int age; public Dog1(String n){ name = n; } public Dog1(int a){ age = a; } public void getName(){ System.out.print(name); } public void getAge(){ System.out.print(age); } } class Ex45{ public static void main(String args[]){ Dog1 d = new Dog1(); d.setName("ケイ"); d.setAge(17); System.out.println(d.getName() + "は" + d.getAge() + "才の犬です。"); } } このようなプログラムなのですが、 学校から出された課題なのでいくつか条件があります。 1.main文はそのまま使用する(main文は課題プリントを丸写しの状態です。) 2.Dog1クラスを作成し、Dogクラスの変数はprivate変数とする 以上です。 このような条件でプログラムを考えては見たもののバグが出てしまい 一向に問題が解決しません。 バグの箇所はmain文のd.getName()あたり(void型は使用できない)とのメッセージです。 どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • PHP テーブル内容にリンク付をつけて検索したい

    以下のような2つのPHPを作成しました。 PHPにおいて、検索ボタンが押されると、 SQLで記述したデータベースから値を持ってきてtable表示させているのですが、 その際に取得した値にリンクを付けて、再検索をする方法がわかりません。 POST変数で渡してやれば、というところはなんとなくわかるのですが、 具体的な方法をご教示いただきたいです。 どうかよろしくお願いいたします。 ------------------------------------------------------------------------ HTML側(データを検索・表示させるため)のtable.php <?php $nengetu = isset($_POST['nengetu']) ? $_POST['nengetu'] : ""; ?> HTML表示箇所 <?php <form method="post" action="tables.php"> <button type="submit" name="search">検索</button>←ボタンを押されたら表示 <thead>  <tr>   <th>年月</th>   <th>名前</th>   <th>金額</th>  </tr> </thead> <tbody> if(isset($_POST['search'])) $query.= "SELECT * FROM AAA"; if (!empty($nengetu)) { $query.=" WHERE nengetu = '$nengetu"; $dataview($query); ?> ------------------------------------------------------------------------ ------------------------------------------------------------------------ PDOで取得したテーブル内容を表示 class.table.php public function dataview($query) { クエリーを実行 ループ <tr> <td><?php print($row['name']); ?></td>←リンク付きで表示、table.phpで検索 <td><?php print($row['kingaku']); ?></td> <td><?php print($row['nengetu']); ?></td> </tr> } ------------------------------------------------------------------------

    • ベストアンサー
    • PHP

専門家に質問してみよう