• 締切済み

mysql と php で、2テーブル結合の検索!

mysql と php を勉強しはじめで、解からないので、どなたか教えてください! 2テーブルあります。( 例 ’name’ と ’jusyo’ テーブルです。) ’name’テーブルは、NO int、IC_NO char(5)、NAME char(18)、 ・・・・・です。 ’jusyo’テーブルは、NO int、NAME_KANA char(30)、TEL char(6)、JUSYO char(50)、 ・・・・です。 この2テーブルを、《NO int、》で、左結合(レフトジョイン)させます。 テキスト入力フィールド、があり、検索ボタンで検索させようと思っています。 テキスト入力フィールドには、IC_NO を入力し、’jusyo’テーブルの、NAME_KANA TEL JUSYO・・・ を表示させたいと思っています。 <?php extract($_POST); echo " <form action=\"kensaku2.php\" method=\"post\" > <p>検索番号 : <input type=\"text\" name=\"nam\" value=\"$nam\" size=\"10\">   <input type=\"submit\" value=\"検索\"></p>\n </form> "; if($nam<>''){ mysql_connect('localhost','root','******'); mysql_select_db('データベース名'); $sql= "select * from name left join jusho on NO=NO"; $sql= "select * from name where IC_NO like '%$nam%'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; } else { while($row = mysql_fetch_array($result)){ echo "詳細情報"; echo "<br />\n"; echo "<br />\n"; echo "インター名 : "; echo $row["NAME_KANA"]; echo "     "; echo "<p>";               ↓ としてますが、NAME_KANAが表示されません、どこが間違っていますか? 考え方がおかしいのでしょうか?

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5083/13282)
回答No.2

select * from name left join jusyo on name.NO = jusyo.NO where name.IC_NO like '%$nam%' ではどうでしょう。 手元にすぐ使える mysql の環境が無いので未検証ですのでご了承ください。 どちらかというとSQLの基礎の部分で躓かれているようですので、プログラムで実行する前にphpMyAdmin等でSQLを実行して、希望するデータが取得できるか確認することをお勧めします。

  • t_ohta
  • ベストアンサー率38% (5083/13282)
回答No.1

$sql= "select * from name left join jusho on NO=NO"; $sql= "select * from name where IC_NO like '%$nam%'"; では無く $sql= "select * from name left join jusho on NO=NO where name.IC_NO like '%$nam%'"; としましょう。 同じ変数名に2回文字列を代入すると、後から入れた方で上書かれてしまいます。 そのため、実際に実行されているSQLは  $sql= "select * from name where IC_NO like '%$nam%'"; だけでしたので、欲しい情報が取得できていませんでした。

raccoon_7
質問者

補足

申し訳ありません、質問者です。 $sql= "select * from name left join jusyo on NO=NO where name.IC_NO like '%$nam%'"; としましたが Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\documents and settings\ユーザー名\my documents\mysite\kensaku8.php on line 20 のエラー表示です。 その行の2行下の $rows = mysql_num_rows($result); でエラーです。 ’ name ’で、「主キー」の設定をしておりませんが、よいでしょうか?

