phpのエラー

サーバーを変えて設定を変えたらエラーがでまくりました。
これまではなにも言わずに陰で支えてくれていたのに、厳しい人になったみたい。

今日のエラー
Undefined index

変数の宣言がされていない。ということだと思います。エラーではないけど、お小言みたいなもんでしょう。
$_POSTなんかでform名を使ったりするとでます。

$id = isset($_GET['id']) ? htmlspecialchars($_GET['id']) : null;

こんな感じで存在の確認をしたのち、宣言をしてやるといいです。

mySQLでランダムにデータを抜き出す

ORDER BY RAND()

これでランダムにソートすることができる。ランダムにソートしたデータを一番上から取り出せばランダムに抜き出したことになる。
ただ、データの件数が多いと処理に時間がかかるので

ORDER BY RAND() LIMIT 0,10

こうやって、ソートする件数を制限するとよい。上の例では10件ソートしている。

たとえば、10件のランダムに選んだデータを抜き出して並べたい場合であれば、

$sql = "SELECT eng,jap,level FROM word ORDER BY RAND() LIMIT 0,10";
$result = mysql_query($sql);
if (!$result)die('INSERTクエリーが失敗しました。'.mysql_error());

for($i = 0;$i < 10;$i++) {
$ro = mysql_fetch_assoc($result);
print_r($ro);
}

これで、ソートしたデータを作っておいて、mysql_fetch_assocをforで回して取り出せばよい。

load

jQueryのloadの動きではまったのでメモ。

特定の要素を指定して外部ファイルを追加するような場合、
loadするファイルがhtmlの場合、firefoxでは動くけど、IEでは表示されない。
読込むファイルは、内容はhtmlでもいいけど、拡張子はtxtにする。

イメージとしては、htmlのheaderやbodyなんかは元々あるものを使うんだから、必要ないってことなんだと思う。
あくまでもhtmlの途中に追加のテキストを追加するのであって、別のhtmlを合体させるわけではない。

チェックボックスをON・OFFで使う

チェックボックスは、もともとは複数の選択肢の中から複数選択することができるというもの。
動きとしては、チェックの付いている項目のvalueの値をPOSTするような感じ。おそらく複数あれば複数POSTするんだと思う。

これをON・OFFのスイッチで使いたいということなんです。

$("input:checkbox:checked").eq(0).val();
こんな感じでいけた。最初にチェックが付いているvalueを取る。チェックがついている項目がなければundefinedが返る。これをデータベースに放り込んでみると「0」になったのでフラグとしてはこれで良い。

親子や兄弟のこと

親子という概念は二種類あって、tableとtdは親子1。divに囲まれているのは親子2。
どこからどうみても親子ってやつと、位置関係だけで親子になってるやつがある。
closestは本当の親子にしか仕えない。位置関係の親を取りたい場合はparent()で取る。

$(this).parent().children("div:last").hide();

divの中にボタンを作って、それを押すと同じdivの中にあるテキストを隠すみたいな動きにしたい場合は、上の一行でいっちゃってください。

cssに関するメモ

filter: alpha(opacity=50);
opacity: 0.5;

上はIE用。下はそれ以外。半透明にする。

divで囲んだエリアから中身がはみ出してしまうような時にいろいろ設定できる。
overflow:scroll; スクロールバーをつける。
overflow:hidden; 表示させない。
overflow:visible; 全部表示させる。
overflow:auto; 内容が多い時だけスクロールバーがつきます。