プログラム初心者です。現在PHP、データベースを勉強しています。
現在、入力フォームを作成して、phpからデータベース接続して検索結果を表示するところまではできたのですが、検索結果に動的にリンクを貼る方法がわかりません。
ーーーーーーーーーーーーーーーーーーーtop.htmlーーーーーーーーーーーーーーーーーーーーーーー
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TOP</title>
</head>
<body>
<form method="POST" action="search.php">
<h2>名前を検索する</h2>
<input type="text" name="key" size="40" maxlength="255">
<input id="submit_button" type="submit" name="submit" value="検索">
<input type="reset" value="クリア">
</form>
</body>
</html>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーsearch.phpーーーーーーーーーーーーーーーーーーー
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>検索結果</title>
</head>
<body>
<?php
$user = "user";
$pass = "pass";
$key = mb_convert_encoding($_POST["key"], "UTF-8", "auto");
$c = pg_connect("user={$user} password={$pass}");
$sql = "SELECT * FROM sample WHERE name LIKE '%{$key}%';";
$rs = pg_query($c, $sql);
$num = pg_num_rows($rs);
$html ="検索結果は{$num}件です<br><table border=\"1\"><tr><th>名前</th></tr>";
while($arr = pg_fetch_assoc($rs)){
foreach($arr as $i => $v) $arr[$i] = mb_convert_encoding($v, "UTF-8", "auto");
$html .="<tr><td>{$arr["name"]}</td></tr>";
}
$html .= "</table>";
echo($html);
pg_close($c);
?>
<br>
<a href="top.php">前のページへ戻る</a>
</body>
</html>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーデータベースの内容ーーーーーーーーーーーーーーーーーーーー
CREATE TABLE sample(id int PRIMARY KEY, name varchar, age int, gender varchar,);
1, '山田太郎', 20, '男'
2, '鈴木花子', 19, '女'
3, '田中次郎', 35, '男'
4, '山田花子', 30, '女'
5, '佐藤三郎', 65, '男'
・
・
・
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーsyousai01.phpーーーーーーーーーーーーーーーーーーーー
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>詳細</title>
</head>
<body>
<?php
$user = "user";
$pass = "pass";
$c = pg_connect("user={$user} password={$pass}");
$sql = "SELECT * FROM sample WHERE id = 1;"; //syousai04.phpならid=4に変える
$rs = pg_query($c, $sql);
while($arr = pg_fetch_assoc($rs)){
$id = $arr["id"];
$id = mb_convert_encoding($id, "UTF-8", "auto");
$name = $arr["name"];
$name = mb_convert_encoding($name, "UTF-8", "auto");
$age = $arr["age"];
$age = mb_convert_encoding($age, "UTF-8", "auto");
$gender = $arr["gender"];
$gender = mb_convert_encoding($gender, "UTF-8", "auto");
echo "<p>\n";
echo "<dl>\n";
echo "<bt>id</bt><dd>$id</dd>\n<br>";
echo "<bt>名前</bt><dd>$name</dd>\n<br>";
echo "<bt>年齢</bt><dd>$age</dd>\n<br>";
echo "<bt>性別</bt><dd>$gender</dd>\n<br>";
echo "</dl>\n";
echo "</p>\n";
}
pg_close($c);
?>
</body>
</html>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
search.phpでwhile文で回して検索結果をテーブルにして書き出しています(nameだけなのでテーブルにしなくてもいい?)。
例えば、ここで「山田」と検索すると検索結果画面は下のようになります。
検索結果は2件です
名前
山田太郎
山田花子
この検索結果に
山田太郎にはsyousai01.php
山田花子にはsyousai04.php
リンクを貼ることは可能でしょうか?
リンクを貼ることが可能でしたらどのようにプログラムを書き換えればいいのでしょうか?
回答お願いします。
No.2ベストアンサー
- 回答日時:
>リンクの貼り方がいまいちわかりません
ということでしたら単純に
>echo "<bt>名前</bt><dd>$name</dd>\n<br>";
echo "<dt>名前</dt><dd><a href=\"shousai.php?id={$id}\">{$name}</a></dd>\n";
のような処理で十分でしょう
おそらくタイポですが、dl内の要素はbtではなくdt、またdi内にbrは不要です。
(dd要素の中にはいるならともかく、まぁそれもよくないのですが・・・)
度々ご回答ありがとうございます。
リンクの件ですがご指摘ありがとうございます。
search.phpのGETの受け取りで少してこずってしまいお礼が遅れてしまいました。ですが、無事に検索結果にリンクを貼りsyousai.phpで詳細画面に飛ばすことができました!ありがとうございました。
No.1
- 回答日時:
idごとにファイル名を変えるのはあまりに非効率ですね
パラメータ渡しではいけないの?
「shousap.php?id=1」的な・・・
それと私自身あまりpostgreに興味がないので不正確かもしれませんが
PDOで処理したほうがよいのでは?
回答ありがとうございます。
パラメータ渡しの件について調べてみたところ、だいぶ非効率なやり方をしてたのがわかりました・・
<a>タグとphp?id=1..などとして、リンク先のsyousai.phpの受け取り処理加えればなんとかなりそうです
$id = $_GET['id'];
$sql = 'select * from sample where id = ' . $id;
のような処理にすればできそうではあるのですが、リンクの貼り方がいまいちわかりませんでした。
ですが少し前進できました。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php ログイン 1 2022/11/01 00:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpの画面表示が真っ白です
-
前後の全角スペースを削除する...
-
日付と年月日を選択するコード...
-
zampp PHPでPOSTの変数が返っ...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
ワードプレス、Contact Form 7...
-
PHPのif文でその処理を途中で抜...
-
現在位置より2つ上のディレク...
-
別ファイルの変数を呼び出した...
-
【file_exists】ファイルが存在...
-
UWSCでファイルのアップロード...
-
PHPExcel処理速度が遅い
-
PHPで`headers already sent`と...
-
【PHP】declare命令で”Fatal er...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのエラーについて(デバッグ)
-
php ログイン
-
文字化けについて
-
日付と年月日を選択するコード...
-
PHP postgreSQL(teraterm)を用...
-
前後の全角スペースを削除する...
-
ここでの ②if($su_d<>"")の比較...
-
複数の文字列をファイルに書き...
-
PHP(smarty)についての質問(文...
-
phpの画面表示が真っ白です
-
機種依存文字の文字化けについて
-
ローカル環境で動くのに本番環...
-
XAMPP1.7.1上でPHPを実行すると...
-
文字コードの出力を変更したい
-
XMLパースエラー回避方法
-
どうしたら確認ができますか!?
-
phpでfopen()やfputs()が使えない
-
ファイルをアップロードすると...
-
zampp PHPでPOSTの変数が返っ...
-
pdf表示
おすすめ情報