関連するQ&A

  • MYSQL、PHPを使ってのデータとそのデータ数表示について

    よろしくお願いいたします。 このようなテーブルを組んでいます。  game        maker  マリオ      任天堂  カービィ     任天堂  FF        スクエニ   ドラクエ     スクエニ  ソニック     セガ このテーブルを使って、  任天堂(2)  スクエニ(3)  セガ(1) というように、メーカーが作ったゲームの数がカッコ内ででるように、makerを並べたいと思っています。 これはどのように組んだらよいのでしょうか? ちなみに、今はこのように組んで、(もちろんですが)失敗しています。。 ---------------------------------------------------------------- <?php mysql_connect('***','***','***'); mysql_select_db('***'); $sql = "select * from test"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo $row["maker"]; echo "<br />"; } } ?> ---------------------------------------------------------------- 初歩的な質問で大変恐縮ですが、よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • 検索結果を出すためには?(phpとmysql利用で)

    ある画像を押したら、検索結果が出る方法がわかりません。 たとえば、「A」「B」「C」の画像を作成しておき、「A」の画像を押したときにMYSQLで作成したデータベースの中から「A」だけ出す方法がわかりません。(画像からリンクする方法はわかります) 「A」という画像を押すと「akekka.php」を出すように作成したのですが、できません。知恵を貸してください。 <?php $sql= "select * from jyusyo where fuk = '愛媛県'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; exit; } else { echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<th>詳細</th>\n"; echo "<th>登録日<br></th>\n"; echo "<th>府県名<br></th>\n"; echo "<th>住所<br></th>\n"; echo "<th>名前</th>\n"; echo "</tr>\n"; while($row = mysql_fetch_array($result)){ $id = $row["id"]; echo "<tr>"; echo "<a href=\"meisai.php?id=$id\">",$id,"</a>\n"; echo "</td><td>"; echo $row["sho"]; echo "</td><td>"; echo $row["day"]; echo "</td><td>"; echo $row["fuk"]; echo "</td><td>"; echo $row["jyu"]; echo "</td><td>"; echo $row["nam"]; echo "</td></tr>"; } echo "</table>\n"; } ?>

  • PHP&MySQLデータ削除のスクリプトについて

    はじめまして。 PHP、MySQL始めたばかりの初心者です。 この度、自力で解決出来なく、質問させて頂く事にしました。 現在、MySQL入門以前という参考書を見ながらデータベースを作っていました。削除スクリプトで、どうしても躓いておりまして何が原因が分からずじまいです。下記が呼び出しスクリプトです --------------------------ここから--------------------------- <?php extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $ukid=$row["id"]; echo "<center> <a href=\"j_sakujo1.php?i=$ukid\"><img src=\"sakujobutton.gif\" alt=\"削除ボタン\" border=0></a>  <a href=\"correct.php?i=$ukid\"><img src=\"shuseibutton.gif\" alt=\"修正ボタン\" border=0></a>  </center>"; } } ?> --------------------------ここまで--------------------------- そして削除スクリプトです --------------------------ここから--------------------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //MySQLレコード削除 if($kakunin=="確認"){ $sql = "delete from xxxxx where id = '{$id}'"; mysql_query($sql); echo "レコードの削除が完了しました"; exit; } //削除確認のためのフォーム $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else{ while($row = mysql_fetch_array($result)){ echo "<p>このレコードを削除します。</p>"; echo "<form action = \"j_sakujo1.php\" method = \"post\">"; echo "<p>登録日:"; echo $row["tourokubi"]; echo "</p>"; echo "<p>タイトル:"; echo $row["title"]; echo "</p>"; echo "<p>本文:"; echo $row["honbun"]; echo "</p>"; echo "<p>キーワード:"; echo $row["keyword"]; echo "</p>"; echo "<input type = \"hidden\" name = \"ren\" value =\""; echo $row["renban"]; echo "\">"; echo "<p><input type=\"submit\" name=\"kakunin\" value=\"確認\">"; echo "<input type=\"reset\" value=\"リセット\"></p>"; echo "</form>"; } } ?> --------------------------ここまで--------------------------- これで削除ボタンを押すと「該当データがありません。」だけ表示され 登録してあるデータがまったく表示されません。 どこで間違ったのか、どうかご指南お願い致します。

  • PHPとMySQLで作ったプログラムについて

    PHP(Ver.5.2.5)とMySQL(Ver.5.0.45)で住所録プログラムを作りました。住所は登録できるのですが、PHPで住所録を表示すると新規登録分が表示されません。住所録登録プログラムではmysql_close文でDBをちゃんと終了しています。コマンドラインクライアントのselect*from文では新規登録分が1回でちゃんと表示されることと、住所録表示プログラムでブラウザーの更新ボタンをクリックすると新規登録分が表示されることから、住所録表示プログラムがおかしいのではないかと思い、いろいろ試したのですが、変わりません。住所録表示プログラムのスクリプトの一部を以下に示します。 <?php mysql_connect('localhost','root'); *rootパスワードは設定していません。 mysql_select_db('lesson'); $sql = 'select * from jushoroku'; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; }else{ while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo ・・・ } } ?> 新規登録分を1回で表示するにはどこを直せば良いのでしょうか。どなたか教えてください。

    • ベストアンサー
    • PHP
  • mysqlデータベースの表示のさせ方

    超初歩的な質問ですいません。。独学でやっているもので、頼る人もいないうえに、どういう勉強をしたらよいのか分からなかったので質問しました。 データベースを作って、それを出力する際に、htmlのデーブルの中に値を入れたいと思っています。 --------------------------------------------------------------- $sql= "select * from テーブル"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kashu"];               echo $row["hurigana"]; echo "</p><hr />"; } } ?> ---------------------------------------------------------------- いろいろなウェブサイトの見よう見まねでここまではできました。 今の状態で表示すると、 サザンオールスターズ さざんおーるすたーず というように並ぶのですが、これを、 +----------+---------------------+ | 歌手      |サザンオールスターズ   | +----------+---------------------+ | ふりがな   |さざんおーるすたーず   | +----------+---------------------+ という感じに、htmlのテーブルに入れて表示させるには、どのように表記すればよいのでしょうか?? また、こういったデータベースの値を表示させるようなことを初心者向けに解説している本などもしご存知でしたら教えていただけると恐縮です(こちらはご存じでしたらでいいです)。

    • ベストアンサー
    • MySQL
  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。

  • MySQL+PHPでキーワード検索をもとに五十音検索を作りたいです

    キーワード検索のソースを元に五十音検索を作りたいです。 キーワード検索のソースを元に五十音検索を作りたいのですが、”あ”という文字を押したら”あ”の頭文字の一覧が出るようにするにはどうしたらいいでしょうか。 キーワード検索ではすでにキーワードを入れたら検索結果の一覧が出るようになっています。 以下が必要そうなコードの抜粋です。 <?php //抽出条件を組み立てる $array = explode(" ", $keyword); $cnt = count($array); $where = "WHERE "; for($i=0; $i < $cnt; $i++){ $where.= "koji OR kana LIKE '%".$array[$i]."%'"; if($i < $cnt-1){ $where .=" ".$searchSelect." "; } } // クエリを送信する $sql = "SELECT * FROM sampletable ".$where; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row[no]."</td><td><A href='result2.php?koji=$row[koji]' target='_blank'>".$row[koji]."</A></td><td>".$row[kana]."</td>"; $tempHtml .= "</tr>\n"; } $msg = $rows."件のデータがあります。"; }else{ $msg = "データがありません。"; } ?> <h3>キーワード検索</h3> 故事成語用検索フォーム(複合語検索ができます) <form name="form2" action="search2.php" method="post"> <input type="text" name="keyword" size="25"> <input type="submit" name="search2" value="検索"><br /> </form>

    • 締切済み
    • PHP
  • チェックボックス + フリーワード検索 PHP&MYSQL

    現在検索画面の作成をしているのですが、分からないことがありましたので 質問をさせて頂きました。 検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php) 仕様としてはkensaku.phpにチェックボックス(複数選択可)と フリーワードがあり、一つの検索ボタンで検索し結果をresult.phpに表示させようと思っております。データベースはMYSQLです。 検索ボタンが一つしかないため、もしチェックボックスが選択されず、フリーワードだけ入力されたのであれば、それだけで検索。その逆のもし チェックボックスだけ選択されたのであればそれだけで検索。 また両方入力されたのであれば、両方のデータを検索できるように したいと思っております。 フリーワード検索までは出来るようになったのですが、 チェックボックス検索(両方検索・片方のみ検索)などが どうしても出来ません。 どなたかご存知の方ご教授して頂けないでしょうか。 宜しくお願い致します。 こちらがコードになります。 1,kensaku.php <form action="result.php" method="POST" > <table class="font12" cellpadding="5" cellspacing="10" width="430" align="center"> <tr> <td> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="1" />aaa</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="2" />bbb</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="3" />ccc</span><br /> </td> </tr> <tr> <td><input type="text" name="sejyutu_else" value="フリーワード検索" size="30" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="検索する" /></td> 2, result.php <?php $sejyutu = $_POST["sejyutu"]; $sejyutu_else = $_POST["sejyutu_else"]; if($sejyutu and sejyutu_else<>''){ //DB接続・選択 if (!$int_connect = @mysql_connect('localhost','aaa','aaaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } $sql = "select * from table where sejyutu_else like'%$sejyutu_else%'"; $result=mysql_query($sql,$int_connect); $rows=mysql_num_rows($result); ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <?php while($row = mysql_fetch_array($result)){ ?> <tr> <td colspan="2"><p class="salon_name"><?php echo $row["name"]; ?></p></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo $row["station"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo $row["address"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo $row["sejyutu"];?></td> </tr> <?php } } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • MYSQL、PHP. データが入っていない個所を非表示にする方法

    よろしくお願いいたします。 現在、MYSQLとPHPを使ってゲームのデータベースのサイトを作っています。 ゲームのキャラクターなどを登録してあるのですが、キャラクター登録のないゲームのページもあります。 そういうとき、キャラクターがあるときには、 例 ================================================================ FF7に登場するキャラクター ================================================================ ・クラウド ・セフィロス ・コルネオ ・・・ というように出して、データ登録がない場合は(ここでいうと帯ごと)表示させないようにするにはどのようにしたらよいのでしょうか? ifを使うというのは何となく予想しているのですが、実際どのように組んだらよいものかさっぱりわからずに。。 ちなみに、現在の僕のサイトの該当箇所はこのように組んであります。(少し簡略化させていただきました) echo "<h3><div id =midashi>$○○ に登場するキャラクター</div></h3>"; $sql= "select * from game; $result = mysql_query($sql); $rows = mysql_num_rows($result); while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row3["chara"]; echo "</p>"; } 何か説明が足りない個所などございましたらがんがんおっしゃってください。 よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • MYSQL→PHP→10件表示

    現在phpを勉強しているのですがどうしても分からないことがあり、 質問をさせて頂きました。 PHPとMYSQLを使い、プルダウンメニューから検索した結果を 10件表示をしていきたいのですが、どうしてもうまくいかず混乱しております。 どのなたかご存知の方、お伺いしても宜しいでしょうか? $PAGESIZE = 10; //ここにmysqlに接続するスクリプト extract($_REQUEST); if (!isset($page)) { $page = 1; } if(!empty($fld)) { //$fldに検索したい住所が入ってます。 $local = addslashes($fld); $where .= "add1 = '$fld' && "; } if(!empty($where)) { $where = substr($where, 0, -3); $where = "WHERE " . $where; } $sql = "select count(*) as cnt from ○○ ". $where; $rst = mysql_query($sql); $row = mysql_fetch_array($rst); $tcnt = $row["cnt"]; mysql_free_result($rst); $totalpage = ceil($tcnt / $PAGESIZE); $pagehead = "<B>$tcnt 件みつかりました。 " . "[" . ($PAGESIZE * ($page - 1) + 1) . "-"; if ($page < $totalpage) { $pagehead .= ($PAGESIZE * $page) . "] を表示</B>"; } else { $pagehead .= "$tcnt] を表示</B>"; } $sql = "select * from ○○ ". $where. " order by renban desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>登録データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo " "; echo $row["tourokubi"]; echo "<br />"; echo $row["people"]; echo " "; echo $row["add1"]; echo $row["add2"]; echo "-"; echo $row["sta"]; echo " "; echo $row["tel"]; echo $row["url"]; echo $row["sejitu"]; echo $row["pr"]; echo "</p><hr />"; } } ?> <?= $pagehead ?> <?php mysql_free_result($result); mysql_close; $param_local = rawurlencode($local); if ($page > 1) { $body .= "<A href = '$PHP_SELF?page=" . ($page - 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "前の $PAGESIZE 件</A>"; } if ($totalpage > 1 and $page < $totalpage) { $body .= "<A href = '$PHP_SELF?page=" . ($page + 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "次の $PAGESIZE 件</A>"; } ?> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう