- ベストアンサー
PHPでの文字サイズ変更方法とクッキー情報の利用方法について
- PHPでの文字サイズ変更方法とは?javascriptを使用しない方法を解説します。
- PHPでのクッキー情報の利用方法とは?文字サイズの取得と書き換え方法を詳しく説明します。
- PHPの経験が浅い方に向けて、分かりやすく詳しく教えます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No2.No3の者です。 ▼ 例)aaa.php のページ <form action="bbb.php" method="post"> <input type="hidden" name="sizeL" value="16"> <input type="hidden" name="sizeM" value="12"> <ul id="box"> <li><a href="#">標準</a></li> <li><a href="#">拡大</a></li> </ul> </form> 上記だけですと【標準】をクリックしても【拡大】をクリックしても、何も反応しませんよね。記述ミスかな? Form内の各value値を送信するには「submit」で送らなくてはなりません。 であるならば、ただ単に、 <form name="form1" action="bbb.php" method="post"> <input type="hidden" name="sizeL" value="16"> <input type="hidden" name="sizeM" value="12"> <ul id="box"> <li><a href="javascript:form1.submit()">標準</a></li> <li><a href="javascript:form1.submit()">拡大</a></li> </ul> </form> で良いです。 ただ【標準】をクリックしても【拡大】を押しても同じ内容を送信します。当たり前ですが(^_^;) この場合、「bbb.php」では、 $_POST['sizeL'] → 16 $_POST['sizeM'] → 12 を受け取ります。 でも、たぶん目指すものは【標準:12】or【拡大:16】で違う値を送信したいですよね。 標準をクリックすれば、送信したい値を12 拡大をクリックすれば、送信したい値を16 という風に切り替えたいのではないでしょうか? この場合、送信したい値のnameを「size」としましょうか。 標準をクリックすれば、name="size" のvalue値を value="12" 拡大をクリックすれば、name="size" のvalue値を value="16" すればいいだけですが、HTMLだけではそれができません。 で、JavaScriptを使います。 ▼JavaScript <script language="javascript" type="text/javascript"> <!-- function changeSize(fsize){ // ↓fsizeが12ならname"size"のvalue値を、空から「12」に変える // ↓fsizeが16ならname"size"のvalue値を、空から「16」に変える document.form1.size.value = fsize; // ↓form送信 document.form1.submit(); } //--> </script> ▼FORM <form name="form1" action="bbb.php" method="post"> <input type="hidden" name="size" value=""> <!-- ←value値を空にしておく --> <ul id="box"> <li><a href="Javascript:changeSize(12)">標準</a></li> <!-- 上記JavaScriptを実行 --> <li><a href="Javascript:changeSize(16)">拡大</a></li> <!-- 上記JavaScriptを実行 --> </ul> </form> で宜しいですか? ブラウザ実行確信していないので、不動作でしたらごめんなさい。また誤植もあるかもしれません。。。。
その他の回答 (3)
- mat-21
- ベストアンサー率56% (91/162)
No2の者です。すいません。ところどころ間違いありましたね(汗) >・ <script> とは、JavaScript の事なんでしょうか? ですです。細かく書くと文字数が足りなくて^_^; 省略しちゃいました。 <script language="javascript" type="text/javascript"> <!-// function fontchange(fsizeNum){ document.changefsize.fsize.value=fsizeNum; document.changefsize.submit(); } //--> </script> >・ fontchange(0)" の所は、URL?fontchange(0) としなければならないのでしょうか? これ私のミスです(汗)。form送信の事ですので、本当は画像でやると思うので、以下が正確かな.... <li><img src="標準.gif" alt="標準" width="30" height="20" onclick="fontchange(0)" /></li> <li><img src="拡大.gif" alt="拡大" width="30" height="20" onclick="fontchange(1)" /></li> 各ボタンをクリックで、javascript関数「fontchange」を発動させて「fontsize.php」へ情報をpostで送っています。 ※<a link>が無いので、ボタンにカーソルを当てても指に変わらないので、その方法はCSSで指定できます。 ってことで、 >・ submit(); これは何を意味してるのでしょうか? はOKかな。。。。。 >・ form の name と id はどこで効果があるのでしょうか? これは私の癖で、ついつい書いちゃいました(汗) nameとidをセットで記述する癖になってるもんですから。。。ですので、この場合ID属性は必要ありません。 Javascript関数に必要なのは、FormNameだけですから..... 補足ですが、ブラウザ表示確認していないので、あくまで参考程度にしてもらえると幸いです。 でも、流れ的には、こんな感じというのがわかってくれるかな~っと思った次第ですm(_ _)m...恐縮です。
補足
こんばんは。いえいえ、私の知識不足と理解力の悪さです。(汗) 何度も詳しく返答して頂いて恐縮です。非常に分かり易くて助かってます。 それで、質問の返答の件ですが…なるほどです。 あと、一つだけ、どうしても理解できないところがあるのですが 今 <ul> のリストは CSS の id 指定でボックスを作成し、画像ではなく、単なるリンク文字で【標準】 【拡大】とさせてるのですが、この場合… 少し質問内容は代わり、単なるデータ渡しについての質問なんですが(汗) form の post 指定で aaa.phpページ から bbb.phpページへ、【標準】 の数値(12)または【拡大】の数値(16)のデータだけを送りにはどうしたらよいのでしょうか? ▼ 例)aaa.php のページ <form action="bbb.php" method="post"> <input type="hidden" name="sizeL" value="16"> <input type="hidden" name="sizeM" value="12"> <ul id="box"> <li><a href="#">標準</a></li> <li><a href="#">拡大</a></li> </ul> </form> ▼ 例) bbb.php のページ $sizel =htmlentities($_POST["sizeL"]); $sizem =htmlentities($_POST["sizeM"]); <?php echo $sizel; echo $sizem; ?> これで実際、作成したリンク文字をクリックして確認して見たのですが、データが渡されていませんでした(汗) 何度も質問して本当にすみません。(汗)
- mat-21
- ベストアンサー率56% (91/162)
やり方はいろいろあると思うのですが、私は以下のようにやってます。 まず、文字サイズ変更のボタンを配置します。 私の場合<小>はあまり意味のない効果なので、 <標準>と<拡大>の2種類にして、FORMのPOSTで送信します。 CSSは3種類準備します。 ★文字サイズに依存しない共通CSS(common.css) ★文字サイズ標準の場合のCSS(defult.css)例)p { font-size:12px; line-height:16px; } ★文字サイズ拡大の場合のCSS(big.css)例)p { font-size:14px; line-height:18px; } で、 <標準>を押した場合は、defult.cssを読み、 <拡大>を押した場合は、big.cssを読む といった感じです。 で、それをPHPで制御するわけですが、 現在のページだけを操作するだけでしたら、それほど難しくはないと思うのですが、 例えば<拡大>を押したら、他のページも、ずっと拡大を反映させなければなりません。 よって、COOKIEを利用します。 ただし、PHPの「setcookie()」はページを読み込む前に発動させなければなりません。 ですので、文字サイズ変更とSETCOOKIEを発動させるPHPを別ファイル(fontsize.php)に作り、 表示HTML(content.php)から(fontsize.php)へpostで送信し(fontsize.php)で制御して (content.php)に自動で戻ってきます。 この際、cookieに変更された文字サイズ変数が格納されていますので、 (content.php)に戻って再表示される際に、そのcookie値を読み込んできますので、 if分で分岐させたCSSを読むといった感じです。 本来は、標準を押した場合は、Cookie削除の方が良いと思いますが..... 幾分、ブラウザ確認していないので、間違い、不動作するかもしれません。ご了承下さい。 ▼表示HTML(拡張子PHP)例)content.php ※省略しています <head> <link href="common.css" rel="stylesheet" type="text/css" /> <?php if($_COOKIE['fontsize'] == 1){ // cookieの'fontsize'が1の場合:拡大CSS読む ?> <link href="big.css" rel="stylesheet" type="text/css" /> <?php }else{ // cookieの'fontsize'が1以外の場合:標準CSS読む ?> <link href="defult.css" rel="stylesheet" type="text/css" /> <?php } ?> <script> function fontchange(fsizeNum){ document.changefsize.fsize.value=fsizeNum; document.changefsize.submit(); } </script> </head> <body> <form name="changefsize" id="changefsize" method="post" action="fontsize.php"> <input type="hidden" name="fsize" value=""> <input type="hidden" name="lasturl" value="<? echo $_SERVER['PHP_SELF']; ?>"> <ul> <li><a href="fontchange(0)">標準</a></li> <li><a href="fontchange(1)">拡大</a></li> </ul> </form> </body> ▼fontsize.php(例) <?php setcookie('fontsize',$_POST['fsize']); header('Location:'.$_POST['lasturl']); ?> こんな
補足
早々の理想(イメージ)のご回答を下さり助かります。 お陰さまで大分理解する事ができました! あと4点ほど分からない事があるのですが… ・ <script> とは、JavaScript の事なんでしょうか? ・ submit(); これは何を意味してるのでしょうか? ・ form の name と id はどこで効果があるのでしょうか? ・ fontchange(0)" の所は、URL?fontchange(0) としなければならないのでしょうか? もし宜しければ、更に教えて下さると助かります。(汗) すみません。 宜しくお願いします。
- tansunohikidasi
- ベストアンサー率50% (1/2)
PHPで文字サイズ変更ですか。 普通にスタイルを書いてはだめですか? <?php print "<p style='font-size:2em'>あいうえお</p>"; ?> これで、文字は大きくなりますよ。
補足
早々のご回答を下さり助かります。 普通にスタイルでは出来ます。 私の説明不足ですみません。(汗) 例えば、[大] [中] [小] などのリンク文字で、各リンク文字の所でクリックした時に、クリックした文字サイズに変更をすると言った方法の事です。 [大]をクリックしたら文字サイズがでかくなると言ったイメージです。 改めて、もし、PHPで、その方法のやり方があれば、上記の mat-21 さんの様に詳しく教えて頂けると助かります。(汗) 私の説明不足ですみませんでした。(汗)
お礼
度々恐縮です。 なるほどです!記入ミスでなはなかったです。(汗) 今回、こんなに的を得たご回答を度々下さって! すごく嬉しく思ってます。(感謝) 実は、質問は初めてでして、ちょっと不安でした。(汗) 今回、お陰さまで私のように中途半端な知識者でも理解する事ができました。 また、質問するかもしれませんが、その際は、また宜しくお願いします。 でわ今回、非常に丁寧に詳しく十分すぎるご回答を気持ち良く頂いたので、ベストアンサーに選ばさせて頂きます。 貴重なお時間をとらせてしまいましたが、本当に本当に有難うございました。感謝感激な思いです。