- 締切済み
phpでの住所の処理について
初めまして。 まだまだphpを初めて間もないのですが、勉強がてらphpで登録内容の変更フォームを作っています。 ただ、どうしても住所関連の部分で上手く処理が出来ずに悩んでいまして、 よろしければお知恵を拝借できないでしょうか? ↓ココから実際のコード----------------------------------------------------------------- <select name="usaddress" id="usaddress" > <option value="">お住まいの都道府県を選択してください</option> <? for ($i=01;$i<53;$i++) { if(substr($i + 100 , 1 , 2) == $usaddress){ echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; }else{ echo '<option value="' . substr($i + 100 , 1 , 2) . '">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } } ?> </select> ↑ココまで実際のコード----------------------------------------------------------------- $usaddressには登録者の都道府県コードが入っています。 DBから呼び出して当該ユーザーの都道府県コードが入ってきます。 $selectprefecture_setには、連想配列で都道府県名を突っ込んでいます。 コレを登録内容の変更フォームに組み込むと、 セレクトボックスの中身は表示されるんですが、 DBから取ってきた値がデフォルト値で表示されないのです・・・。 DBからはキチンと値を持ってきているのは確認できていますし、 正直どこが悪いのかすらわかっていません・・・。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
こんにちは。 せっかく > substr($i + 100 , 1 , 2) とされているので、 > for ($i=01;$i<53;$i++) { ではなく for ($i=1;$i<53;$i++) { ではどうでしょう? $i=01 では8進数でまわっているような気がします。
- melox
- ベストアンサー率0% (0/0)
$usaddressには正しく値が入っていますか? >if(substr($i + 100 , 1 , 2) == $usaddress){ でマッチしていないせいかと・・・ 以下のコードで動作しました(tmp.php): --------- <?php for ( $i = 1; $i < 53; $i++ ) { $selectprefecture_set[ sprintf("%02d", $i) ] = '都道府県' . $i; } ?> <form action="tmp.php" method="post"> <select name="usaddress" id="usaddress" > <option value="">お住まいの都道府県を選択してください</option> <? for ($i = 01 ;$i < 53; $i++ ) { if ( substr($i + 100 , 1 , 2) == $_POST['usaddress'] ) { echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } else { echo '<option value="' . substr($i + 100 , 1 , 2) . '">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } } ?> </select> <input type="submit" value="post" /> </form> ---------
- SAYKA
- ベストアンサー率34% (944/2776)
>echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; 表示されたページを「ページのソースを表示」でどうなってるか確認してごらん。 それでも意味が判らないというならそれを保存するなりコピペしてテキストを新規作成するなりしてそれを検証してごらん。 http://openlab.ring.gr.jp/k16/htmllint/
補足
「selectedが与えられてないから」という意味でしょうか? であれば、それは理解できているのですが何故forループが上手く回っていないのかがわからずに悩んでいます・・・。