愛知県名古屋市北区のQ&A

  • 締切済

    質問PDOを使ったSQL文の入力方法

    • 2014/9/24
    • sinto58167

    私のやりたいことはSQL文の実行なのですが、PDOを使った操作になります。
    どうかご教授お願い致します。

    <th>価格帯</th>
    <td>
    <select name="price_min">
    <option value="1" selected="selected">下限なし</option>
    <option value="10000000">1000万</option>
    <option value="15000000">1500万</option>
    <option value="20000000">2000万</option>
    以下略

    <th>愛知県 - 名古屋市</th>

    <td>

    <input type="checkbox" name="chiiki_id[]" value="1" <?php if (isset($_REQUEST['chiiki_id']) and in_array('1',$_REQUEST['chiiki_id'])) print 'checked'; ?>/>
    中村区
    <input type="checkbox" name="chiiki_id[]" value="2" <?php if (isset($_REQUEST['chiiki_id']) and in_array('2',$_REQUEST['chiiki_id'])) print 'checked'; ?>/>
    西区
    <input type="checkbox" name="chiiki_id[]" value="3" <?php if (isset($_REQUEST['chiiki_id']) and in_array('3',$_REQUEST['chiiki_id'])) print 'checked'; ?>/>
    昭和区
    <input type="checkbox" name="chiiki_id[]" value="4" <?php if (isset($_REQUEST['chiiki_id']) and in_array('4',$_REQUEST['chiiki_id'])) print 'checked'; ?>/>
    港区

    </td>

    <th>こだわり条件</th>

    <td>
    <input type="checkbox" name="kid[]" value="1" <?php if (isset($_REQUEST['kid']) and in_array('1',$_REQUEST['kid1'])) print 'checked'; ?>/>
    新築
    <input type="checkbox" name="kid[]" value="2" <?php if (isset($_REQUEST['kid']) and in_array('2',$_REQUEST['kid2'])) print 'checked'; ?>/>
    南向き
    <input type="checkbox" name="kid[]" value="3" <?php if (isset($_REQUEST['kid']) and in_array('3',$_REQUEST['kid3'])) print 'checked'; ?>/>
    セキュリティ充実
    <input type="checkbox" name="kid[]" value="4" <?php if (isset($_REQUEST['kid']) and in_array('4',$_REQUEST['kid4'])) print 'checked'; ?>/>
    市街地が近い<br />
    <input type="checkbox" name="kid[]" value="5" <?php if (isset($_REQUEST['kid']) and in_array('5',$_REQUEST['kid5'])) print 'checked'; ?>/>
    内装リフォーム
    <input type="checkbox" name="kid[]" value="6" <?php if (isset($_REQUEST['kid']) and in_array('6',$_REQUEST['kid6'])) print 'checked'; ?>/>
    システムキッチン
    <input type="checkbox" name="kid[]" value="7" <?php if (isset($_REQUEST['kid']) and in_array('7',$_REQUEST['kid7'])) print 'checked'; ?>/>
    ペット可</td>
    </tr>

    </table>
    <input type="submit" value="検索" class="Btn-gray button">
    </form>






    $sql = 'SELECT DISTINCT * FROM bukken';





    //名古屋の地域checkbox

    if(isset($_POST['chiiki_id'])and is_array($_POST['chiiki_id'])){
    $ary = array_filter($_POST['chiiki_id'], function($v) {return is_numeric($v);});
    $sqlA = 'id IN (SELECT chiid FROM chiiki WHERE chiiki_id IN ('.implode(',', $ary).'))';
    }else{ //print '地域がチェックされてません';
    $sqlA = ' 1 ';
    }


    //kid絞り込み



    if(isset($_POST['kid'])and is_array($_POST['kid'])){
    $ary = array_filter($_POST['kid'], function($v) {return is_numeric($v);});
    $sqlK1 = 'id IN (SELECT fid FROM fudou_kodawari2 WHERE kid IN ('.implode(',', $ary).'))';
    }else{ //print '<br />こだわりがチェックされてません';
    $sqlK1 = ' 1 ';
    }



    のようなフォームからチェックされた値のkidのところを絞った条件で表示させたいです。下記のPHPで値を受けてSQL文をMySQLに接続してSQLを実行するのですが、中々出来ません。

    そして

    テーブルがbukkenとkodawariがあります。

    bukken
    id bukken_name chiiki_id address price_min price_max     station
    1 名駅MID    1 愛知県名古屋市中村区 40770000 55100000 名古屋駅
    2 プレサン浄心 2 愛知県名古屋市西区城西 30800000 40001000 浄心駅
    3 アネシア八事 3 愛知県名古屋市昭和区 50000000 62510000 八事日赤
    4 アメニ港明 4 愛知県名古屋市港区港明 25000000 35000000 港区役所駅
    5 ユーハウス上飯田 15 愛知県名古屋市北区 32000000 43330000 上飯田駅
    6 ローレル葵 6 愛知県名古屋市東区葵x 30000000 46000000 高岡駅
    7 ライオンズ2 愛知県名古屋市西区山木 35000000 55000000 上小田井駅
    8 ポレスター名西 2 愛知県名古屋市西区名西 28000000 38000000 浄心駅

    fudou_kodawari2

    fid kid
    1 1
    1 2
    1 3
    2 1
    3 2
    3 3
    3 4
    4 3
    5 4
    6 4
    7 1
    8 1
    8 2
    8 4

    このようなテーブルでSELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari2 WHERE kid IN (1,2,3)))と言うSQL文を入力すると

    id bukken_name chiiki_id address price_min price_max     station
    1 名駅MID    1 愛知県名古屋市中村区 40770000 55100000 名古屋駅
    2 プレサン浄心 2 愛知県名古屋市西区城西 30800000 40001000 浄心駅
    3 アネシア八事 3 愛知県名古屋市昭和区 50000000 62510000 八事日赤
    4 アメニ港明 4 愛知県名古屋市港区港明 25000000 35000000 港区役所駅
    7 ライオンズ2 愛知県名古屋市西区山木 35000000 55000000 上小田井駅
    8 ポレスター名西 2 愛知県名古屋市西区 28000000 38000000 浄心駅


    kidの条件 1の場合  fidが 1,2,7,8
    2の場合 fidが 1,3,8
    3の場合  fidが 1,3,4

    なので  1,2,3,4,7,8 という結果が表示されますが、1,2,3の全てに一致する条件しか表示できないようにする(結果が1になる)にはどのようなSQL文を入力すれば良いのでしょうか?

    続きを読む

  • 回答

    • 2014/9/27
    • JaneDue
    • ベストアンサー

    >今回はとにかく2テーブルで作ってみたいです。
    了解。ただし今後いろいろ機能追加しようとすると、どんどん辛くなってきますよ。覚悟。

    HAVING COUNT(*) = N の部分は、「kidの個数」が入ればよいので、
    count($_POST['kid']) で取得できます。
    その他どんな関数があるのか目を通しておくとよいです。
    http://jp2.php.net/manual/ja/ref.array.php

    kidが1個しかない場合でも動きますが、本来は WHERE kid = X だけにして、 fid毎にまとめるGROUP BY ~や、集計するHAVING COUNT~は不要です。
    余力があれば1個の時を分岐させてみて下さい。

    続きを読む

  • 締切済

    質問MySQLの質問です。2

    • 2014/7/16
    • sinto58167

    お世話になります。
    以前質問させていただいたのですがごちゃごちゃになってしまったので項目など見直してもっと単純な作りにしたいと思います。
    MySQLを使ったWEBアプリを作っているのですが、特にこだわりのcheckboxと地域のcheckboxで分けてフォームからPHPのプログラムで受けて展開させる方法がわかりません。

    どなたかご教授いただけたらと思っております。

    テーブルに関しては賛否両論ですが、まずは3つでやってみたいと思います。
    1つのほうが簡単そうなのですが、せっかく作ったので。

    SQL文の間違いなのはわかっているのですがどうしてもわかりません。
    何卒よろしくお願い致します。

    下記のようなフォームにしたいと思っております。
    <h1>マンション物件の条件検索</h1>

    <form name="search_form" action="mansion.php" method="post" >
    <input type="hidden" name="cmd" value="search" />
    <table>

    <tr>
    <th>価格帯</th>
    <td>
    <select name="price_min">
    <option value="1" selected="selected">下限なし</option>
    <option value="10000000">1000万</option>
    <option value="15000000">1500万</option>

    </select> ~
    <select name="price_max">
    <option value="999999999999" selected="selected">上限なし</option>
    <option value="10000000">1000万</option>

    </select>
    </td>
    </tr>
    <tr>
    <th>愛知県 - 名古屋市</th>

    <td>
    <td>
    <input type="checkbox" name="chiiki_id[]" value="1" <?php if( $_REQUEST["chiiki_id"] == "1" ){ print( 'checked' ); } ?>/>
    中村区
    <input type="checkbox" name="chiiki_id[]" value="2" <?php if( $_REQUEST["chiiki_id"] == "2" ){ print( 'checked' ); } ?>/>
    西区

    </tr>

    <tr>
    <th>愛知県 - その他の地域</th>

    <td>
    <input type="checkbox" name="chiiki_id[]" value="1" <?php if( $_REQUEST["chiiki_id"] == "1" ){ print( 'checked' ); } ?>/>
    尾張
    <input type="checkbox" name="chiiki_id[]" value="2" <?php if( $_REQUEST["chiiki_id"] == "2" ){ print( 'checked' ); } ?>/>
    三河

    </td>
    </tr>
    <th>こだわり条件</th>

    <td>
    <input type="checkbox" name="kid[]" value="1" <?php if( $_REQUEST["kid"] == "1" ){ print( 'checked' ); } ?>/>
    新築
    <input type="checkbox" name="kid[]" value="2" <?php if( $_REQUEST["kid"] == "2" ){ print( 'checked' ); } ?>/>
    南向き
    <input type="checkbox" name="kid[]" value="3" <?php if( $_REQUEST["kid"] == "3" ){ print( 'checked' ); } ?>/>
    セキュリティ充実

    </td>
    </tr>

    </table>
    <input type="submit" value="検索" class="Btn-gray button">
    </form>

    <p>&nbsp;</p>

    <?php
    //初期設定
    //username,$password,$dbnameは適当に

    if( $_REQUEST["cmd"] == "search" ){


    $dsn = 'mysql:host=localhost;dbname=fudousan';
    $username = 'xxxxx';
    $password = 'xxxxxxx';
    $data=array();

    $sql = "SELECT t1.* FROM bukken as t1 ";

    $flag=true;


    //kid絞り込み
    if(isset($_REQUEST["kid"]) and is_array($_REQUEST["kid"])){
    $sql.="INNER JOIN (SELECT DISTINCT fid FROM fdou_kodawari WHERE kid in (";
    $sql.=implode(",",array_fill(0,count($_REQUEST["kid"]), '?'));
    $sql.=")) as t2 ON t1.id=t2.fid ";
    $data=array_merge($data,$_REQUEST["kid"]);
    $flag=false;
    }

    //WHERE句作成
    $sql.= "WHERE 1 ";


    //名古屋の地域checkbox


    $sql = "SELECT t1.* FROM bukken as t1 ";

    if(isset($_REQUEST["chiiki_id"]) and is_array($_REQUEST["chiiki_id"])){
    $sql.="INNER JOIN (SELECT DISTINCT chiid FROM chiiki WHERE chiiki_id in (";
    $sql.=implode(",",array_fill(0,count($_REQUEST["chiiki_id"]), '?'));
    $sql.=")) as t2 ON t1.id=t2.chiid ";
    $data=array_merge($data,$_REQUEST["chiiki_id"]);
    $flag=false;
    }

    //WHERE句作成
    $sql.= "WHERE 1 ";



    //価格絞り込み
    if(isset($_REQUEST["price_min"]) and $_REQUEST["price_min"]!==""){
    $price_min=str_replace(",","",$_REQUEST["price_min"]);
    }else{
    $price_min=0;
    }
    if(isset($_REQUEST["price_max"]) and $_REQUEST["price_max"]!==""){
    $price_max=str_replace(",","",$_REQUEST["price_max"]);
    }else{
    $price_max=100000000;
    }
    if(isset($_REQUEST["price_min"]) or isset($_REQUEST["price_max"])){
    $sql.="AND price_min BETWEEN ? AND ? ";
    array_push($data,$price_min,$price_max);
    $flag=false;
    }


    //実行
    $pdo = new PDO($dsn,$username,$password);
    $stmt = $pdo->prepare($sql);
    $stmt->execute($data);

    $rows=array(

    以下省略

    使っている3つのテーブルです。

    bukken

    id、 bukken_name、 address 、price_min、 price_max、 station
    1 名駅MID 愛知県名古屋市中村区 40770000、 55100000 名古屋駅
    2 プレサン浄心 愛知県名古屋市西区 30800000、 40001000 浄心駅
    3 アネシア八事 愛知県名古屋市昭和区50000000、 62510000 八事日赤
    4 アメニ港明 愛知県名古屋市港区 25000000、 35000000 港区役所駅
    5 ユーハウ上飯田 愛知県名古屋市北区 32000000、 43330000 上飯田駅
    6 ローレル葵 愛知県名古屋市東区 30000000、 46000000 高岳駅
    7 ライオンズ上小田井 愛知県名古屋市西区 35000000、 55000000 上小田井駅
    8 ポレスターセントラル名西 愛知県名古屋市西区 28000000、 38000000 浄心駅


    chiikiテーブル

    chiid chiiki_id
    1 1
    2 2
    3 3
    4 4
    5 15
    6 6
    7 2

    fudou_kodawariテーブル

    fid kid
    1 1
    1 2
    1 3

    続きを読む

  • 回答

    • 2014/7/28
    • yambejp

    >ところでこのSQL文をtest.phpに組み込むのでしょうか?

    >そしてどのように組み込んだらよいのでしょうか?

    プログラムとデザインを分けるようにお伝えしましたが
    SQLとプログラムも分けて考えてください。

    まずはSQL文が動作することを確認する必要があります。
    PHPとMySQLを利用しているということはphpMyAdminは運用していますよね?
    もししていないようでしたらマストなツールなのでインストールをお勧めします。

    なお最終的にはtest.phpで提案したphp相当のものに組み込んで
    PDOで処理することになると思います。

    実際のところ#7,8の内容には絞り込みのデータが書いていないので、
    (「where 1」というのは全データを表示するという意味、これにANDで絞り込みの
    SQL文をつないでいきます)
    ユーザーから送られてきたデータをもとにどう絞り込みをしたいか仕様を固めてください

    続きを読む

  • 締切済

    質問名古屋市北区でパンク修理

    • 2011/4/28
    • matomato

    こんにちは。
    昨日、名古屋市北区の大曽根に引っ越してきました。
    自転車で買い物中に、何かを踏んだのか、自転車がパンクしてしまいました。

    徒歩圏内でパンク修理のできる店があれば教えていただきたく。
    ネットで検索しても実際行ったら休業中だったり…

    徒歩では若干厳しい距離でもこの際かまいませんw
    通勤も自転車ですので、今は自腹でバスに乗る毎日です。

    大変困っています。
    よろしくお願いします。

  • 回答

    • 2011/4/28
    • noname#149332
    • ベストアンサー

    バス代も大変ですよね。
    いくつか自転車屋さんがあるようですのでご参考ください(^^)
    お近くのところがあればよいですが。

    ■服部サイクル(052-711-3958)
    愛知県名古屋市東区矢田1丁目3-19

    ■水野自転車店(052-981-4113)
    愛知県名古屋市北区大曽根3丁目5-3

    ■若杉サイクル(052-981-2835)
    愛知県名古屋市北区平安1丁目3-10

    続きを読む

  • 締切済

    質問名古屋市北区城北病院・出産費

    • 2011/3/7
    • rantomama

    4月の頭に出産予定の初妊婦です。

    愛知県名古屋市北区の城北病院で出産予定なのですが、城北病院で出産された方に、色々お伺いしたいので、回答お願いしますm(__)m

    出産時、入院時のメリット、デメリットを教えてください。
    (こういう物を持って行ったら便利だった、これは必要なかった等)

    また普通分娩、そうでない方、時間外など、出産費はいくら程掛かりましたか?
    この間の検診で聞いたら40万前後。と微妙な回答だったので、もぉ少し詳しく知りたいです。
    (万が一、出産一時金?が足りないと困るので)

    回答頂けたら嬉しいです(*^_^*)
    よろしくお願いします。

    続きを読む

  • 回答

    • 2011/3/10
    • noname#129124

    2年前に城北で出産しました。
    一時金だけで、数万円のお釣りがきました(^^)v

    城北病院のお陰で、完母で育てられました。
    フリースタイルの出産もなかなか良かったですよ。
    因みに私は横向きで生みました。


    ペットボトルにつけれるストローは100均で買ってくるといいですよ。

    頑張ってくださいね!

    続きを読む

  • 締切済

    質問バイアイの子犬

    • 2011/1/21
    • kurodanuki

    バイアイの瞳の子犬を飼いたいと思っています。

    一応リスクがあることは知っています。

    どなたか小型犬でバイアイを譲ってくれるところをご存知ないですか?
    できましたら、犬種はチワワ、シーズー、シェルティーなどが
    希望ですが、その他の小型犬でも構いませんのでお教えください。
    よろしくお願いします。

  • 回答

    • 2011/2/17
    • rikorino2011

    昨日バイアイのポメラニアンを見ました。

    毛色も変わっていて豹柄(レッドマール?!)変わった色目で
    大きさも極小でとても珍しく見入ってしまいました。

    今3か月ぐらいでポメラニアンなのにチワワでも極小犬ぐらいの大きさでもう一回り
    大きくなるかならないか、なのにムチムチでとても元気が良く
    人馴れしていておとなしくとても飼いやすそうな犬でした。


    今現在売約済なのですが(ネットでは商談中)買い手の方が何日か連絡取れないので
    もうそろそろ店頭販売するそうです。
    お値段もキャンセル犬なので5万か6万位でかなぁ~と言ってました。

    格安では無いですか(^^)

    私が飼いたいのですが私はチワワを飼っていてもう一匹飼うのは家族に反対され断念しました。

    参照URLで検索して子犬番号8184で検索して見て下さい
    ネットで見るより実物はかなりのバイアイが綺麗に出てましたよ

    愛知県名古屋市北区 
    ワンラブ クロスタウン店

    参考URL:http://www.pet-onelove.com

    続きを読む

  • 締切済

    質問名古屋市内の2ストロークバイクに強いお店

    • 2008/9/29
    • p-chanp--

    こん**は。

    私は名古屋市港区に住んでおります。

    最近は2ストも減少の傾向にあって、お店でも「2ストお断り」って言うところがあるみたいですね。

    今度2ストのバイクを買う予定なんですが、私の住んでる住所近くで、2ストに強い・良いお店がありましたらどうか教えてください。
    もしなければ名古屋市内でもかまいません。なるべく住まいの近くが良いので。

    よろしくお願いします。

  • 回答

    • 2008/9/29
    • koketa58

    聞くだけ聞いてみてください。

    北区 ガレージワタナベ
    愛知県名古屋市北区如意4丁目150