スレッド表示 | フラット表示〕 全トピック 920 件中 360 番目 次≫ ≪前

チェックボックスの値の保持

created: 2005-09-27 21:34 | modified: 2005-09-30 00:59 | reply: 5

[2587] チェックボックスの値の保持

user: | created: 2005-09-27 21:34
はじめまして。
PHP初めて2週間の勉強真っ最中の者です。

MYSQLから100件の情報を取り出して、10件X10ページの表を作りました。各件(各行)の先頭にチェックボックスをつけ、ページを移動しても、前にチェックしていた情報を保持する方法は無いでしょうか?「チェックし終わったら、submitでチェックした項目のID等の送信」というデータベースを作りたいのですが…。
ページ移動を<a href="">(アンカー?)ですると、フォームからのデータ送信がされないので行き詰ってしまいました。

長く分かりづらい質問かと思いますが、どなたかアドバイスお願いします。
reply: 2591 2593 返信 編集 削除

[2591] 異なるページ間で値を保持するには

user: ゆうじ | created: 2005-09-28 19:06
こんばんわ。

異なるページ間で値を保持する必要がありますね。
こういうときはセッションを使いましょう。

http://jp.php.net/manual/ja/ref.session.php

スクリプト始めに session_start() だけしておけば
後は $_SESSION['変数名'] という書式で他の変数同じように扱えます。
Parent: 2587  reply: 2592 返信 編集 削除

[2592] セッション

user: | created: 2005-09-28 23:11
ご返信有難うございます。

<a href=>でページング処理を行うと、フォームの値(チェックボックスの識別>が送信(次ページに持ち越し)されないということを聞いていましたので、セッション設定しても駄目かなと思ってました。
ゆうじさまのご意見から、セッションで値が保持できそうなので、勉強しなおして挑戦してみます。
Parent: 2591  返信 編集 削除

[2593] javascriptを使えば・・・

user: ach | created: 2005-09-28 23:36
javascriptとクッキーを使うと特にsubmitを使わずとも情報の保存、受け渡しができます。

サンプル
<?php $page = (int)@$_GET["page"];?>
<h1>Page <?=$page;?></h1>
<form name=page1>
<?php for($i=$page*10;$i<$page*10+10;$i++) echo "<input type=checkbox name='box[{$i}]'>{$i}<br>";?>
</form>
<?php for($i=0;$i<10;$i++) echo "<a href='?page={$i}'>page{$i}</a> ";?>
<script>
//クッキーの期限(ミリ秒)
cookieExpire = 24*60*60*1000;

addEventOnCheckBox(page1);
autoCheck(page1);

//クッキーを参照してチェックボックスにチェックをつける
function autoCheck(formObj){
elements = formObj.getElementsByTagName("input");
for(i = 0; i < elements.length ;i++){
if(elements[i].type != "checkbox") continue;
if(getcookie(elements[i].name) == "true") elements[i].checked=1;
}
}

//チェックボックスの状態が替わると逐次クッキーに書き込むようにする
function addEventOnCheckBox(formObj){
elements = formObj.getElementsByTagName("input");
for(i = 0; i < elements.length ;i++){
if(elements[i].type != "checkbox") continue;
elements[i]["onclick"] = function(){setcookie(this.name,this.checked);};
}
}

//クッキーの入出力
function getcookie(key){
reg = new RegExp(escape(key) + "=[^;]*","");
if(temp = document.cookie.match(reg)){
return temp[0].replace(/.*=/,"");
}
return false;
}
function setcookie(key,val){
date = new Date();
date.setTime(date.getTime()+cookieExpire);
document.cookie = escape(key) + "=" + escape(val) + ";expire " + date.toGMTString();
}
</script>
<pre>
<?php
var_dump($_COOKIE);
?>
</pre>
IE6,FireFox,Opera7.5でチェック

addEventOnCheckBoxは静的だしPHPでやったほうが安上がりかもしれませんね。
Parent: 2587  reply: 2597 返信 編集 削除

[2597] ありがとうございます

user: | created: 2005-09-29 20:19
ach様
立派なプログラム有難うございます。
希望していた機能とぴったりなので、猛烈に感動してます。

JavaScriptに関する知識がまるでないので、先ほどから関数達とにらめっこしてますが、値の保持まではできました。
あとは、クッキーからの値の取得をどうにかして、データベース完成させたいと思います。
Parent: 2593  reply: 2598 返信 編集 削除

[2598] スペルミス発見orz

user: ach | created: 2005-09-30 00:59
expire => expires=
最後の"s="が抜けてました・・・まだ見てたら直しといてください。
Parent: 2597  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 360 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