PHP如何通过$_GET参数实现点击链接后展示对应车辆的详情信息
功能实现修正方案
现有代码存在的问题
- 比较逻辑错误:原有代码中
if($vehicle->vehicleid = $id)是赋值操作,会强制把遍历到的所有车辆id修改为传入的参数值,永远只会匹配到第一个遍历到的车辆,需改为全等判断$vehicle->vehicleid === $id - 未匹配逻辑错误:原有逻辑只要遍历到第一个不符合id的车辆就直接输出未匹配并终止遍历,正确逻辑应该是遍历完全部车辆都未找到对应id时再提示未匹配
- 缺少参数校验:未判断
$_GET['vehicleid']是否存在,直接访问页面无参数时会抛出PHP警告 - 列表跳转缺失:车辆列表页的每个条目需要加上指向详情页的超链接,携带对应车辆的id参数
修正后的详情页代码
<?php // 先校验参数是否存在 if (!isset($_GET['vehicleid'])) { echo "未传入车辆ID参数"; exit; } $id = $_GET['vehicleid']; $matchFound = false; // 标记是否找到匹配车辆 $url = 'https://gw.bilinfo.net/listingapi/api/export'; // 身份认证信息 $auth = base64_encode("demo:ocfB6XzF73"); // 构造请求上下文 $context = stream_context_create([ 'http' => ['header' => "Authorization: Basic $auth"] ]); // 请求接口数据 $data = file_get_contents($url, false, $context); $escaped = json_decode($data); /* 初始化表格变量 */ $temp = "<table class='car-list'>"; $temp .= "<tr>"; $temp .= "<th colspan='4' class='th-style'>Altid mellem 70 og 100 biler i vores udstilling</th>"; $temp .= "</tr>"; /* 遍历匹配车辆 */ foreach ($escaped->Vehicles as $vehicle) { // 正确的全等判断 if ($vehicle->vehicleid === $id) { $matchFound = true; $temp .= "<tr>"; $temp .= "<td class='td-style'>Bil id: " . $vehicle->vehicleid . "</td>"; $temp .= "<td class='td-style'>Producent: " . $vehicle->Make . "</td>"; $temp .= "<td class='td-style'>Model: " . $vehicle->Model . "</td>"; $temp .= "<td class='td-style'>Variant: " . $vehicle->Variant . "</td>"; $temp .= "</tr>"; $temp .= "<tr>"; $temp .= "<td class='td-style'>Pris: " . $vehicle->Price . "</td>"; $temp .= "<td class='td-style'>Type: " . $vehicle->PriceType . "</td>"; $temp .= "<td class='td-style'>Kontaktpris: " . $vehicle->CashPrice . "</td>"; $temp .= "<td class='td-style'>Sælger: " . $vehicle->DealerName . "</td>"; $temp .= "</tr>"; $temp .= "<tr>"; $temp .= "<td class='td-style'>Udsalgspris: " . $vehicle->WholesalePrice . "</td>"; $temp .= "<td class='td-style pictures'>"; for ($p = 0; $p < $vehicle->PictureCount; $p++) { if ($p < 1) { $temp .= "<table>"; $temp .= "<tr>"; $temp .= "<td rowspan='2' class='td-style'>"; $temp .= "<img class='cc-images' src='" . $vehicle->Pictures[$p] . "'>"; $temp .= "</td>"; $temp .= "</tr>"; $temp .= "</table>"; } } $temp .= "</td>"; $temp .= "</tr>"; // 找到匹配后提前终止遍历,提升性能 break; } } // 遍历结束后判断是否找到匹配 if (!$matchFound) { $temp .= "<tr><td colspan='4' class='td-style'>未找到对应车辆信息</td></tr>"; } $temp .= "</table>"; echo $temp; ?>
列表页跳转配置
在你的车辆列表页,给每个车辆条目添加如下跳转链接即可实现点击跳转到对应车辆详情页:
<a href="替换为你的详情页文件路径?vehicleid=<?php echo $vehicle->vehicleid; ?>">查看车辆详情</a>
如果需要展示更多车辆规格参数,直接在详情页的表格中新增对应的字段输出即可,所有可用字段可参考接口返回的结构自行扩展。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

