HTMLの属性値~idとnameの違い
id属性
これを書いた要素に対して、固有のidをつけることができるそうです。固有のものということで、同じ文書内で重複は許されていません。
使用例
//idなし form内にbuttonを記述することで関連付く <form method="post" action="$_SERVER[PHP_SELF]"> ... <button type="submit" name="submit" value="send">送信ボタン</button> </form> //idあり form外からもform属性で指定したid属性値(今回はnameentry)を持つformと関連付く <form method="post" action="$_SERVER[PHP_SELF]" id="nameentry"> ... </form> .. .. <button type="submit" name="submit" value="send" form="nameentry">遠距離送信ボタン</button>
使い方としては、こんな感じでしょうか。。固有のものということなので、このように指定された要素を探し出し、指定することができるという感じですかね!
TAG<index>さんのサイトから引用させていただきますが、このid属性値の名前付けには多少の制約があります。
【ID名について】
IDを付ける際には、以下の点に注意してください。
1つのIDは、同じ文書内で1ヵ所にだけ使用できます。(重複させてはならない)
使用できる文字は、半角の英数字、ハイフン( - )、アンダーバー( _ )、コロン( : )、ピリオド( . )です。(ハイフン以外の記号は使わない方が無難です)
アルファベットで始めなければなりません。(数字や記号で始めてはならない)
大文字と小文字の区別があります。
IDをCSSのセレクタとして使用する場合は、上記以外にも以下の点に注意してください。CSSのセレクタ名では、コロン( : )とピリオド( . )が使えなくなります。
アンダーバー( _ )をID名に含めると、一部の古いブラウザではIDが認識されなくなります。
name属性
name属性を使うことで、その要素に名前付けをすることができます。HTMLやPHPをあまり知らないので、formでの使用例しかわからない点をご了承くださいm(_ _)m//入力フォーム <form method="post" action="$_SERVER[PHP_SELF]"> <input type="text" name="city" size="30" maxlength="50" /> <input type="text" name="address" size="5" maxlength="2" /> <button type="submit" name="submit" value="send">Add Entry</button> </form>
このフォームでcityのinputに"東京"、addressのinputには"渋谷区"と入力し、以下のようなPHPで受け取ったとします。
<?php //$mysqliは事前に使用したmysqli_connectを保持。 if ($_POST) { $safe_city = mysqli_real_escape_string($mysqli, $_POST['city']); $safe_state = mysqli_real_escape_string($mysqli, $_POST['address']); ... ?>
突如SQL文を出してごめんなさい!現在勉強中なもので。。
初めのif文では$_POSTに値が入っているか確認しています。入っていないのに、中身を確認してもエラーになりますからね! そして、 $_POST['city']では"東京"、$_POST['address']では"渋谷区"を受け取ることができます。このように、POSTの中から取り出すものを指定する際に、nameは活躍できるんですね。
余談として、、
mysqli_real_escape_stringという関数について
これはPHPからMySQLにデータを登録するときに、MySQLで使用する特殊文字をエスケープする方法です。上の文のその後の処理としては、$POST['city']から受け取った"東京"を$safe_city変数に入れて、sql文で使用するという流れなのですが、そのままではSQLインジェクション攻撃に簡単に被害に遭います。てっとり早く言うと、mysqli_real_escape_stringという関数を経由すれば、少なくともmysqli_query関数で使用する場合は、チェックがいらなくなり、楽にかつ安全に使用できるよって感じです。