• 締切済み

チェックボックスのvalueを連結してURLに追加

<form method="get" action="<?php = $_SERVER['PHP_SELF']; ?>"> <input type="checkbox" name="c" value="001" /> <input type="checkbox" name="c" value="002" /> <input type="checkbox" name="c" value="003" /> <input type="checkbox" name="c" value="004" /> <input type="checkbox" name="c" value="005" /> <input type="submit" value="送信" /> </form> submitするとURLに ?c=001&c=002&c=003… が追加されます。 その形ではなく、c=001002003… と連結してURLに追加するにはどうしたら良いですか?

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

みんなの回答

回答No.4

サーバによってできる出来ないあるかもですが htaccessとかでrewrite出来ないですか?

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

ああ、また無駄なSEOですか・・・ 理論的にはjavascriptで連結するのはまさにSEO的に不利ですので できないと思った方がよいでしょう 一度チェックしたものを確認画面をつくってそこから再度送信する ようなのが限界でしょうか。 いずれにしろ組合せが多数あるのであれば、ヒット率は相当低いので SEOが有利に働くと期待できるようなページにはならないと思います

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

どうしてもURLにつなげないといけないのでしょうか? 受け取った側でつなぐのではいけないのですか? <?php $checked=array("ccc"=>array("001"=>"","002"=>"","003"=>"","004"=>"","005"=>"")); if(isset($_REQUEST["ccc"]) and is_array($_REQUEST["ccc"])){ print "ccc=".htmlspecialchars(implode($_REQUEST["ccc"])); foreach($checked["ccc"] as $key=>$val){ if(in_array($key,$_REQUEST["ccc"])) $checked["ccc"][$key]=" checked"; } } ?> <form> <input type="checkbox" name="ccc[]" value="001" onchange="this.form.submit()"<?PHP echo $checked["ccc"]["001"];?>> <input type="checkbox" name="ccc[]" value="002" onchange="this.form.submit()"<?PHP echo $checked["ccc"]["002"];?>> <input type="checkbox" name="ccc[]" value="003" onchange="this.form.submit()"<?PHP echo $checked["ccc"]["003"];?>> <input type="checkbox" name="ccc[]" value="004" onchange="this.form.submit()"<?PHP echo $checked["ccc"]["004"];?>> <input type="checkbox" name="ccc[]" value="005" onchange="this.form.submit()"<?PHP echo $checked["ccc"]["005"];?>> <input type="submit" value="go"> </form>

taurin1000kg
質問者

お礼

ありがとうございます。 チェックボックス1はccc=~として チェックボックス2はddd=~として チェックボックス3はeee=~として チェックボックス4はfff=~として チェックボックス5はggg=~として ?ccc=~&ddd=~&eee=~&fff=~&ggg=~ あまりにも長くなると検索エンジンが拾ってくれないそうで、 この形にすることで解決できるとのことなので、送信時に連結させたいです。

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

>c=001002003… と連結してURLに追加する まず、これはHTMLの仕様ですのでできません。 PHP_SELFは脆弱なので使わない方がいいでしょう nameに同じものを指定したい場合は、c[]のような疑似配列風にやると PHPのスクリプトでデータを得るのが便利です。 <form method="get" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"> <input type="checkbox" name="c[]" value="001" /> <input type="checkbox" name="c[]" value="002" /> <input type="checkbox" name="c[]" value="003" /> <input type="checkbox" name="c[]" value="004" /> <input type="checkbox" name="c[]" value="005" /> <input type="submit" value="送信" /> </form> <?PHP if(isset($_REQUEST["c"]) and is_array($_REQUEST["c"])){ print_r($_REQUEST["c"]); } ?>

taurin1000kg
質問者

お礼

自信がないのですが、このような感じで良いのでしょうか。 <?php if(isset($_REQUEST["ccc"])){ $mb_str = mb_strlen($_REQUEST["ccc"],"UTF-8"); $ppp="ccc="; for($i=0,$n=0; $i<$mb_str; $i=$i+3,$n++){ $aaa[$n]=substr($_REQUEST["ccc"],$i,3); $ppp .= $aaa[$n]; } } print_r($aaa); echo "<br>".$ppp; ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form name="ggg"> <input type="hidden" name="ccc" value="" /> </form> <form name="fff"> <input type="checkbox" name="ccc" value="001" onchange="rrr()" <?php if(isset($aaa) && in_array("001",$aaa)){echo "checked ";} ?>/> <input type="checkbox" name="ccc" value="002" onchange="rrr()" <?php if(isset($aaa) && in_array("002",$aaa)){echo "checked ";} ?>/> <input type="checkbox" name="ccc" value="003" onchange="rrr()" <?php if(isset($aaa) && in_array("003",$aaa)){echo "checked ";} ?>/> <input type="checkbox" name="ccc" value="004" onchange="rrr()" <?php if(isset($aaa) && in_array("004",$aaa)){echo "checked ";} ?>/> <input type="checkbox" name="ccc" value="005" onchange="rrr()" <?php if(isset($aaa) && in_array("005",$aaa)){echo "checked ";} ?>/> </form> <script type="text/javascript"> function rrr() { var fff = document.forms['fff']; var ggg = document.forms['ggg']; var cval = ""; for(i=0; i<fff.ccc.length; i++){ if(fff.ccc[i].checked){ cval += fff.ccc[i].value; } } ggg.ccc.value = cval; if(cval==""){ return; } ggg.submit(); } </script> </body> </html>

