PHP搜索按钮点击无响应问题排查及解决方案求助
药品搜索按钮无响应问题排查与修复
你的按钮点击无反应,不需要额外写onclick函数,问题出在表单和PHP代码的基础错误上,以下是具体问题和修复方案:
一、HTML表单(index.php)的核心错误
- method属性错误:表单的
method应该写"POST",而不是"$_POST",后者是PHP变量,不能直接写在HTML属性里 - 按钮类型错误:
type="button"的按钮不会触发表单提交,必须改成type="submit" - 输入框缺少name属性:PHP通过
name属性接收表单数据,你的输入框只有id="Search",没有name="cerca",导致数据无法传递到后端
修正后的index.php代码:
<html> <!-- 用户输入药品名称的区域 --> <form action="Ricerca.php" class="form-subscribe" id="contactForm" data-sb-form-api-token="API_TOKEN" method="POST"> <div class="row"> <div class="col"> <!-- 添加name属性,和PHP接收的字段名一致 --> <input class="form-control form-control-lg" id="Search" name="cerca" type="text" placeholder="Medicine Search"/> </div> <!-- 按钮改为submit类型,触发表单提交 --> <div class="col-auto"><button type="submit" class="btn btn-primary" id="cerca">Search</button></div> </div> </form> </html>
二、PHP处理页面(Ricerca.php)的错误
- 变量提前使用:
$Quantita在循环外就进行判断,此时还未从数据库获取数据,会导致未定义变量错误,必须把判断逻辑放到while循环内部 - 错误的字段取值:
$Riordino=$row["$ris"];这行完全错误,$ris是你生成的判断文本,不是数据库字段,直接用$ris赋值即可 - SQL注入风险:直接拼接用户输入到SQL语句中,存在安全隐患,建议使用预处理语句
- 缺少错误处理:没有处理查询失败的情况,比如数据库连接错误或SQL语法错误
修正后的Ricerca.php代码:
<?php require_once("Connessione.php"); $result=''; // 先判断是否有POST数据传入 if(isset($_POST["cerca"]) && !empty($_POST["cerca"])){ $cerca = $_POST["cerca"]; // 使用预处理语句防止SQL注入 $sql = "SELECT * FROM farmaco WHERE Nome_Farmaco like ?"; $stmt = $conn->prepare($sql); $like_param = "%".$cerca."%"; $stmt->bind_param("s", $like_param); $stmt->execute(); $result = $stmt->get_result(); if($result && $result->num_rows > 0 ){ echo "<h2>Farmaci trovati con questo nome</h2>"; while($row = $result->fetch_assoc()) { $ID=$row["ID"]; $Nome_Farmaco=$row["Nome_Farmaco"]; $Produttore=$row["Produttore"]; $Fornitore=$row["Fornitore"]; $Scadenza=$row["Scadenza"]; $Descrizione=$row["Descrizione"]; $Quantita=$row["Quantita"]; // 把库存判断放到循环内,使用当前行的Quantita值 $ris = ($Quantita < 1) ? "si, necessario riordino" : "no, non necessario riordino"; echo "<h2>Codice: ".$ID."</h2>"; echo "<h2>Nome_Farmaco: ".$Nome_Farmaco."</h2>"; echo "<h2>Produttore: ".$Produttore."</h2>"; echo "<h2>Fornitore: ".$Fornitore."</h2>"; echo "<h2>Scadenza: ".$Scadenza."</h2>"; echo "<h2>Descrizione: ".$Descrizione."</h2>"; echo "<h2>Riordino: ".$ris."</h2>"; echo "<h2>Quantita: ".$Quantita."</h2>"; } } else { echo "<h2>Nessun farmaco trovato</h2>"; } } else { echo "<h2>Inserisci un nome di farmaco per cercare</h2>"; } // 关闭语句和连接 if(isset($stmt)) $stmt->close(); $conn->close(); ?>
三、额外提示
- 确保
Connessione.php中的数据库连接代码正确,没有语法错误 - 可以打开浏览器的开发者工具(F12),查看控制台是否有JS错误,或者网络请求是否正常发送
- 所有HTML标签要正确闭合,比如原代码中
<h2>标签未正确关闭,会导致页面渲染异常
内容的提问来源于stack exchange,提问作者Programmer967
相关产品推荐
相关产品推荐

