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

PHP服务成本估算页面提交后空白问题求助

解决服务成本估算功能中cost.php页面空白的问题

核心问题分析

提交面积后cost.php页面空白,是因为提交面积的表单没有传递service参数:
你在estimate.php中生成的第二个表单(用于提交面积到cost.php)只包含了area字段,但cost.php的核心逻辑完全依赖isset($_POST['service'])的判断,没有这个参数时,代码不会执行任何输出,导致页面空白。

修复步骤

1. 修改estimate.php,添加service隐藏字段

在提交面积的表单里,增加一个隐藏的service字段,把选中的服务名称传递给cost.php:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $selected_service = $_POST['service'];

  if ($selected_service == "Tile & Grout Cleaning") {
    echo '<h2>Tile & Grout Cleaning</h2>';
    echo '<form action="cost.php" method="post">';
    // 新增隐藏字段传递service参数
    echo '<input type="hidden" name="service" value="' . htmlspecialchars($selected_service) . '">';
    
    echo '<label for="area">How large is the area to be cleaned (in square feet)?: </label>';
    echo '<input type="number" name="area" required><br><br>';
    echo '<input type="submit" value="Calculate Cost">';
    echo '</form>';
  } else {
    echo '<p>Please select a service.</p>';
  }
}

2. 优化cost.php的逻辑与输出

(1)开启错误调试(新手必备)

在cost.php开头添加错误显示代码,方便排查后续问题:

<?php
session_start();
// 开启错误显示,调试完成后可以注释
error_reporting(E_ALL);
ini_set('display_errors', 1);

$title = "Cost Estimate";
include 'header.php';

(2)修复SQL查询的转义问题

避免SQL注入,同时确保查询字符串正确匹配数据库中的值:

// 替换原有的SQL查询代码
$selected_service = $_POST['service'];
// 使用mysqli_real_escape_string转义特殊字符
$escaped_service = mysqli_real_escape_string($conn, $selected_service);
$sql = "SELECT price FROM Services WHERE service_name = '$escaped_service'";
$result = $conn->query($sql);

(3)调整输出格式符合需求

把输出中的&amp;替换为and,匹配你期望的显示格式:

if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $price = $row["price"];
    $cost = $price * $area;
    // 替换&为and,符合期望的显示文本
    $display_service = str_replace('&amp;', 'and', $selected_service);
    echo "<h2>Cost Estimate for $display_service</h2>";
    echo "<p>Area: $area square feet</p>";
    echo "<p>Estimated Cost: $$cost</p>";
}

3. 验证数据库数据

确保你的Services表中存在service_name为Tile & Grout Cleaning的记录,且price字段有数值(比如0.9对应100平方英尺90美元)。

测试流程

  1. 在estimate.php选择Tile & Grout Cleaning并提交
  2. 输入面积(比如100),点击Calculate Cost
  3. cost.php将正常显示:
    • Cost Estimate for Tile and Grout Cleaning
    • Area: 100 square feet
    • Estimated Cost: $90

内容的提问来源于stack exchange,提问作者Kyrs P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:11:00