関連するQ&A

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • PHPで動的URLを静的URLに変換するには

    PHPで動的URLを静的URLに変換するやり方を教えてください。 <form method="GET" action="aaa/bbb"> <input type="checkbox" name="ad" value="0"> <input type="checkbox" name="ad" value="1"> <input type="checkbox" name="ad" value="2"> <input type="checkbox" name="sb" value="0"> <input type="checkbox" name="sb" value="1"> <input type="checkbox" name="sb" value="2"> <input type="submit" value="送信"> </form> 上記のフォームからチェックボックスを複数選択してsubmitしたとき、 ブラウザのURLはhttp://www.hogehoge.com/aaa/bbb?ad=1&sb=2 となっていたとします、 これをhttp://www.hogehoge.com/aaa/bbb/1/2 と書き換えるにはどんなPHPスクリプトを書けばよいのでしょうか? 実際はもっとチェックボックスの数が多いので、 mod_rewrite は不向きのように思います。 そうすると、path_info を使うのが良いと思うのですが、 具体的にどのようにコーディングすればいいか分かりません。 お手数ですが、回答をお願いいたします。

    • ベストアンサー
    • PHP
  • チェックボックス 連結

    恐れ入ります。 <input type=checkbox name=col1 value="1"> <input type=checkbox name=col1 value="2"> <input type=checkbox name=col1 value="3"> <input type=checkbox name=col1 value="4"> <input type=checkbox name=col1 value="5"> を、 1;2;3;4;5 と連結して同一フィールドへ送信し、 読み込み時に 分割して読み込みたいのですが、どのようにしたら良いでしょうか。 よろしくお願いします。

  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

  • フォームを使ってURLに次々と書き込みをしたい

    フォームを使ってURLに次々とチェックした項目を追加していきたいのですがわかりません。 なにか良い方法はありませんか? 以下の例はHTMLを表示したいと考えて作りましたが実際は検索する項目を追加して絞込みに行いたいと思っています。 たとえば↓のような感じで行いたいです。 <form id="form" name="form" method="GET" action="http://www.○○○.ne.jp/"> <input name="24/" type="checkbox"/> 24ページへ <input name="25/" type="checkbox"/> 25ページへ <input type="submit" /> </form> よろしくお願いします。

  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • HTMLフォームで複数選択のチェックボックスの値をまとめてから送信したい

    下のようなフォームがあります。 <form method="get" action="" >  <input type="checkbox" name="item" value="1">item1</input>  <input type="checkbox" name="item" value="2">item2</input>  <input type="checkbox" name="item" value="3">item3</input>  <input type="submit" value="送信" /> </form> これで例えばすべてのチェックボックスをチェックして送信した場合、 ?item=1&item=2&item=3 となりますが、これを ?item=1,2,3 とする方法はありますでしょうか? 都合により、method="get"の部分は変えられず、受け取ってからの処理(value値を配列にして受け取ってから展開するなど)も変更できません。 ご教授いただけると助かります。

    • ベストアンサー
    • PHP
  • チェックボックスのうちひとつでもチェックがなければエラー

    チェックボックスが複数個(5~6個)あります。 hajime.html <form action="niban.php" method="post"> <input type="checkbox" value="A" name="CHK1" /> <input type="checkbox" value="B" name="CHK2" /> <input type="checkbox" value="C" name="CHK3" /> <input type="checkbox" value="D" name="CHK4" /> <input type="checkbox" value="E" name="CHK5" /> <input type="checkbox" value="F" name="CHK6" /> </form> ●このA~Fのうち、ひとつでもチェックされていなければ チェックしてください。とエラー表示させたいのですが… ●次のページではこのようにデータを受取していします。 niban.php// フォームの値取得は下記のように行っています。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $v = addslashes($v); $$k = $v; } } else { exit(); } $ErrFlg = 0;(エラーの時は$ErrFlgを1にします) ●エラー構文のサンプル↓ if ($name == "" ) { echo "<p>名前を入力してください。"; $ErrFlg = 1; } どうぞお力をおかしください

    • 締切済み
    • PHP
  • チェックボックス等の扱い。

    http://oguchan.s4.xrea.com/language/php/ のサイトにて、 <FORM> <INPUT TYPE="TEXT" NAME="hoge" VALUE="1"> <INPUT TYPE="SUBMIT"> </FORM> は、phpスクリプト内で$hogeで参照でき、しかしそれは危険であるから、 register_globals を無効にしてこれをできなくする。とあります。 PHP4~もそういうように設定されていると聞きました。 しかし、チェックボックスで同じname、で異なるvalueをもつ複数のデータを扱うときに、 <input type="checkbox" name="delno[]" value="no1"> <input type="checkbox" name="delno[]" value="no2"> としたときに、 echo $_POST['delno'][0]; echo $_POST['delno'][1]; と参照できてしまうのですが、これはいいのですか?

    • ベストアンサー
    • PHP
  • チェックに応じて違うチェックボックスをアクティブにしたい

    次のHTMLのように、大分類、小分類のような構成のチェックボックス グループがあります(初期設定は全部チェック無しです) 普段は[a][b][c][d]をdisableとしておき、(1) にチェックが入った 場合に[d]以外([a][b][c])アクティブ(?とにかくチェックを入れる ことができる)ようにするにはどうしたらいいでしょうか。 よろしくお願い致します。 <form id="Form1"> : <INPUT TYPE="CHECKBOX" NAME="food" value="果物">(1) 果物 <INPUT TYPE="CHECKBOX" NAME="food" value="野菜">(2) 野菜 <INPUT TYPE="CHECKBOX" NAME="food" value="肉魚">(3) 肉魚 <br> <INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ : </form>

専門家に質問してみよう