如何获取表格中选中的radio值并传递到PHP新页面展示对应数据
功能修复实现方案
现有代码核心问题
- 页面HTML结构混乱,重复输出
<html>、<body>标签,表单嵌套位置错误导致数据无法正常提交 - 单选按钮
value赋值逻辑错误,所有单选按钮ID重复不符合规范 stock.php存在语法错误:PHP起始标签写错、超全局变量$_GET/$_POST大小写错误、数组键名未加引号- 提交表单用POST方式,接收时用GET方式完全拿不到数据
修复后完整代码
index.php
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>机型选择</title> </head> <body> <h1>Choose One</h1> <form action="index.php" method="post"> <label for="Type">Package Type</label> <select name="Type"> <option value="">Choose...</option> <option value="a">apple</option> <option value="b">google</option> <option value="c">oneplus</option> <option value="d">Samsung</option> </select> <input type="submit" value="筛选"> </form> <?php // 筛选逻辑可以自行扩展,这里默认展示所有CSV内容 if (file_exists("phones.csv")) { $myfile = fopen("phones.csv", "r"); // 跳过CSV表头,如果没有表头可以删除下一行 fgetcsv($myfile); ?> <form action='stock.php' method='post' name='stock'> <table border='1'> <tr> <th>选择</th> <th>Manufacturer</th> <th>Model</th> <th>Price</th> </tr> <?php $row_index = 0; while (($dataarray = fgetcsv($myfile)) !== false) { // 过滤空行 if (count($dataarray) < 3) continue; ?> <tr> <td> <!-- 用行索引作为value,传递到下一页后根据索引取对应行数据 --> <input type='radio' name='selected_row' id="row_<?php echo $row_index; ?>" value="<?php echo $row_index; ?>" required> </td> <td><?php echo htmlspecialchars($dataarray[0]); ?></td> <td><?php echo htmlspecialchars($dataarray[1]); ?></td> <td><?php echo htmlspecialchars($dataarray[2]); ?></td> <!-- 如果CSV有图片路径列,可以加一列显示缩略图 <td><img src="<?php echo htmlspecialchars($dataarray[3]); ?>" width="50"></td> --> </tr> <?php $row_index++; } fclose($myfile); ?> </table> <input type='submit' value="查看选中机型详情"> </form> <?php } else { ?> <p>CSV文件不存在,请检查路径</p> <?php } ?> </body> </html>
stock.php
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>机型详情</title> </head> <body> <a href="index.php">返回选择页面</a> <h2>选中机型详情</h2> <?php // 检查是否有提交的行索引 if (isset($_POST['selected_row']) && is_numeric($_POST['selected_row'])) { $selected_index = intval($_POST['selected_row']); if (file_exists("phones.csv")) { $myfile = fopen("phones.csv", "r"); // 跳过表头,和index.php保持一致 fgetcsv($myfile); $current_index = 0; $found = false; while (($dataarray = fgetcsv($myfile)) !== false) { if ($current_index == $selected_index) { $manufacturer = htmlspecialchars($dataarray[0]); $model = htmlspecialchars($dataarray[1]); $price = htmlspecialchars($dataarray[2]); // 如果CSV第四列存的是图片路径,就取 $img = htmlspecialchars($dataarray[3]); // 输出详情 echo "<p>厂商:{$manufacturer}</p>"; echo "<p>型号:{$model}</p>"; echo "<p>价格:{$price}</p>"; // 输出图片的话加这行:echo "<p><img src='{$img}' alt='{$model}'></p>"; $found = true; break; } $current_index++; } fclose($myfile); if (!$found) { echo "<p>未找到对应机型信息</p>"; } } else { echo "<p>数据文件不存在</p>"; } } else { echo "<p>请先选择机型</p>"; } ?> </body> </html>
功能扩展说明
如果需要展示机型图片,只需在CSV文件新增一列存储对应机型的图片路径,取消代码中注释的图片相关逻辑即可正常显示。
内容的提问来源于stack exchange,提问作者dIcSdragon69
相关产品推荐
相关产品推荐

