You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取表格中选中的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:18:00