将交互式HTML表单连接到sql数据库

问题描述 投票:-2回答:1

我正在尝试创建一个html表单以提供有关我数据库中薪金表的信息,用户应该能够选择1986-1996年之间的年份,并选择是否要查看该年的总薪水或该年的平均薪水。那年。我不知道如何链接这些脚本,也无法在线找到更多内容。

感谢您提前提供帮助!:)

html文件:

<html>
    <body>
        <fieldset>
        <form id="frmName" method=post action="Oppgave4.php" onsubmit="">
        <h1>Oppgave 4</h1>
            Choose year:
            <select id="frmName" onChange="">
                <option selected disabled hidden>----</option>
                <option name="1986">1986</option>
                <option name="1987">1987</option>
                <option name="1988">1988</option>
                <option name="1989">1989</option>
                <option name="1990">1990</option>
                <option name="1991">1991</option>
                <option name="1992">1992</option>
                <option name="1993">1993</option>
                <option name="1994">1994</option>
                <option name="1995">1995</option>
                <option name="1996">1996</option>
            </select>
            Total or average salary:
            <select id="frmName" onChange="">
                <option selected disabled hidden>----</option>
                <option name="Total">Total salary</option>
                <option name="Average">Average salary</option>
            </select>
            <input type="submit" value="Submit" id="submit">
            </p>
        </form>
        </fieldset>
    </body>
</html>

php文件:

<?php
$year = ($_POST['1986'], $_POST['1987'], $_POST['1988'], $_POST['1989'], $_POST['1990'],
$_POST['1991'], $_POST['1992'], $_POST['1993'], $_POST['1994'], $_POST['1995'],
 $_POST['1996'], $_POST['Total']);
$average = $_POST['Average'];

$conn = mysqli_connect("localhost", "root", "", "employees");

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sqlavg = "SELECT AVG(salaries.salary) AS average FROM salaries
WHERE from_date = '$year'";
$result = $conn->query($sql);
if (!empty($result) && $result->num_rows > 0) {

while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["average"] ."</td></tr>";
}
echo "</table>";

$sqlsum = "SELECT SUM(salaries.salary) AS total FROM salaries
WHERE from_date = '$year'";
$result = $conn->query($sql);
if (!empty($result) && $result->num_rows > 0) {

while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["total"] ."</td></tr>";
}
echo "</table>";

} else { echo "0 results"; }
$conn->close();
?>
php html mysql database connect
1个回答
1
投票
您正在尝试做的实际上是PHP / MySQL 101,有关如何执行此操作的在线信息很多。话虽如此,您在代码中犯了一些错误。首先,您应该命名<select>

<select name="year">

然后您应该给每个选项一个值:

<option value="1994">1994</option> ...// do each one like this

这样,当表单提交到PHP时,您可以在POST数组中找到它:

$year = $_POST['year'];

这仅仅是开始。您还有另一个下拉菜单,也需要一个名称,并且每个选项都应具有值属性。

<select name="calculation_type"> <option>----</option> <option value="Total">Total salary</option> <option value="Average">Average salary</option> </select>

将在POST数组中找到类似的内容:

$average = $_POST['calculation_type'];

您的表单需要名称,不需要onsubmit操作应该是将执行计算的PHP脚本的名称:

<form name="form_name" method=post action="Oppgave4.php">

警告

Little Bobby表示

[your script is at risk for SQL Injection Attacks.了解有关preparedMySQLi语句。甚至escaping the string都不安全!

建议

[您应该阅读一些基本的PHP教程,例如https://www.learn-php.org/(免费的交互式网站)或其他服务提供的那些
© www.soinside.com 2019 - 2024. All rights reserved.