深く掘り下げる前に、ここから始めて php を十分に理解することをお勧めします。しかし、あなたがここで尋ねた特定の質問に答えるために...
php変数は、ここで$_GET
かなり適切に定義されています。
PHP では、事前定義された $_GET 変数を使用して、method="get" を含むフォームで値を収集します。
これが意味することは、URL の (GET 要求で) クエリ文字列を介して渡されるすべてのパラメーターは$_GET
、php の変数を介してアクセスできるということです。たとえば、 のリクエストでdynamic.php?id=1
は、 で ID にアクセスできます$_GET['id']
。
このことから、簡単な解決策を導き出すことができます。次のソリューションでは、同じ php ページを使用してanswer
、データベース内のテーブルから項目のリストを表示するか、id パラメーターが URL の一部として渡される場合は単一の行を表示します。
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "user", "password", "dynamic");
$query = 'SELECT * FROM answer';
if ($_GET['id']) {
$query .= ' WHERE id = '.$_GET['id'];
} else {
$query .= ' ORDER BY id';
}
$res = $mysqli->query($query);
if ($res->num_rows == 0) {
echo '<p>No Results</p>';
} else if ($res->num_rows == 1) {
// Display Answer
$row = $res->fetch_assoc();
echo '<h3>Answer for '.$row['id'].'</h3>';
echo '<ul>';
echo '<li>A1 = '.$row['A1'].'</li>';
echo '<li>A2 = '.$row['A2'].'</li>';
echo '<li>A3 = '.$row['A3'].'</li>';
echo '</ul>';
} else {
// Display List
echo '<ul>';
while ($row = $res->fetch_assoc()) {
echo '<li><a href="dynamic.php?id='.$row['id'].'">Answers for '.$row['id'].'</a></li>';
}
echo '</ul>';
}
?>
</body>
</html>
OK、これはまさにあなたが探しているものではないかもしれませんが、物事がどのように機能するかについて少し理解を深めるのに役立つはずです. ページに小さな JavaScript を追加すると、GET パラメータや追加のページ リクエストを使用せずに回答を表示/非表示にすることができます。
<!DOCTYPE HTML>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "user", "password", "dynamic");
$query = 'SELECT * FROM answer ORDER BY id';
$res = $mysqli->query($query);
if ($res->num_rows == 0) {
echo '<p>No Results</p>';
} else {
// Display List
echo '<ul>';
while ($row = $res->fetch_assoc()) {
echo '<li><a href="javascript:toggleAnswers('.$row['id'].')">Answers for '.$row['id'].'</a>';
echo '<ul id="answers_'.$row['id'].'" style="display:none;">';
echo '<li>A1 = '.$row['A1'].'</li>';
echo '<li>A2 = '.$row['A2'].'</li>';
echo '<li>A3 = '.$row['A3'].'</li>';
echo '</ul>';
echo '</li>';
}
echo '</ul>';
}
?>
<script>
function toggleAnswers(answer) {
$('#answers_' + answer).toggle();
}
</script>
</body>
</html>
他にも多くの解決策があり、それぞれがここで紹介したものよりも複雑です。たとえば、アイテムがクリックされた場合にのみリスト ページに回答をロードする ajax リクエストを設定できます。私のアドバイスは、PHP の初心者向けチュートリアルをいくつか見て、一般的な PHP フレームワーク (Zend、CodeIgniter、CakePHP など) を調べることです。
ここで提供されるコードは、あなたが求めていたことを達成する方法の例に過ぎないことに注意してください。すべての (もしあれば) ベスト プラクティスに従っているわけではありません。