• 締切済み

チェックボックスの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に追加するにはどうしたら良いですか?

みんなの回答

回答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