2015年11月26日木曜日

DISTINCTを使って重複を除外して表示

DISTINCTを使って重複を除外して表示

こんにちは山田です。
DB環境:MSSQL

登録したデータから、このカラムってどんな種類があったっけ?
と思った時に役立つ方法です。
つまり
取り出したレコードから重複する行を除外することができます。


■元のテーブル

category    color    size
----------------------------
adult         red       small
adult    blue     big
adult    blue     medium
kid       red       big  

■クエリの文法
 一意にしたいカラムの前にdistinctをつけたあげればよいです。

SELECT DISTINCT category

FROM mst_test


■結果
category
----------------------------
adult
kid

そもそもdistinctとは、「まったく異なるもの」という意味になるみたいです。

2015年11月25日水曜日

viewstateの中身を見ようと思ったがうまくできない

ブログネタ

こんにちは山田です。

postとgetの違いについて以前お話したのですが
postで送信されるviewstateについて掘り下げたいと思います。

■ViewStateとは
ビューステートは、ページとコントロールの値をラウンド トリップ間で保持する方法です。
現在のページの状態と値をBase64でエンコードして隠しフィールドに出力されます。

【~viewstateの中身を見よう~】

開発環境:ASP.NET 2.0
開発言語:C#

■元データをつくる
こんな感じで簡単なASPXの元データをつくります

[aspx]



 
  <%=textBox1.Text%>と入力されました


■ViewStateの中身を見る
ページのソースを開くを実行して
以下のviewstateの値をコピーしてその下のデコードツールにいれて実行してみる
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA0NzQxNTcxOWRky33WseENfFC3H1lsNdv99j+ZHmA=" />
</div>

http://www.ahref.org/app/base64/base64.cgi

■結果

1047415719dd�}ֱ�
|P� Yl5���?� `

文字化けしてしまった。
うまくいかない、、、。
文字コードがあっていないのか、よくわからない。
もうちょっと調べてみようと思います。

2015年11月24日火曜日

Google Mapにマーカー(目印)を表示する

こんにちわ、開発者のⅠです。

さて、前回は便利機能の表示の切替についてお話しましたが、今回はマーカーを表示させる方法についてお話したいと思います。

マーカーは皆さんご存知でしょうか?
Google Map上で建物などのスポットをクリックしたり、キーワード検索を行うと現れる"赤い目印"のことです。
なんとなく愛嬌がありますね。


それでは早速、実践してみましょう。

マーカーを表示させるには、経度と緯度が必須です。
以下のコードを、 関数 initializeに追加してみてください。
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

var markers = [
    ['東京タワー',35.658589, 139.745615],
    ['浅草 雷門',35.711020, 139.796336],
    ['中央本線 笹子駅',35.603862, 138.825087],
    ];
for (var i = 0; i < markers.length; i++) {
var name = markers[i][0];
var latlng = new google.maps.LatLng(markers[i][1],markers[i][2]);
createMarker(latlng,name,map)
}
さらに、以下の関数を新規に追加します。
function createMarker(latlng,name,map)
{
var infoWindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({position: latlng,map: map});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(name);
infoWindow.open(map,marker);   
});
}

これで、三箇所にマーカーが表示されていると思います。 しかし、この方法ではマーカーを表示させたい箇所が増減した場合にその都度、ソースの編集が必要になります。 次回は、マーカーの座標を外部ファイルから読み出す方法についてお話したいと思います。 それでは、また!

HTMLのForm要素について

HTMLのForm要素が忘れがちだったので一覧にまとめてみました。

■要素一覧
action     :送信先ファイルのURL
method     :データの送信方法(get か post)(省略するとgetになる)
enctype     :送信時のデータ形式
accept-charset     :送信時の文字コード
novalidate  new     :入力チェック (バリデート) せずに送信
autocomplete  new     :オートコンプリート機能のON,OFF
name     :フォームに固有の名前をつける
target     :結果を表示するウィンドウを指定

■サンプル

【送信したい部品】
<p>お名前:<input type="text" name="name"></p>
<p><input type="submit" value="送信する"></p>


【Formでくくる】
<form action="search.aspx" method="post">
<p>お名前:<input type="text" name="name"></p>
<p><input type="submit" value="送信する"></p>
</form>


actionに送信先のURL
methodに送信方法を記述してみました。


■getとpostとは

【method="get"とは】
特徴としては、クエリストリング(フォームの内容)がactonで指定されたURLの「?」の後につけて送信されます。
つまりデータがURLにくっつきます。
ですので、短いデータの時に使われるようです。

【method="post"とは】
postでは、クエリはURLと連結されず、各データ自体が送信されます。
なので容量の大きいデータの送信が可能になります。

2015年11月20日金曜日

Google Mapのカスタマイズ

こんにちわ、無性にかまぼこが食べたい開発者のⅠです。
明日から3連休!という方もいらっしゃると思いますが、地域によっては天気が思わしくないようですので、外出される方は十分ご注意ください。

それでは、前回から引き続き、Google Maps JavaScript APIに関係するお話をしたいと思います。

Google Mapを無事に表示出来た方、もう少しカスタマイズしてみましょう。

マップのレイアウトにかかわるvar optionのプロパティをもう少し紹介しておきますと、


① mapTypeControl: (true/false)

「地図⇔航空写真」を切り替えるボタンの表示・非表示を切り替えます。
ページに表示するマップのサイズとの兼ね合い等の理由で非表示にしたい方もいらっしゃると思います。その場合には、"false"に設定しましょう。


② streetViewControl: (true/false)

「ストリートビュー」の機能の表示・非表示を切り替えます。
余談ですが、APIを利用して埋め込んだMapでも公式ページと同じように表示できることに驚きました……。さすが、Googleですね。


この二つをJavaScriptに追加してみると、このようになります。

 google.maps.event.addDomListener(window, 'load', function () {
var map = document.getElementById("map_canvas");
 var options = {
  zoom: 11,
  center: new google.maps.LatLng(35.360667, 138.727775),
  mapTypeId: google.maps.MapTypeId.ROADMAP
  
//↓ここから↓
streetViewControl: false,
  mapTypeControl: false  
//↑ここまで↑
};
  new google.maps.Map(map, options);
 });

便利機能だからと言ってとりあえず残すのではなく、そのページの趣旨や見た目に合わせて表示を切り替えてみると良いかもしれませんね。

それでは今回はここまでです。