MySQLでオートインクリメントされる値の頭を0で埋めて桁数を揃えたいざんす。
+--------------+--------+ | id | name | +--------------+--------+ | 000000000001 | ラモス | | 000000000002 | 落合 | +--------------+--------+
idを12桁にしてこうしたいざんす。
<?php //新しくテーブルを作る $sql = "CREATE TABLE table1 "; //表示の都合上分割 $sql .= "(id INT(12) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, "; $sql .= "name VARCHAR(10), PRIMARY KEY (id))"; $res = mysql_query($sql); ?>
INTの()内に桁数を指定して、UNSIGNED ZEROFILLとしてやるとできたざんす。
桁数をオーバーした値はそのまま入るので、オーバーさせないためには、TINYINTなら3桁、INTなら10桁、BIGINT20桁、以上を指定しておけばいいざんす。
ちなみに、AUTO_INCREMENTするときは必ず、PRIMARY KEY(インデックス)を設定してやる必要があるざんす。
実際にデータを入力して、いろいろ試してみるざんす。
<?php //1行目を挿入 $sql = "INSERT INTO table1 VALUES (NULL, 'ラモス')"; $sql = "INSERT INTO table1 VALUES (0, 'ラモス')"; //0でもいい $sql = "INSERT INTO table1 (name) VALUES ('ラモス')"; //これでもいい $res = mysql_query($sql); //2行目を挿入 $sql = "INSERT INTO table1 VALUES (NULL, '落合')"; $res = mysql_query($sql); $id = mysql_insert_id(); //最新(2行目)のIDを取得する echo $id; //2 0で埋まってない! $id = sprintf('%012d', $id); //頭を0で埋めてやる echo $id; //000000000002 //idの値を取得する $sql = "SELECT id FROM table1 WHERE id = $id"; $res = mysql_query($sql); $row = mysql_fetch_array($res); echo $row['id']; //000000000002 ちゃんと0で埋まってる //直書きで取得してみる $sql = "SELECT id FROM table1 WHERE id = 000000000001"; $res = mysql_query($sql); $row = mysql_fetch_array($res); echo $row['id']; //000000000001 平気! //0で埋めないでやってみる $sql = "SELECT id FROM table1 WHERE id = 2"; $res = mysql_query($sql); $row = mysql_fetch_array($res); echo $row['id']; //000000000002 これでも平気! ?>
勉強になったざんす。
JavaScriptでXHTMLフォーム中の特定のテキストボックス・オブジェクトを抽出したいざんす。
<form action="send.php" method="POST" id="form1"> 名前 <input type="text" id="text1" name="namae" /><br /> 住所 <input type="text" id="text2" name="jyusyo" /><br /> 電話 <input type="text" id="text3" name="denwa" /><br /> <input type="submit" id="subm1" name="sousin" value="送信" /> </form>
こんなXHTMLのフォームの中から、住所のテキストボックス・オブジェクトを抽出するざんす。
オブジェクトが抽出できれば、いろんな操作ができるざんす。
function getTextBox2() { var obj; obj = document.getElementById('text2'); //ID値で直撃 obj = document.getElementsByName('jyusyo')[0]; //name値で直撃 obj = document.getElementsByName('jyusyo').item(0); obj = document.getElementsByTagName('input')[1]; //全てのinputタグの2番目 obj = document.getElementsByTagName('input').item(1); obj = document.getElementById('form1')[1]; //特定のformエレメント下の〜 obj = document.getElementById('form1').getElementsByTagName('input')[1]; obj = document.getElementsByTagName('form')[0][1]; obj = document.forms[0].elements[1]; obj = document.getElementById('form1').elements[1]; obj.value = '東京都新宿区'; //抽出したテキストボックスに文字を入れてみる }
objと名前をつけた変数には、全部同じ2番目のテキストボックス・オブジェクトが代入されるざんす。
テキストボックスとかだと、最初から重複しないname値を設定しておくケースが多いので、getElementsByName()[0]で直撃すればいいざんす。
JavaScriptでテキストボックスの末尾にカーソル(キャレット)を移動したいざんす。
function setCursor() { var obj = document.getElementsByName('text1')[0]; //テキストボックスを指定 obj.focus(); //テキストボックスにフォーカスを移動 obj.value += ''; //テキストボックス内の文字列末尾にカーソルを移動 }
すごっ!目から鱗の超簡単技ざんす。
UTF-8の環境でPHPでMySQLデータベースに文字化けせずにアクセスしたいざんす。
<?php header('Content-Type: text/html; charset=UTF-8'); header('Content_Language: ja'); $host = 'localhost'; //データベースのホスト名 $user = 'minmin'; //データベースの接続ユーザー名 $pass = '123456'; //データベースの接続パスワード $db = mysql_connect($host, $user, $pass) or die('Could not connect'); mysql_query('SET NAMES utf8', $db); mysql_select_db($user) or die('Could not select database'); ?>
データベースを開くとき、mysql_query('SET NAMES utf8', $db); を噛ましてやるとできたざんす。
深く考えることもなく、これでいいざんす。
UTF-8の環境でPHPのmb_send_mailを使って文字化けせずにメールを送信したいざんす。
<?php header('Content-Type: text/html; charset=UTF-8'); header('Content_Language: ja'); $to = 'aaa@bbb.jp'; //送信先メールアドレス $subj = 'こんにちくわ'; //件名 $mess = 'お元気ざんす?'; //本文 $from = 'From: ccc@ddd.jp'; //送信元メールアドレス mb_language('uni'); mb_internal_encoding('UTF-8'); mb_send_mail($to, $subj, $mess, $from); //メール送信 ?>
こんなんでなんとかなったざんす。
mb_language('ja'); だと、まだ一部の文字が化けてしまうざんす。シェー!
言われるままに mb_language('uni'); にしたら収まったので、これでいいざんす。