クリックしたリンク文字を含むデータを表示させる

このQ&Aのポイント
  • php+Mysqlでサイトを作っています。クリックしたリンク文字を含むデータを表示させる方法を教えてください。
  • ファイル1には名前1、名前2、名前3のリンクがあります。これらの名前をクリックした時に、ファイル2でデータを表示させたいです。
  • ファイル2には、名前1に対応するデータを表示する処理が書かれています。セッションを使えば実現できるのでしょうか?
回答を見る
  • ベストアンサー

クリックしたリンク文字を含むデータを表示させる

php+Mysqlでサイトを作っています。 例えば、こんなページがあったとします。 ファイル1 (a href="ファイル2.html")名前1(/a) (a href="ファイル2.html")名前2(/a) (a href="ファイル2.html")名前3(/a) この名前をクリックしたときに、名前=とび先のページで使う引数 としたいと思っています。 とび先のページには以下のような記述があり、前のページの名前部分を引き継いでデータを表示させる予定です。 ファイル2 $my_Row = mysql_query("SELECT * FROM student WHERE name IN ('名前1')",$my_Con); while($row = mysql_fetch_array($my_Row)){ echo "■名前-----------------<br />"; echo mb_convert_encoding($row["name"],"SJIS","EUC-JP"); (略) セッションを使えば実現できるのでしょうか? どなたかご指導いただければ助かります。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

リンクテキストよりは、クエリにつけてしまったほうが簡単じゃないかと思います。 (a href="ファイル2.html?a=名前1")名前1(/a) (a href="ファイル2.html?a=名前2")名前2(/a) (a href="ファイル2.html?a=名前3")名前3(/a) こんなんですね。

ataru2
質問者

お礼

ご回答どうもありがとうございます。 その後いろいろ調べてみた結果、難しく考えるようなことはなく、mizunoさんがおっしゃられるようにクエリなどを利用する方法が一般的だと知りました。セッションのような方法はこういう場合とらないのですね。 初心者の質問に対し、ご丁寧にご回答いただきありがとうございました。

関連するQ&A

  • MySQLでデータ表示

    MySQLでデータの表示を行っています 10件ずつ表示し、11件からは2ページ目に表示したいです サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが 次の10件を押してもデータが変わらず1件目から10件目のままです どこが違うか教えてもらえますか。 どうコードを入力するか教えてくれたらありがたいです 一覧 ta2.phpです <html> <body> <form action = "ta2.php" method="GET"> <input type="hidden" name="page" value="0"> </form> <?php //データベースに接続 if (!$con = mysql_connect("localhost", "root", "admin")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("db_test", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select * from tbl_test" ; $sql.= " limit " . $page*10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> <th>操作</th> </tr>"; while($row = mysql_fetch_array($res)) { $ID = htmlspecialchars($row['番号']); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); echo "<tr> <td>$ID</td> <td>$NAME</td> <td>$ADDR</td> <td><a href='edit.php?番号=$ID'>修正</a> <a href='delete.php?番号=$ID'>削除</a></td></tr>"; header('content-type: text/html; charset="utf-8"'); if ($_GET) { // データがGETされていたら $page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得 } } $sql = "select count(*) from tbl_test " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page + 1, "ページ目を表示<br>" ; //前の10件 if ($page != 0) { echo "<a href = ta2.php?page= $page>" ; echo "&lt 前の10件" ; } //次の10件 if (($page + 1)*10 < $cnt) { echo "<a href = ta2.php?page= $page>" ; echo " 次の10件 " ; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </table> </body> </html>

    • ベストアンサー
    • MySQL
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • データベース データ表示方法

    ご教授いただきたくご投稿させていただきました。 現在phpにてページを作成しているのですが、初心者でわからないためご教授お願いします。 データベースに登録されているメンバー一覧表を作成しています。 コード以下です。 $uid = mysql_real_escape_string($_SESSION['uid'], $link); $query = sprintf("SELECT * FROM member WHERE id='%s' ",$uid); $query_list = sprintf("SELECT * FROM member WHERE 1 ORDER BY first_kana,last_kana"); $result = mysql_query($query, $link); $result_list = mysql_query($query_list, $link); $list = ''; while ($row = mysql_fetch_array($result_list)) { $list .= "<li><a href='".$row["id"].".php'>" . $row['first_name'] ." ". $row['last_name'] . "</a></li>\n"; } if ($result) { $row = mysql_fetch_array($result); if ($row) { $name = $row['first_name']." ".$row['last_name']; } } <html> <body> <?php print $name; ?>さんこんにちは <ul> <?php $list; ?> </ul> というコードをしています。 ここで、 <ul> <li><a href="">山田 一郎</a></li> <li><a href="">佐藤 二郎</a></li> <li><a href="">田中 三郎</a></li> </ul> と表示されるのですが、各名前のリンクをクリックしたときにクリックされた人のページを表示するにはどうしたらよろしいのでしょうか? 例 田中 三郎さんでログインしたときに 山田 一郎をクリックする そうすると別ページで山田 一郎さんの情報(データベースに登録されている)がページに表示される。 佐藤 二郎をクリックする こちらも同様に別ページで佐藤 二郎さんの情報(データベースに登録されている)がページに表示される。 今までは各一人ずつページを作成していたのですが、手間がかかるため一枚のページにクリックされた人の名前の情報を表示できるようにしたいと思っております。 お分かりになる方はご教授下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ラジオボタンをループすることができない。。。

    こんにちは。 PHPとMySQLを使って四択クイズのプログラムを作成しているのですが、どうもうまくいきません。 助言よろしくお願いします。 四択クイズのイメージとしては以下のとおりです。 問題1:パンはパンでも食べられないパンは? ○クリームパン ○食パン ○フライパン ○チーズパン [送信ボタン] ※選択肢の前の○はラジオボタンです。 一つのページに複数の問題を載せたいので、 上記の[送信ボタン]をのぞいた部分をループ処理したいと思っています。 問題文と選択肢は実行するファイルとは別のファイル、「mondai.sql」に記述してデータベースに読み込んでいます。↓ drop table form2; create table form2(id mediumint not null auto_increment, mondai varchar(500), sentaku1 varchar(100),sentaku2 varchar(100),sentaku3 varchar(100), sentaku4 varchar(100),primary key(id)); insert into form2 values('1', 'パンはパンでも食べられないパンは?', 'クリームパン', '食パン', 'フライパン', 'チーズパン'); そして実行するファイルの「form2.php」を下のように記述してみたのですが・・・ ・ ・ ・ //----------------------------------------- //サーバに接続 //----------------------------------------- $my_Con = mysql_connect("localhost","root","vertrigo"); if($my_Con == false){ die("MYSQLの接続に失敗しました。"); } //----------------------------------------- //データベースに接続 //----------------------------------------- if(!mysql_select_db("kihon",$my_Con)){ die("データベースの選択に失敗しました。"); } //----------------------------------------- //テーブルからデータを読む //----------------------------------------- $my_Row = mysql_query("select * from form2",$my_Con); if(!$my_Con){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo "<br>"; echo $row["mondai"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=1> <?php echo $row["sentaku1"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=2> <?php echo $row["sentaku2"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=3> <?php echo $row["sentaku3"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=4> <?php echo $row["sentaku4"]; echo "<br>"; } このままだとラジオボタンのnameが同じになってしまって全ての問題の選択肢から一つしか選べなくなってしまいました。 かといってnameをfor文でループさせることもできませんでした。 このプログラムにどのようにしてループを組み込めばいいかまったくわかりません。 長い質問で申し訳ないのですが、どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 分けたリンクないで更にデータを分けたい。

    echo '<strong> </strong><a href="a.php?id=' . $row['id'] . '">' . $row['name'] . '</a><br/>'; こうやると綺麗に会社ごとのid別にリンクが入ります。 例えばa.php?=nintendoというリンクをクリックしたらid,nintendoしか表示されないようにするには、どうしたら良いですか?? idをPOSTしようと思いましたが、フォームじゃないし、POSTできませんよね??

    • ベストアンサー
    • PHP
  • 動的サイトを作ってみたのですが、うまくデータベースからデータが取得できません。。。

    よろしくお願いいたします。 趣味でゲームソフトのデータベースを作っています。 MYSQLを使って動的にデータを表示させるサイトです。 http://www.game-minzoku.jp/meisai.php?titleid=5362 例えばこのようにパラメータをつけてページを展開しているのですが、 この『?title=****』の数字をアドレスバー上で変更してほかのページを表示させようとすると、 該当データがありません。 がと出てしまいます。 これがようやくGoogleにインデックスされ始めてきましたが、自然検索から入ってもこのようなことが起こってしまって困っています。 自分で調べてはみたものの、独学で進めているため、どうやって解決したらよいか分からず困っています。 どなたかお力添えいただけますと幸いです。 問題のページのソースはこちらです。(cssなどの不要と思われる個所はけしてありますが、もし足りない箇所あればおっしゃっていただけますと幸いです) ================================================================ <?php extract($_GET); mysql_connect('****','****','****'); mysql_select_db('****'); mysql_query("set character_set_client=utf8"); mysql_query("set character_set_connection=utf8"); mysql_query("set character_set_results=utf8"); $sql = "select * from game,genre,hanbai,kaihatsu,hard where game.genreid=genre.genreid and game.hardid=hard.hardid and game.hanbaiid=hanbai.hanbaiid and game.kaihatsuid=kaihatsu.kaihatsuid and game.titleid =" . $titleid; $result = mysql_query($sql); $rows = mysql_num_rows($result); $title_name_sql = "select title from game where titleid =" . $titleid ; $res = mysql_query($title_name_sql); $title_name = mysql_result($res,0); echo "<title>"; echo "$title_name | ゲーム民族</title>"; echo "</head><body>"; echo "<a href=index.php>ゲーム民族</a>"; echo "<h1><font size=2>ゲーム民族は"; echo "$title_name"; echo "の詳細を網羅したデータベースのサイトです</font></h1>"; echo "<p><a href=index.php>TOP</a> > $title_name</p>"; echo $title_name の基本情報; if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<a href=",$row["url"],">"; echo "<img src=",$row["img"]," alt=",$row["title"],">"; echo "</a>"; echo "<table border=1 height=40 cellpadding=2 cellspacing=2 width=800>"; echo "<tr><td>タイトル</td><td>"; echo $row["title"]; echo "</td></tr>"; echo "<tr><td>発売元</td><td>"; echo "<p><a href=\"maker.php?hanbaiid=",$row["hanbaiid"],"\">", $row["hanbai"] ,"</a></p>\n"; echo "</td></tr>"; echo "<tr><td>開発元</td><td>"; echo "<p><a href=\"developer.php?kaihatsuid=",$row["kaihatsuid"],"\">", $row["kaihatsu"] ,"</a></p>\n"; echo "</td></tr>"; echo "<tr><td>機種</td><td>"; echo $row["hard"]; echo "</td></tr>"; echo "<tr><td>発売日</td><td>"; echo $row["hatsubai"]; echo "</td></tr>"; echo "<tr><td>ジャンル</td><td>"; echo "<p><a href=\"genre.php?genreid=",$row["genreid"],"\">", $row["genre"] ,"</a></p>\n"; echo "</td></tr>"; $sql2= "select * from game,title_creater,creater,roll where game.titleid=title_creater.titleid and title_creater.createrid=creater.createrid and title_creater.rollid=roll.rollid and game.titleid = " . $row["titleid"]; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); while($row2 = mysql_fetch_array($result2)){ echo "<tr><td>クリエーター</td><td>"; echo $row2["creater"]; echo $row2["roll"]; echo "</td></tr>"; } } } ?> </body></html> ================================================================ 本当に見にくい意味不明のソースで申し訳ありませんが、よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • mysql>PHPにデータ表示、10件ごとにページ分割

    はじめまして、PHP勉強中の初心者です。。 MYSQLから取り出したデータを件数でページ分割したいのですが、 うまくきません。。 環境:eclipse3.5、mysql5.0、php5.0、xampp (phpで、sql接続、select * from でデータは表示は確認できてます)。。 ソースは↓です。。(初心者なもので不備がればすみません)。。 eclipse上では if (($page_num+1)*10<$cnt) {}でエラーで表示されます。。 どなたかご存知の方いましたら、教えていただけないでしょうか? <!--kensaku.html--> <html> <body> <form action ="kensaku.php" method="post">    名前:<input type="text" name="nm">    年齢:<input type="hidden" name="page_num" value="0">    <input type="submit" name="exec" value="検索"> </form> </body> </html> //kensaku.php ソース <html> <body> <? $nm=$_POST['nm']; $page_num=$_POST['page_num']; //データベースに接続 if (!$conn =mysql_connect("","user","PASS")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("table", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select id,name from table " ; $sql.= "where name like '%$nm% ' order by id " ; $sql.="limit" . $page_num * 10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border=1>" ; echo "<tr><td>id</td><td>name</td></tr>" ; while($row = mysql_fetch_array($res)){ echo "<tr>" ; echo "<td>" . $row["id"] . "</td>" ; echo "<td>" . $row["name"] . "</td>" ; echo "</tr>" ; } echo "</table>" ; //検索条件に該当する全データの件数取得 $sql = "select count(*) from member " ; $sql.="where name like '% $nm % ' order by id " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page_num + 1, "ページ目を表示<br>"; //前の10件 if ($page_num !=0) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num -1..">"; echo "&lt 前の10件"; } //次の10件.--ここからエラー行ですが、、解決策がわかりません。。 if (($page_num+1)*10<$cnt) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num +1..">"; echo " 次の10件 &g</a>t"; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </body> </html> すみませんが、ご存知の方いましたら、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysql_queryで日本語文字列が文字化け

    phpのmysql_queryでデータベースから日本語文字列を取得すると それが全て?マークになってしまいます。半角英数字はちゃんと表示されます。 日本語文字列もちゃんと表示させるための解決方法を教えて頂けないでしょうか。 Apache/2.4.1 (Win32) PHP/5.2.17 MySQL Server 5.0 Client API version 5.0.51a localhostとして使用しています。 文字コードはphpがutf-8です。 データベースは、utf8_general_ci Variable_name(Value) --------------------- character_set_client(utf8) character_set_connection(utf8) character_set_database(utf8) character_set_filesystem(binary) character_set_results(utf8) character_set_server(utf8) character_set_system(utf8) cookingデータベースのfriendsテーブルの中身 ----------------------------------------------------- no(主キー) | name  |  birth  |  email 0       test   1986-06-10  mail1 1       るん   2000-01-27  mail2 3       まこ   1987-03-30  mail3 4       春風   1998-06-08  mail4 5       まめ   1990-11-11  mail5 6       かおりん 1999-07-03  mail6 ----------------------------------------------------- 下記コードを実行すると、 0test1986-06-10mail1 1??2000-01-27bbbb@mail2 3??1987-03-30cccc@mail3 4??1998-06-08dddd@mail4 5??1990-11-11eeee@mail5 6????1999-07-03mail6 のようにブラウザに表示されてしまいます。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php //-------------------------------- // ■ サーバに接続 //-------------------------------- $my_Con = mysql_connect("localhost","root","pw"); if($my_Con == false){ die("接続に失敗しました。"); } //-------------------------------- // ■ データベースに接続 //-------------------------------- if(!mysql_select_db("cooking",$my_Con)){ die("cookingデータベースの選択に失敗しました。"); } //-------------------------------- // ■ テーブルからのデータを読む //-------------------------------- $my_Row = mysql_query("SELECT * FROM friends",$my_Con); if(!$my_Row){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row[no]; //番号 echo $row[name]; //名前 echo $row[birth]; //誕生日 echo $row[email]; //メールアドレス echo "<br />"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 検索結果それぞれにリンク

    echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; と書けば 株式会社日産 田中商店 株式会社オシイ不動産 とかでます。 echo '<strong>会社名:</strong> <a href="a.html">' . $row['name'] . '</a><br />'; と書けばリンクは貼れますが当然全てa.htmlへのリンクです。それぞれリンク先を分けるには、どうすれば良いですか??

    • ベストアンサー
    • PHP
  • 文字設定に関して

    教えて下さい。 自身の環境の文字設定が把握できておらず申し訳ありません。 以下のようにSQLを投げ、取得したデータを表示させようとしていますが、取得はできている ものの $tmp_kenmei を表示させようとしたところ、表示されません。 echo で中身を確認した際には、問題なくセットされていました。 また、where句で条件を指定しない場合は、問題なく取得できます。 文字設定か何かの問題かと思われますが、、、 何が原因でしょうか、、、教えて下さい。 よろしくお願いします。 《内容》 $tmp_kenmei = mb_convert_encoding($tmp_kenmei,"UTF-8","SJIS"); $con = mysql_connect("localhost", "root", "999999"); //データベースへ接続する if (!$con) { die('接続できませんでした: ' . mysql_error()); } $sql = "select kenmei from tbl_AAA where kenmei like '%" . $tmp_kenmei . "%'"; if (!mysql_select_db('db', $con)) { echo 'Could not select database'; exit; } $result = mysql_query($sql,$con); mysql_query("set names sjis"); if (!$result) { echo "DB Error, could not query the database\n"; echo 'MySQL Error: ' . mysql_error(); exit; } $row = mysql_num_rows($result); $count = 1; for($i=0;$i<$row;$i++) { $array = mysql_fetch_array($result); //件名 $tmp_kenmei[$count] = mb_convert_encoding($array[0],"SJIS","UTF-8"); echo mb_convert_encoding($array[0],"SJIS","UTF-8"); $count++; }

    • ベストアンサー
    • PHP