• 締切済み

PHP 送信されたフォームについて

HTMLから送信されたフォームがうまくうけとれないので質問させていただきます。 HTML側でチェックボックスを用いてphp側に送ったところうまく結果が反映されません。 HTML側で以下のソースを書き <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c php側で <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> および <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> $i++; と書きました。htmlキャラはしっかり受け取ってくれるのですが、if文で書いた方は反応してくれません(iが+1されない)。選択肢がひとつの時、if文は反応するので条件の書き方がおかしいのでしょうか? 回答お願いします。

  • PHP
  • 回答数4
  • ありがとう数2

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.4

> そのため、 > if($_POST['kaitouran311'] == 'c') > で条件を満たした場合はカウントアップが一回され ここ絶対カウントアップされないよね。kaitouran311はvalueがaなんだから、例えチェックが入っていてもcにはならない。 > if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran333'] == 'c') > $i++; > の部分では、条件を満たしてもカウントアップはスルーされてしまうのです。 ANo.2の補足にはこう書いてるけど、ANo.3のお礼のPHPには <?php if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran332'] == 'c') $i++; ?> って書かれてるね。で、これもkaitouran332はvalueがbなのでチェック入れてもカウントアップされん。 当方は ・Windows 7 (x64)、Apache HTTP Server 2.2.25 nossl、PHP 5.3.27。 ・CentOS 6.5 (x64)、Apache HTTP Server 2.2.15 mod_ssl、PHP 5.3.3。 の2つの環境を用意してANo.3の補足とお礼に書かれてる奴を試した。 ひょっとしたら思ったよりも単純なミスかも知れないので、深呼吸をして熱いコーヒー一杯飲んでからもう一度デスクに向かったらいいんじゃないか。 ところで余談だが、チェックボックスが4つある問3-3で、PHP側を <?php if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran333'] == 'c') $i++; ?> こう直したとして、これだと全部チェックを入れても正解にならないか? <?php if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran332'] != 'b' && $_POST['kaitouran333'] == 'c' && $_POST['kaitouran334'] != 'd') $i++; ?> という風に、「bとdにチェックが入っていないこと」も確認しないといけないかも知れないかも?

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

もらったソースはこのままでは動かないよね。どこかにJavaScriptでsendという関数があるのではないかな。 <input type="button" value="送信" onclick="send()"> を <input type="submit" value="送信"> に変えて、form閉じタグと順番を入れ替えて実行したら普通に(aとbとcの同時チェック時$i++が)動いたんだけど・・・・。 JavaScriptのsend関数が何か悪さをしている・・・・とか?

mauluru
質問者

お礼

