こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

チェックボックスを用い、MySQLからデータを取得

プログラミング初心者です。HTML, JavaScript, PHPを使用し、checkboxにチェックを入れ検索ボタンを押すと、MySQLからデータを取得し表示させる機能の実装を試みています。複数の項目を選択して検索したいため、checkboxで行いたいと考えています。
MySQLはitemsテーブルにurl, length, timeフィールドを用意し、text型でデータをセットしています。
誤っている箇所をご指摘頂ければ助かります。
よろしくお願いいたします。

*HTML

<div id ="length" >
<input name="length[]" type="checkbox" value="short">
<input name="length[]" type="checkbox" value="long">
</div>

<div id ="time" >
<input name="time[]" type="checkbox" value="morning">
<input name="time[]" type="checkbox" value="noon">
<input name="time[]" type="checkbox" value="evening">
<input name="time[]" type="checkbox" value="weekday">
<input name="time[]" type="checkbox" value="holiday">
</div>

<input type="button" name="search" value="検索"/>
<div id="outputArea">検索ボタンを押すと、ここにMySQLから取得したデータが表示される</div>

*JavaScript

$(function(){
$("#search").click(function(){
var aaa = $('div#length > input[name=***]:checked');
var bbb = $('div#time > input[name=***]:checked');

var inaaa=[];
aaa.each(function(){
inaaa.push(this.value);
})
var inbbb=[];
bbb.each(function(){
inbbb.push(this.value);
}]
$.post("output_do.php",inaaa,show);
$.post("output_do.php",inbbb,show);
});
});

function show(out){
var outdata = out.split(" ")
//表示させるデータ数はとりあえず3つほどを考えています
$("#outputArea").text(outdata[0]);
$("#outputArea").text(outdata[1]);
$("#outputArea").text(outdata[2]);
}

*PHP

mysql_connect('localhost','root','root') or die(mysql_error());
mysql_select_db('db');
mysql_query('SET NAMES UTF8');

$inaaa= $_POST["inaaa"];
$inbbb= $_POST["inbbb"];

if( isset($inaaa) ){
} else{
print '$inaaaは定義されていません';
}
if( isset($inbbb) ){
} else{
print '$inbbbは定義されていません';
}

$res = mysql_query("SELECT url FROM items
WHERE length = '" . $inaaa."' or time = '" . $inbbb."' LIMIT 0,10",
mysql_real_escape_string($inaaa),
mysql_real_escape_string($inbbb),
);

//この部分が特に不安です
if ($res !== FALSE) {
$out = "";
while ($row = mysql_fetch_array($res)) {
$out .= $row['url']."<i>";
}
echo $out;
}else{
echo "データがありません";
}

以上です。長々と申し訳ありませんm(__)m

投稿日時 - 2011-09-25 00:12:11

QNo.7032517

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

lengthやtimeがチェックボックスだとして、かりに両方にチェックがついていない場合は
ひとつもヒットしないということでよいのでしょうか?
またtimeで朝昼夜と平日・休日をおなじレベルでチェックさせるのはかなり
無理がある仕様です。
フローチャートや仕様書を書いてロジック全体を理解することが必要だと思います

投稿日時 - 2011-09-26 01:03:33

ANo.1

えーと
動かないから質問されているんですよね?

どこが動かない原因なのか、「この部分が特に不安です」というのはなにか検証してみた結果なんでしょうか?

クライアント側でのPOSTしている箇所(JS)部分が、jQueryなんでしょうか?
あまりいじったことがないんで、これで正しくPOSTされるのか、よくわかりませんが・・・
buttonのイベントになにも結びついてないんで、POSTされるようにも見えないですし、このJSソースが初期表示で読み込まれるのであれば、最初にPOSTされるようにも見えます。

PHP側では、$_POST['inaaa']は配列になってるんですよね?
配列をSQLにつっこんだところで動くわけないかとおもいます。
あと、SQL自体も「複数の項目を選択して検索したい」という内容とは合致してません。
あと、mysql_queryの引数にSQLのほかにPOSTされた値が入ってるのは何なのでしょうか?
引数はSQLと接続ハンドル以外にないはずですが・・・

失礼ながら、それぞれの言語をもう少ししっかりと学ばれたほうがよいのではないでしょうか?
おそらく赤ペンで間違ってるところを修正したら、赤一色になると思います。
今回の場合であれば、Javascriptを使ってPOSTする必要はないです。

投稿日時 - 2011-09-25 01:53:56

あなたにオススメの質問