【发布时间】:2019-02-02 22:42:02
【问题描述】:
假设我有一个巨大的预制数据库,其中包含以下汽车信息(列)(这个数据库已经有 3000 行):
ID .... 车名 .... 车轮尺寸 .... 生产年份 .... 最大速度
在主页上,用户在一个表单中输入了 4 种信息:
<form action="sanitize.php" method="post">
<input type="text" name="car_name" placeholder="CAR NAME"><br>
<input type="text" name="wheel_size" placeholder="WHEEL SIZE"><br>
<input type="text" name="year" placeholder="YEAR of PROD"><br>
<input type="text" name="max_speed" placeholder="MAX SPEED"><br>
<button>Submit </button>
</form>
如果我想将这些值插入数据库,我已经创建了 sanitize.php 以供将来使用,它看起来像这样:
<?php
$dbServerName = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "cars";
$conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
// Sanitize POST Array
$POST = filter_var_array($_POST, FILTER_SANITIZE_STRING);
$car_name = mysqli_real_escape_string($conn, $POST['car_name']);
$wheel_size = mysqli_real_escape_string($conn,$POST['wheel_size']);
$year = mysqli_real_escape_string($conn,$POST['year']);
$max_speed = mysqli_real_escape_string($conn,$POST['max_speed']);
session_start();
$_SESSION['car_name'] = $car_name;
$_SESSION['wheel_size'] = $wheel_size;
$_SESSION['year'] = $year;
$_SESSION['max_speed'] = $max_speed;
// Redirect to decide page
header('Location: decide.php');
?>
decision.php 页面上有复选框,根据用户选择勾选的复选框,网站将回显它在数据库中的出现次数。
<form action="function.php" method="post">
<input type="checkbox" name = "checkbox[]" value="<?php echo $_SESSION['car_name']; ?>"> Car name<br>
<input type="checkbox" name = "checkbox[]" value="<?php echo $_SESSION['wheel_size']; ?>"> Wheel size<br>
<input type="checkbox" name = "checkbox[]" value="<?php echo $_SESSION['year']; ?>"> YEAR of PROD<br>
<input type="checkbox" name = "checkbox[]" value="<?php echo $_SESSION['max_speed']; ?>"> MAX SPEED<br>
<button>Submit CHOICES</button>
</form>
如果他勾选了生产年份和车轮尺寸,则网页(function.php)将计算并回显数据库中的行数,其中生产年份和车轮尺寸就像用户输入的一样。
3 个勾选的复选框也是如此,如果他决定勾选最大速度、生产年份和汽车名称,则网页(function.php)将计算并回显 DB 中最大速度 && 生产年份 && 的行数车名与用户输入相匹配。
我想知道是否有办法为此创建一个函数,而不仅仅是为每种情况手动使用 if 语句。如果我决定需要在我的数据库中添加一些额外的列,这将是永无止境的代码。
如果 php 中的语句看起来像这样:
$KAR = $_SESSION['car_name'];
$sql="SELECT * FROM ecars WHERE car_name = '".$KAR"'";
if ($result=mysqli_query($conn,$sql))
{
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
printf("Number of cars which have same NAME as you entered: %d.\n",$rowcount);
echo "<br>";
// Free result set
mysqli_free_result($result);
}
【问题讨论】:
-
也许只有我一个人……但我不明白你想做什么。您能否发布一个使用 if “可以”做什么的示例,当我了解您要实现的目标时,我将帮助您找到更好的方法。请同时显示更多代码。
-
我编辑了这篇文章,希望它更容易理解 Patrick
标签: php database function checkbox compare