そしてこちらが phpのソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)(5)(6)(7)(8)</p> <p>問2</p> <p>(1)(2)(3)</p> <p>問2</p> <p>(1)(2)(3)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p> (1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> (5)<?php print(htmlspecialchars($_POST['kaitouran15'], ENT_QUOTES, 'UTF-8')); ?> (6)<?php print(htmlspecialchars($_POST['kaitouran16'], ENT_QUOTES, 'UTF-8')); ?> (7)<?php print(htmlspecialchars($_POST['kaitouran17'], ENT_QUOTES, 'UTF-8')); ?> (8)<?php print(htmlspecialchars($_POST['kaitouran18'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p> (1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>問3-1 (1) <?php print(htmlspecialchars($_POST['kaitouran311'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran312'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran313'], ENT_QUOTES, 'UTF-8')); ?> (2) <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> (3) <?php print(htmlspecialchars($_POST['kaitouran331'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran332'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran333'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran334'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; ?> <?php if($_POST['kaitouran11'] == '市場') $i++; ?> <?php if($_POST['kaitouran12'] == 'ニーズ') $i++; ?> <?php if($_POST['kaitouran13'] == '年齢') $i++; ?> <?php if($_POST['kaitouran14'] == 'サービス') $i++; ?> <?php if($_POST['kaitouran15'] == 'セグメンテーション') $i++; ?> <?php if($_POST['kaitouran16'] == 'ターゲッティング') $i++; ?> <?php if($_POST['kaitouran17'] == 'ポジショニング') $i++; ?> <?php if($_POST['kaitouran18'] == 'STPマーケティング') $i++; ?> <?php if($_POST['kaitouran21'] == 'ア') $i++; ?> <?php if($_POST['kaitouran22'] == 'エ') $i++; ?> <?php if($_POST['kaitouran23'] == 'ウ') $i++; ?> <?php if($_POST['kaitouran311'] == 'c') $i++; ?> <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') $i++; ?> <?php if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran332'] == 'c') $i++; ?> <h1><?php print('正解数'.$i.'/14です'); ?></h1> </body> </html>

mauluru
質問者

補足

すいません。完全にsend()関数入れ忘れていました。 質問に載せられるようプログラム簡略化しました。 このプログラムは 各問と入力フォームが隠れており、各ボタンをおすと問題とフォームが出現します。 そしてsend()で各kaitouranを用意と空白のチェックを行っています。 送信ボタンを押したとき、入力されたフォームが正しければカウントアップされる仕組みになって押します。 以下htmlソースです。 <html> <head><head><title>タイトル</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> function hideForm1(){ document.getElementById("formblock1").style.display = "none"; } function showForm1() { document.getElementById("formblock1").style.display = "block"; } window.addEventListener("load", hideForm1); function hideForm2(){ document.getElementById("formblock2").style.display = "none"; } function showForm2() { document.getElementById("formblock2").style.display = "block"; } window.addEventListener("load", hideForm2); function hideForm3(){ document.getElementById("formblock3").style.display = "none"; } function showForm3() { document.getElementById("formblock3").style.display = "block"; } window.addEventListener("load", hideForm3); function send(){ function chk1(frm, names){ var r = true; for(var i = 0; i < names.length; i++) r &= (frm.elements[names[i]].value !=""); return r; } var r = true; r &= chk1(document.forms['nform'],['kaitouran11','kaitouran12','kaitouran13','kaitouran14','kaitouran21','kaitouran22','kaitouran23','kaitouran311','kaitouran312','kaitouran313','kaitouran321','kaitouran322','kaitouran323','kaitouran331','kaitouran332','kaitouran333','kaitouran334']); if(r){ document.forms['nform'].submit(); }else{ alert('解答欄に空白があります'); } } </script> </head> <body> <form> <input type="button" value="問1" onclick="showForm1(); this.disabled = true;"/> </form> <form> <input type="button" value="問2" onclick="showForm2(); this.disabled = true;"/> </form> <form> <input type="button" value="問3" onclick="showForm3(); this.disabled = true;"/> </form> <form name="nform" method="post" action="./Tkaitou1.php" enctype="multipart/form-data"> <div id="formblock1"> <p>問1</p> <p> ((1)<input type="text" name="kaitouran11" size="15">) ((2)<input type="text" name="kaitouran12" size="15">) ((3)<input type="text" name="kaitouran13" size="15">) ((4)<input type="text" name="kaitouran14" size="15">) ((5)<input type="text" name="kaitouran15" size="15">) ((6)<input type="text" name="kaitouran16" size="15">) ((7)<input type="text" name="kaitouran17" size="15">) ((8)<input type="text" name="kaitouran18" size="15">) </p> </div> <div id="formblock2"> <p>問2 </p> <p>問2-1問題文</p> <p> <input type="radio" name="kaitouran21" value="ア">ア <input type="radio" name="kaitouran21" value="イ">イ <input type="radio" name="kaitouran21" value="ウ">ウ <input type="radio" name="kaitouran21" value="エ">エ </p> <p>問2-2問題文</p> <p> <input type="radio" name="kaitouran22" value="ア">ア  <input type="radio" name="kaitouran22" value="イ">イ  <input type="radio" name="kaitouran22" value="ウ">ウ  <input type="radio" name="kaitouran22" value="エ">エ  </p> <p>問2-3問題文</p> <p> <input type="radio" name="kaitouran23" value="ア">ア  <input type="radio" name="kaitouran23" value="イ">イ  <input type="radio" name="kaitouran23" value="ウ">ウ  <input type="radio" name="kaitouran23" value="エ">エ  </p> </div> <div id="formblock3"> <p>問3 </p> <p>問3-1問題文</p> <p> a あ b い c う </p> <p> <input type="checkbox" name="kaitouran311" value="a">a <input type="checkbox" name="kaitouran312" value="b">b <input type="checkbox" name="kaitouran313" value="c">c </p> <p>問3-2問題文</p> <p> a あ b い c う </p> <p> <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c </p> <p>問3-3問題文</p> <p> a あ b い c う d え </p> <p> <input type="checkbox" name="kaitouran331" value="a">a <input type="checkbox" name="kaitouran332" value="b">b <input type="checkbox" name="kaitouran333" value="c">c <input type="checkbox" name="kaitouran334" value="d">d </p> </div> </form> <input type="button" value="送信" onclick="send()"> </body> </html>

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

ん~。それでは、「aとbとcが全部チェックが入っていたらカウントアップする」という仕様で間違いないのだね? もう少しソースを書いてくれたら分かるかも知れないが、仮に <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> $i++; というソースが本当にこの通りだとすると$i++はPHPじゃなくてHTMLだよね。つまり、 <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> <?php $i++; ?> あるいは <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') $i++; ?> じゃないとカウントアップはしない。 もう少し問題のソースの前後を書いてくれるとか、やりたい事をはっきりさせるとか、その方がより良い回答を得られやすいんじゃないか。

mauluru
質問者

お礼

以下今回作ったソースです。 htmlソース <html> <head><head><title>情報ネットワーク-テスト1</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form name="nform" method="post" action="./Tkaitou1.php" enctype="multipart/form-data"> <div id="formblock2"> <p> <input type="radio" name="kaitouran21" value="ア"> <input type="radio" name="kaitouran21" value="イ"> <input type="radio" name="kaitouran21" value="ウ"> <input type="radio" name="kaitouran21" value="エ"> </p> <p> <input type="radio" name="kaitouran22" value="ア"> <input type="radio" name="kaitouran22" value="イ"> <input type="radio" name="kaitouran22" value="ウ"> <input type="radio" name="kaitouran22" value="エ"> </p> <p> <input type="radio" name="kaitouran23" value="ア">ア  <input type="radio" name="kaitouran23" value="イ">イ  <input type="radio" name="kaitouran23" value="ウ">ウ  <input type="radio" name="kaitouran23" value="エ">エ </p> </div> <div id="formblock3"> <p> <input type="checkbox" name="kaitouran311" value="a">a <input type="checkbox" name="kaitouran312" value="b">b <input type="checkbox" name="kaitouran313" value="c">c </p> <p> <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c </p> <input type="checkbox" name="kaitouran331" value="a">a <input type="checkbox" name="kaitouran332" value="b">b <input type="checkbox" name="kaitouran333" value="c">c <input type="checkbox" name="kaitouran334" value="d">d </p> </div> </form> <input type="button" value="送信" onclick="send()"> </body> </html> php側のソース <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)(5)(6)(7)(8)</p> <p>問2</p> <p>(1)(2)(3)</p> <p>問2</p> <p>(1)(2)(3)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p> (1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> </p> <p> <?php print(htmlspecialchars($_POST['kaitouran311'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran312'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran313'], ENT_QUOTES, 'UTF-8')); ?> </p> <p> <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> </p> <p> <?php print(htmlspecialchars($_POST['kaitouran331'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran332'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran333'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran334'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if($_POST['kaitouran21'] == 'ア') $i++; if($_POST['kaitouran22'] == 'エ') $i++; if($_POST['kaitouran23'] == 'ウ') $i++; if($_POST['kaitouran311'] == 'c') $i++; if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') $i++; if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran333'] == 'c') $i++; ?> <h1><?php print('正解数'.$i.'/14です'); ?></h1> </body> </html>

mauluru
質問者

補足

回答ありがとうございます。すいません。 質問内容が具体的でありませんでしたよね... html側から送られたフォームをphpで受け取るソースを作ったのですが、 if($_POST['kaitouran311'] == 'c') $i++; if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') $i++; if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran333'] == 'c') $i++; のところの条件を満たしてもカウントアップされず、チェックボックスの回答する部分が1つの場合カウントアップされるということです。 そのため、 if($_POST['kaitouran311'] == 'c') で条件を満たした場合はカウントアップが一回され if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') $i++; if($_POST['kaitouran331'] == 'a' && $_POST['kaitouran333'] == 'c') $i++; の部分では、条件を満たしてもカウントアップはスルーされてしまうのです。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

選択肢がひとつ、というのは「aかbかcのうちひとつにチェックを入れた」という意味なのかな? それなら <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> じゃなくて <?php if($_POST['kaitouran321'] == 'a' || $_POST['kaitouran322'] == 'b' || $_POST['kaitouran323'] == 'c') ?> なのではないかい?

mauluru
質問者

補足

回答ありがとうございます。orの条件が知りたいのではないです。Andの条件をやりたいのですが…上手くプログラムが動いてくれません。どのようにすればよろしいでしょうか?

関連するQ&A

  • javascript php フォームについて

    javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>

    • 締切済み
    • PHP
  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • php ハイパーリンクについて

    php ハイパーリンクについて質問ですが、 <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> </select> <input type="hidden" name="word" value="<?php print(htmlspecialchars($word, ENT_QUOTES)); ?>"> <input type="hidden" name="ger" value="<?php print(htmlspecialchars($ger, ENT_QUOTES)); ?>"> <select name="sort"> <option value="stand">新着</option> <option value="lowPrice">安い</option> <input type="submit" value="検索"> </select> </form> 上記のform actionと同じ機能をハイパーリンクで表示させるにはどのようにしたらよいのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのフォームの複数選択で。。。

    すいません当方PHPかなりの初心者で。。。。 入力→確認→送信のような流れのフォームを作成しているのですが。。。 メールフォームで複数選択が可能な場合フォームの受け取り側のPHPはどのように記載すればいいのでしょうか? □A □B □C □D □E □F ↑のようなフォームを作りチェックされたものを 【フォーム側】 <input type="checkbox" value="A" name="is[]">A <input type="checkbox" value="B" name="is[]">B <input type="checkbox" value="C" name="is[]">C <input type="checkbox" value="D" name="is[]">D <input type="checkbox" value="E" name="is[]">E <input type="checkbox" value="F" name="is[]">F 【確認画面のPHP】 // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } //中略// // 確認画面表示箇所 <? $is_value = $_POST["is"]; foreach($is_value as $v){ echo $v ." <br> "; } ?> //中略// // 送信PHPへの受け渡し場所 <input type="hidden" name="service" value="<?= $is_value ?>"> ↑この部分の記載の仕方がわかりません。。。 確認画面で表示させたものを関数に格納して送信PHPの方に受け渡ししたいのですが。。。 どのようにどのあたりに記載したらいいのでしょうか? わかりにくい質問かもしれません。。。 なにとぞなにかお気づきの点がありましたらご教授ねがえると助かります。。。 よろしくお願いします。

    • 締切済み
    • PHP
  • 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
  • MAMPでPHP、文字化けしてしまいます。

    はじめまして。 只今、PHPを勉強をしていて困ったことが起きました。 MAMPを使っているのですが、 [htmlコード] <html> <head> <meta charset="utf-8"> </head> <body> <form action="rei.php" method="get"> <label for="my_name">お名前:</lebel> <input id="my_name" type="text" name="my_name" size="35" maxlength="255" value =""> <input type="submit" value="送信する"> </form> </body> </html> [PHPコード] <?php mb_internal_encoding("UTF-8"); print('名前: ' . htmlspecialchars($_REQUEST['my_name'], ENT_QUOTES)); ?> というフォームに入力し、それを出力する。。という簡単なプログラムなのですが、、 HTMLの方は文字化けしないのですが、PHPで出力する際に次のような文字化けが起こります。 <?php print('縺雁錐蜑: ' . htmlspecialchars($_REQUEST['my_name'], ENT_QUOTES)); ?> MAMP側のiniファイルの文字コードを[UTF-8]に設定、[;]を消す、等色々調べて試行錯誤しましたが原因がわかりませんでした。。 どうかご指南のほど、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • jQueryのノンリロードのメールフォーム

    jQueryを使用したノンリロードのメールフォームを作成しているのですが、 メールの受信でチェックボックスで選択した項目が「Array」と表示されてしまい正しく表示できません。 どうすればいいのでしょうか。 ご教示お願いいたしあmす。 独学で作成しており、jQueryのコード自体は下記のサイトを参考にし、その他のHTMLとPHPは自分で作成しました。 参考にしたサイト http://studio-key.com/tips/jquery-mailform-01 【THMLのコード】 <dt>お問い合わせ項目<span class="ind">※必須</span><br>(複数選択可)</dt> <dd> <ul> <li><input type="checkbox" name="tec[]" id="check1" value="Aについて" class="validate[minCheckbox[1]]"> <label for="check1"> Aについて </label></li> <li><input type="checkbox" name="tec[]" id="check2" value="Bについて" class="validate[minCheckbox[1]]"> <label for="check2"> Bについて</label></li> <li><input type="checkbox" name="tec[]" id="check3" value="Cについて" class="validate[minCheckbox[1]]"> <label for="check3"> Cについて</label></li> <li><input type="checkbox" name="tec[]" id="check4" value="Dについて" class="validate[minCheckbox[1]]"> <label for="check4"> Dについて </label></li> </ul> </dd> 【PHPのコード】 <?php if (empty($_POST)) { echo ""; exit; } ?> <?php // フォームデータが空の場合は処理終了 if (empty($_POST)) { echo ""; exit; } // セッションの開始 session_start(); ?> <?php // 入力値の取得・加工 $name = htmlspecialchars($_POST['name'], ENT_QUOTES, "UTF-8"); $email = htmlspecialchars($_POST['email'], ENT_QUOTES, "UTF-8"); $tel = htmlspecialchars($_POST['tel'], ENT_QUOTES, "UTF-8"); $list=$_POST['list']; $tec=$_POST['tec']; $comment= htmlspecialchars($_POST['comment'], ENT_QUOTES, "UTF-8"); // メール本文の組み立て $to = "123456789@gmail.com"; $title = "【お問い合わせフォームより】"; $ext_header = "From:{$email}"; $body = <<<EOM -------------------------------------------------- 【お問い合わせフォームからのメール】 お名前:{$name} メールアドレス:{$email} 電話番号:{$tel} 都道府県:{$list} お問い合わせ内容:{$tec} 本文:{$comment} -------------------------------------------------- EOM; //文字コードの設定 mb_language("Japanese"); mb_internal_encoding("UTF-8"); // メール送信の実行 $rc = mb_send_mail($to, $title, $body); if (!$rc) { exit; } else { $_SESSION = NULL; } ?>

    • ベストアンサー
    • PHP
  • 電卓 php

    php 電卓 現在phpにて電卓を作ろうと思っています。なので まずは1のボタンがクリックされたら画面に1と表示されるだけのプログラムを 作ってる最中なのですが、上手くいかず困っております。 以下ソースコードです。ファイル名「index.php」 <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>HTML内でのPHPスクリプト - PHP入門</title> </head> <body> <?php $a = $_REQUEST['button1']; if (isset($_POST["button1"])) { $kbn = htmlspecialchars($_POST["button1"], ENT_QUOTES, "UTF-8"); switch ($kbn) { case "1": echo "登録処理"; break; } } ?> <form action="index.php" method="post"> <input type="button" name="button1" value="1"/> <input type="button" name="button2" value="2"/> <input type="button" name="button3" value="3"/> <input type="button" name="button4" value="4"/> <input type="button" name="button5" value="5"/> <input type="button" name="button6" value="6"/> <input type="button" name="button7" value="7"/> <input type="button" name="button8" value="8"/> <input type="button" name="button9" value="9"/> <input type="button" name="button10" value="10"/> <input type="submit" name="button_sum" value="計算する"> </form> </body> </html> 1のボタンをクリックしたら画面に1と表示させられるようにさせるにはどうしたら良いでしょうか? お馬鹿な質問かも知れませんが、ご教授の程願います。

    • ベストアンサー
    • PHP
  • PHP に詳しい方教えてください

    以下のスクリプトを実行作成して実行するとエラーが出てしまいます。エラーを出さないようにする方法を教えていただけませんか。 ※ エラーがでるものの、正常に動作はしています。 ---エラーメッセージ--- Notice: Use of undefined constant id - assumed 'id' in C:\xampp\htdocs\shop\update.php on line 12 --スクリプト--- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>商品管理</title> </head> <body> <?php require('dbconnect.php'); $id = $_REQUEST[id]; $sql = sprintf("SELECT * FROM my_items WHERE id=%d", ★12行目★ mysql_real_escape_string($id) ); $recordSet=mysql_query($sql); $data = mysql_fetch_assoc($recordSet); ?> <p>変更する内容を記入してください</p> <form id="frmUpdate" name="frmUpdate" method="post" action="update_do.php"> <dl> <dt> <label for="maker_id">メーカーID</label> </dt> <dd> <input name="maker_id" type="text" id="maker_id" size="10" maxlength="10" value="<?php print(htmlspecialchars($data['maker_id'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="item_name">商品名</label> </dt> <dd> <input name="item_name" type="text" id="item_name" size="35" maxlength="255" value="<?php print(htmlspecialchars($data['item_name'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="price">価格</label> </dt> <dd> <input name="price" type="text" id="price" size="10" maxlength="10" value="<?php print(htmlspecialchars($data['price'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="keyword">キーワード</label> </dt> <dd> <input name="keyword" type="text" id="keyword" size="50" maxlength="255" value="<?php print(htmlspecialchars($data['keyword'], ENT_QUOTES)); ?>" /> </dd> </dl> <input type="submit" value="変更する" /> <input type="hidden" name="id" value="<?php print(htmlspecialchars($data['id'], ENT_QUOTES)) ?>" /> <form > </body> </html>

    • ベストアンサー
    • PHP
  • チェックボックスの内容が送信出来ません。

    PHPのメールフォームにチェックボックスを追加しましたがうまく送れず頭を抱えています。 お力をお貸しください。 必要だと思われるソースです。 inquiry.html <form action="check_inquiry.php" method="POST"> <p><label for="title">お名前:</label> <input type="text" name="title" size="60"> </p> <p><INPUT type="checkbox" name="check[]" value="資料請求" />資料請求<INPUT type="checkbox" name="check[]" value="至急" />至急<INPUT type="checkbox" name="check[]" value="質問" />質問</p> <br /> <p><label for="massage">メッセージ:</label></p> <p><textarea name="message" cols="50" rows="20"></textarea></p> <p><input type="submit" value="内容の確認"></p> </form> check_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); $m_check = $_POST['check']; ?> ■内容を確認してください。 <br> <form action="send_inquiry.php" method="POST"> <input type="hidden" name="title" value="<?php echo $title; ?>" /> <input type="hidden" name="message" value="<?php echo $message; ?>" /> <input type="hidden" name="check" value="<?php for($i=0; $i<sizeof($m_check); $i++){ echo "【${m_check[$i]}】"; } ?>" /> <br /> お名前: <br /> <?php echo $title; ?> <br /> 問い合わせ内容: <?php for($i=0; $i<sizeof($m_check); $i++){echo "【${m_check[$i]}】"; }; ?> <br /> メッセージ詳細: <br /> <?php // 改行部分にBRタグを埋め込む echo nl2br($message); ?> <br /> <input type="submit" value="お問い合わせ内容の送信"> </form> send_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'],ENT_QUOTES); $m_check = $_POST['check']; //日本語UTF8 mb_language('ja'); mb_internal_encoding('UTF8'); //自動送信<送信元のアドレス $name = '自動送信'; $email = 'メールアドレス'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; // メール送信 $result = mb_send_mail($email, $title, $message, $header, $m_check); //メール送信の確認 if ($result) { // メール送信の成功 echo '■管理人へ送信しました。'; } else { // メール送信の失敗 echo '■管理人への送信に失敗しました。'; } ?> チェックボックスにチェックを入れないと送信出来ますが チェックを入れると送信に失敗します。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう