MySQL+PHPで果物の名前で検索してリンク表示する方法

このQ&Aのポイント
  • MySQL+PHPで果物の名前で検索し、リンクを生成する方法について学習しています。
  • テーブル名「果物」には、果物の番号、名前、価格の情報が格納されています。
  • 名前のリンクをクリックすると、別の画面で名前と価格が表示される機能を作成したいと考えています。
回答を見る
  • ベストアンサー

検索結果にリンクを生成

お世話になります。 MySQL+PHPでのプログラム勉強中です。 テーブル名:果物 code name price 1  りんご  200 2  みかん  100  3  ぶどう  400 このようなデータベースで、名前の検索をして 番号と名前を表示させるのですが、名前がリンクになっており 名前のリンクをクリックすると、別画面で名前と価格を表示 するようなものを作成したいとおもってます。 $sql = "SELECT * FROM 果物 WHERE name LIKE '$tmp_name%'";  $result = mysql_query($sql,$db); $num = mysql_num_rows($result); //$tmp_title = null; $i = 0; for ($i;$i < $num;$i++) { $row1 = mysql_fetch_row($result); $com_cord = $row1[0]; $com_name = $row1[1]; ここからの表示方法がわかりません。 よろしくお願い致します。

  • MySQL
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.1

こんな感じかな。 レコード数分のループはせずに、「データがある間繰り返す」みたいな方法です。 フェッチは項目名で参照した方がわかりやすいと思います。 $sql = "SELECT * FROM 果物 WHERE name LIKE '%$tmp_name%'"; $result = mysql_query($sql,$db); while ($row = mysql_fetch_assoc($result)){ $name = urlencode($row["name"]); echo "<a href=\"kudamono_sub.php?name=".$name."&price=".$row["price"]."\" target=\"_blank\">"; echo $row["name"]; echo "</a><br>"; } ここでは、表示される別画面を「kudamono_sub.php」と言う名前で作成しています。 送られた情報を表示するだけですので、簡易的なものですが、必要に応じて改良してください。 以下 kudamono_sub.php の内容です。 ---- <html> <body> 名前:<?=$_GET["name"]?><br> 価格:<?=$_GET["price"]?>円<br> </body> </html> ----

関連するQ&A

  • sqlの検索結果件数は出るのですがwarningが出てしまいます

    緊急に直さなければならないのですが、私の知識では万策尽き、とても困っています。 環境はRedHat7.3でmysqlコマンドをPHPから実行しています。 複数のレコードをselect文で検索した後に、それぞれのフィールドの’A'の個数を求めるのが目的です。しかし、ひとつのレコードに、ware_name1、ware_name2、ware_name3 ・・・・・・・・ ware_name100 というフィールドが100も有り、それぞれが’A'を持つ可能性があるので、フィールド名最終部の数字部分を変数$iとし、1++で変えることにより、ループで処理をしています。 計算結果自体は、正解なのですが、どうしても下記のようなWarningメッセージが出てしまいます。 よろしくお願いします。 Warning: Supplied argument is not a valid MySQL result resource in ware_amount.php on line 7 1: $ware_amount = 0; 2: 3: for ($i=0; $i<100; $i++) { 4: $num_row = 0; 5: $sql = "select * from sales where ware_name$i = 'A'" ; 6: $result = mysql_query($sql, $con); 7: $num_row = mysql_num_rows($result); 8: 9: $ware_amount = $ware_amount + $num_row; 10: }

    • ベストアンサー
    • PHP
  • PHPでMySQLのデータを検索したい

    お世話になります。 PHPでMySQLのデータを検索したいと思い、 以下のようにしてみたのですがうまく表示されません。 -- $name = $_POST["name"]; $link = mysql_connect('localhost', '', ''); $db_selected = mysql_select_db('', $link); mysql_set_charset('utf8'); $sql = "SELECT * FROM search WHERE". $name; $result = mysql_query($sql); while($row = mysql_fetch_array($name)) { print $row['name']; } $close_flag = mysql_close($link); -- どう改善すればいいのでしょうか? 初心者の為、少々お見苦しい点があるかと思いますが どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlの検索結果からある範囲の行数を取り出すには

    mysqlの検索結果からある範囲の行数を取り出すにはどうすればいいのでしょうか?たとえば検索結果から100~200行の間の行数を取り出すには、   ・   ・ $count=1; $result=mysql_query($sql); $rows=mysql_num_rows($result); while ($row=mysql_fetch_array($result)) { ・・・・ if( $count <= 99 ){ $count++; continue;} として99行目まで読み飛ばす処理をする以外に方法がありますか。 もっと効率よく取り出す方法があったら教えてください。

    • ベストアンサー
    • PHP
  • 検索結果表示について

    こんにちは。お世話になっております。 あるテーブルからの検索結果をPHPにてブラウザ上に表示させる際のコードに関しての質問なのですが、これまで、検索したいレコードが1つである事を条件にした場合、以下のコードのどちらが適切なのでしょうか? if($rows==1){ while($row = mysql_fetch_array($result))   ・   ・ echo $row["id"]; または、 if($rows ==1){ $id = mysql_result($result, 0, "id"); echo $id; どちらもブラウザでは同じ結果が返ってくるかと思われますが、諸先輩方々からのアドバイスを頂ければと、投函させて頂きました。 お忙しい中恐縮ですが宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • データーベースの結果セットを分けて表示する方法について教えてください(PHP&MYSQL)

    PHP5.2.4 MYSQL14.12DistriB5.0.4 WINXP IE6.0 やりたいこと、結果セットを分けて表示したい。 20行の結果セットがあるとして、結果セットを表示するのに、10行を表示し、その後10行を表示すると言うように、結果セットを分けて表示する方法を教えてください。現在、下のように考えていますが、これでは、表示が、同じになってしまいます。$row=mysql_fetch_array($result);を使っているのがいけないのでしょうが、どう変更したらいいのかわかりません。宜しくお願いします。   for($i=1;$i<10;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }   for($i=11;$i<21;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }

    • ベストアンサー
    • PHP
  • for文で表示する画像を10件づつ読み込みたい

    データベースに格納した数100件の画像をphpで一覧表示する際に、 一気に読み込まないで10件づつ表示するという形を取ろうとしています。 最初に10件の画像を表示しておいて、 下部にある「もっと見る」のリンクをクリックしたら次の10件を表示する、という機能を 実装したいのですが、良い方法はないでしょうか? 全画像を表示した際のソース $sql .= "SELECT ~"; $result = mysql_query("{$sql}"); $num = mysql_num_rows($result); for($i = 0; $i < $num; $i++){ $arr = mysql_fetch_array($result); <img src="<?php echo $arr[img_path]; ?>" /> }

    • ベストアンサー
    • PHP
  • mySQLで結果が無いときの処理

    $sql = "select * from test "; $sql .= "where id='".$_POST["id"]."' and pwd='".$_POST["pwd"]."'"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { if($row){ $msg = "OK"; } } としていますが、NGのときってどういう風にしたらいいのでしょうか? 基本的なことですみませんが、教えてください。

    • ベストアンサー
    • PHP
  • 二つのテーブルの結合

    はじめまして。 複数のテーブルの扱いでいきずまっております。 taskには案件のデータが入ってます。 task_userにはそれに携わるユーザー名(一人でない)が入っています。 titleでソートして出力したい場合、どうしたらいいのでしょうか? 現状のままでは、task_userのnumでソートしています。 $sql = "select * from task_user where user_id ='3' order by num desc; $result = mysql_query($sql); while ($row = mysql_fetch_object($result)) { $task_id = $row->task_id; $sql_task = "select * from task where num ='" . $task_id . "'"; $result_task = mysql_query($sql_task); $row_task = mysql_fetch_object($result_task); $title = $row_task->title; } mySQL4.0を使っています。 できればバージョンをあげずに解決したいと思っています。 ご教授いただければ幸いです。

  • PHPでのデータ表示画面⇒CSV出力について

    先日より質問に対しコメントありがとうございます。 教えていただいた内容と自分でやった結果3つのSQLでデータを出力し出力順を揃えた方法で表ができました。 これをCSV形式で出力したいのですがこのまま出力できるのでしょうか?それとも別途方法をとる必要があるのでしょうか。 自分の中で今ひとつまとまらないので改めて質問させていただきます。 ソースへの指摘併せコメントよろしくお願いします。 ※現ソース <HTML> <BODY> <?PHP //DB接続部省略 $sql="SELECT I.ITEM_ID,I.ITEM_NAME FROM ITEMS AS I,LIST AS L・・・(略)"; $sql2="SELECT A.SHOP_ID,A.SHOP_NAME,A.ITEM_NAME, IF(L.ITEM_ID=A.ITEM_ID,'○','') FROM・・・(略)"; $sql3="SELECT S.SHOP_ID,S.SHOP_NAME FROM SHOP AS S ・・・(略)"; $rs=mysql_query($sql,$db); $rs2=mysql_query($sql2,$db); $rs3=mysql_query($sql3,$db); $line=mysql_num_rows($rs); $line2=mysql_num_rows($rs2); $line3=mysql_num_rows($rs3); print("<TABLE border=1>"); print("<TR>"); print("<TD>店舗名</TD>"); for($i=0;$i<$line;$i++) { $row=mysql_fetch_row($rs); print("<TD>".$row[1]."</TD>"); } print("</TR>"); print("<TR>"); for($i=0;$i<$line3;$i++) { $row3=mysql_fetch_row($rs3); print("<TD>".$row3[2]."</TD>"); for($j=0;$j<$line;$j++) { $row2=mysql_fetch_row($rs2); if($row2[3] == "") { print("<TD width=25> </TD>"); } else { print("<TD width=25>".$row2[3]."</TD>"); } } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($db); ?> </BODY> </HTNL>

    • ベストアンサー
    • PHP
  • PHPで同じページに似た内容のデータベースを表示

    PHPで同じページに同じデータベース(table)から別の条件でリストを表示させています。 もっと簡単でスマートな方法はないか、ご質問させていただきます。 【表示例】 <鈴木さん> 鈴木たろう 090-0000-0000 鈴木まさゆき 080-0000-0000 鈴木あきこ 03-0000-0000 <佐藤さん> 佐藤まさる 090-0000-0000 佐藤ともみ 080-0000-0000 佐藤けいこ 03-0000-0000 【PHP】 <?PHP $sql = "SELECT name, tel FROM table"; $sql .= " WHERE name LIKE '%鈴木%'"; $recordSet = mysql_query($sql); $rows = mysql_num_rows($recordSet); if($rows){ while($row = mysql_fetch_array($recordSet)) { $table .= "".$row['name'].""; $table .= " ".$row['tel']."<br>"; $table .= "\n"; } } echo "<鈴木さん><br>"; echo $table; mysql_free_result($recordSet); ?> <?PHP $sato_sql = "SELECT name, tel FROM table"; $sato_sql .= " WHERE name LIKE '%佐藤%'"; $sato_recordSet = mysql_query($sato_sql); $sato_rows = mysql_num_rows($sato_recordSet); if($sato_rows){ while($sato_row = mysql_fetch_array($sato_recordSet)) { $sato_table .= "".$sato_row['name'].""; $sato_table .= " ".$sato_row['tel']."<br>"; $sato_table .= "\n"; } } echo "<佐藤さん><br>"; echo $sato_table; mysql_free_result($sato_recordSet); ?> 上記のように、同じデータベース(table)から、 「鈴木さん」「佐藤さん」それぞれ条件を設定して表示していますが、 もっと簡単に短いコードで表示させることは可能でしょうか。 また、可能であれば、それを何と呼べば(検索すれば)宜しいのでしょうか。 お願い致します。

    • ベストアンサー
    • PHP