プロが教える店舗&オフィスのセキュリティ対策術

phpでホームページを作成中です。
MAMPで試作してます。SELECT文でテーブル一覧表示をしてるんですが、そこにリンクも一緒に表示させて、リンク先に飛ばせるようにしたいのですが、リンク先のマップアドレスの貼り付けが一覧で表示させるのが出来なくて困ってます。どなたかご教授お願いします。

---------------------------------------------------------------------------
概要:
例として、
テーブル名はmember、店舗id(主キー&A.I)、nameは店舗名、gmapは店舗のマップアドレスとさせていただきました。

create table member(
id int,
name varchar(255),
gmap varchar(255)
);

insert into member(
name,
gmap
) values(
'田中店',
'http://goo.gl/maps/××××'
);


---------------------------------------------------------------------------
以下のコードは店舗登録htmlフォームからPOSTで渡されてきてデータベースに追加してテーブルタグで一覧表示させるコードです。

<?php
省略
.
.
.
?>
<!DOCTYPE html>
<html lang="ja">
<head>
省略
.
.
</head>
<body>
<div>
<?php
$name = $_POST["name"];
$gmap = $_POST["gmap"];
//MySQLデータベースに接続する
try {
$pdo = new PDO($dsn, $user, $password);
// プリペアドステートメントのエミュレーションを無効にする
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// 例外がスローされる設定にする
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// SQL文を作る
$sql = "INSERT INTO member (name, gmap) VALUES (:name, :gmap)";
// プリペアドステートメントを作る
$stm = $pdo->prepare($sql);
// プレースホルダに値をバインドする
$stm->bindValue(':name', $name, PDO::PARAM_STR);
$stm->bindValue(':gmap', $gmap, PDO::PARAM_STR);
// SQL文を実行する
if ($stm->execute()){
// レコード追加後のレコードリストを取得する
$sql = "SELECT * FROM member";
// プリペアドステートメントを作る
$stm = $pdo->prepare($sql);
// SQL文を実行する
$stm->execute();
// 結果の取得(連想配列で受け取る)
$result = $stm->fetchAll(PDO::FETCH_ASSOC);
// テーブルのタイトル行
echo "<table>";
echo "<thead><tr>";
echo "<th>", "ID", "</th>";
echo "<th>", "名前", "</th>";
echo "<th>", "地図", "</th>";
echo "</tr></thead>";
// 値を取り出して行に表示する
echo "<tbody>";
foreach ($result as $row) {
// 1行ずつテーブルに入れる
echo "<tr>";
echo "<td>", $row['id'], "</td>";
echo "<td>", $row['name'], "</td>";
echo "<td>", $row['gmap'], "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
} else {
echo '<span class="error">追加エラーがありました。</span><br>';
};
} catch (Exception $e) {
echo '<span class="error">エラーがありました。</span><br>';
echo $e->getMessage();
}
?>
<hr>
<p><a href="<?php echo $×××× ?>">戻る</a></p>
</div>
</body>
</html>
---------------------------------------------------------------------------
上記のコードではid、店舗名、マップアドレスをテーブルで一覧表示させることは出来たのですが、
<table>タグの
echo "<td>", $row['gmap'], "</td>";
をリンクしたいのですが、うまくリンクさせることが出来ません。

<td><a herf="$row['gmap']">Google地図を見る</a></td>
と書いてもうまくいきません。
どうか、詳しく教えていただける方よろしくお願いします。

A 回答 (1件)

><td><a herf="$row['gmap']">Google地図を見る</a></td>



typoですね、このままじゃリンクにはなりません、herf→href

でechoするならこう
echo "<td><a href=\"{$row['gmap']}\">Google地図を見る</a></td>";

ちなみに
$name = $_POST["name"];
$gmap = $_POST["gmap"];
としていますが存在確認が抜けるとnoticeがでるのでissetやfilter_inputで調整し、
空データをあたえてもそのままINSERTされるのがいやなら例外処理をいれてください
    • good
    • 0
この回答へのお礼

解決しました

yambejpさん、回答ありがとうございます。
hrefのスペル間違い失礼いたしました。
早速、試させていただきました。
{}と\\をつけて実行したらキチンと表示されました。
また、外部リンク(新規タブ)の場合も考えて、target=\"_blank\" でも外部リンクで飛ばすことができました。

検索フォームにも応用させていただきます。

大変、勉強になりました。また、ご教授お願いします。
yambejpさん、どうもありがとうございました。

お礼日時:2016/09/02 17:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!