2 番目のクエリで必要なものだけを取得したくない場合if-statement
は、ループ内の simple-が機能するはずです。
<?php
$getId = isset($_GET['id']) ? $_GET['id'] : false;
//give ma all values but only echo out list of the $_GET['id'] in the url
while ($row = mysql_fetch_array($result)) {
$id = $row["id"];
$title = $row["title"];
$length = $row["length"];
if ($id == $getId) {
echo("<li><a href='#'>". $title." " .$length. "</a></li>");
}
}
?>
すべての反復中$getId
に使用する必要がないように、ループの外側で宣言したことに注意してください。isset()
設定されているかどうかを確認せずに使用しようとすると、警告がスローされます- (そのレベルが有効になっている状態で)オンになっているとundefined index
仮定します。error_reporting
array_filter()
または、すべてを解析した後、データに対してPHP を使用することもできます。
$results = array();
while ($row = mysql_fetch_array($result)) $results[] = $row;
if (isset($_GET['id'])) {
$filtered = array_filter($results, function($element) use ($_GET['id']) { return ($element['id'] == $_GET['id']); });
$results = $filtered;
}
foreach ($results as $result) {
echo("<li><a href='#'>". $result['title']." " .$result['length']. "</a></li>");
}
私の個人的な意見は、より効率的で、2 番目のクエリを作成することです。もちろん、an が指定されている場合、実際にはすべての結果が必要ではないことを前提としていid
ます。それは次のように簡単です:
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
$query = 'SELECT id, title, length FROM table WHERE id=' . (int)$_GET['id'];
} else {
$query = 'SELECT id, title, length FROM table';
}
// your existing code as-is