• ベストアンサー

適性診断テストみたいなものを作りたいのですが

質問させて頂きます。このカテゴリで良いのか分かりませんが、間違っていたら、すみません。 僕は今、シャンプーの販売サイトを運営しているのですが、そのコンテンツとして商品の適性診断みたいなのを作りたいと思っています。 具体的に申しますと、例えば、質問項目に「かゆみが出やすい」を「yes」か「no」で選択させ、選択すると次のページに移り、そこでまた質問項目に「ふけが出やすい」を「yes」か「no」で選択させ、これをいくつか続け、最後に、「あなたに適している商品は○○です」みたいな感じにしたいと思っています。PHPやCGIの知識はほんの少し程度しかありませんが、自作できればそれが一番良いのですが。あまり高度は知識がないとやはり無理でしょうか。例えば、無料のPHPスクリプトやCGIスクリプトみたいなのがあればいいなとも思っています。自分でももちろん色々調べたのですが、力不足で見当たりません。 漠然とした質問になってしまいましたが、とにかく質問項目も5,6個程度で商品も10個ぐらいなので、簡単なもので構いません。どなたかよろしくお願いします。

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

  • ベストアンサー
  • joy_28
  • ベストアンサー率84% (45/53)
回答No.4

失礼しました。6通りじゃなく、2の3乗=8通りの組み合わせですよね。 -db.datの中身を、以下のように変えて下さい。 Y,Y,Y,商品1 Y,Y,N,商品2 Y,N,N,商品3 Y,N,Y,商品4 N,Y,Y,商品5 N,N,Y,商品6 N,N,N,商品7 N,Y,N,商品8

aikaj127
質問者

お礼

joy_28様、返事が遅れまして、大変申し訳ございませんでした。アドバイスして頂いた方向で頑張ってみたいと思います。本当にありがとうございました。また何かございましたらよろしくお願い致します。

その他の回答 (3)

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.3

2点、手を抜いてましたので、追加します。 -html側 <input type="radio" name="kayumi" value="Y"checked>強い<br>のように、選択状態を示す、checkedをそれぞれ、入れて下さい。 -php側 ~中略 $file=fopen("db.dat","r"); flock($file,LOCK_SH);//共有ロック while($row=fgetcsv($file)){ if($row[0]==$data[0] && $row[1]==$data[1] && $row[2]==$data[2]){//0,1,2の要素文字列が全て、合致していたなら、 print $row[3].'が、推奨品です';//その配列要素4番目を表示する } } flock($file,LOCK_UN);//ロック解除 ~以下略

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.2

aikaj127さん、 PHPで作るとすれば、以下のような例もあります。 【基本的な考え方】5問に2つずつの回答があるので、5×2=10通りの結論がありますので、予め、テキストで、その組み合わせとそれに対応する商品を、CSV方式で、記載しておき、回答された組み合わせとマッチングを行って、該当商品名を表示するという方法もあります。 【一例】10個の組み合わせは、お任せするとして、3つの質問、即ち6個の結論を例にします。質問は、適当です。尚、全て、UTF-8で記載してます。 -html側: <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>商品選択</title> </head> <body> <p>以下の質問にお答え下さい<p> <form method="post" action="./answer.php"> <p>Q1:かゆみが強いですか?</p> <p> <input type="radio" name="kayumi" value="Y">強い<br> <input type="radio" name="kayumi" value="N">弱い </p> <p>Q2:乾燥しやすいですか?</p> <p> <input type="radio" name="kanso" value="Y">し易い<br> <input type="radio" name="kanso" value="N">しにいく<br> </p> <p>Q3:淡泊な色が好きですか?</p> <p> <input type="radio" name="iro" value="Y">淡泊な色<br> <input type="radio" name="iro" value="N">濃い色く<br> </p> <p> <input type="submit" value="回答"><input type="reset" value="取り消し"> </p> </form> </body> </html> -PHP側:ファイル名、answer.php <?php $kayumi=$_POST['kayumi'];//html側のkayumiのvalueを取得して、変数$kayumiに代入 $kanso=$_POST['kanso']; $iro=$_POST['iro']; $data=array($kayumi,$kanso,$iro);//配列を生成し、 $file=fopen("db.dat","r");//予め組み合わせを作っておいた、テキスト型のdb.datを開き、 while($row=fgetcsv($file)){//,区切りで、一行ずつ読み込み、配列作成 if($row[0]==$data[0] && $row[1]==$data[1] && $row[2]==$data[2]){//0から3番目の文字列が全て、合致していたなら、 print $row[3].'が、推奨品です';//その配列要素3番目を表示する } } fclose($file); -外部テキスト型のファイル名:db.dat Y,Y,Y,商品1 Y,Y,N,商品2 Y,N,N,商品3 N,Y,Y,商品4 N,N,Y,商品5 N,N,N,商品6 一度、これで、試してみて、NEXT方式を考えたらいかがでしょうか? 質問数も少ないので、NEXT方式でなくても、いいような気がしますが、どうしてもと言うなら、#1の回答者がおっしゃているように、クライントアプリだけで、組み上げる、Flashの採用か、Flashとこの組み合わせも、考えられます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえずということであれば、サーバーサイドのプログラムでやるより javascriptなどクライアントサイドのプログラムでやる方が 負担もすくなく、セキュリティも気にしなくて済む分、楽だとおもいますよ (つきつめていくと結局フラッシュとかでやることになると思います)

aikaj127
質問者

お礼

ありがとうございました

関連するQ&A