Подключите интерактивную форму html к базе данных sql - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь создать форму html, чтобы предоставить информацию о таблице зарплат в моей базе данных. Пользователь должен иметь возможность выбрать год между 1986-1996 и выбрать, хочет ли он видеть общую зарплату за этот год. или средняя зарплата за этот год.

Я понятия не имею, как связать эти сценарии, и я не могу найти много онлайн.

html file:

<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();
?>

1 Ответ

3 голосов
/ 29 апреля 2020

То, что вы пытаетесь сделать, это буквально PHP / MySQL 101, и есть много онлайн о том, как это сделать. Сказав, что вы делаете некоторые ошибки в вашем коде. Во-первых, вы должны назвать <select>

<select name="year">

Затем вы должны дать каждому параметру значение:

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

Таким образом, когда форма отправляется на PHP вы можно найти его в массиве POST:

$year = $_POST['year'];

Это только начало. У вас есть второй выпадающий список, которому также нужно имя, и у каждой опции должен быть атрибут value.

<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">

Предупреждение

Маленький Бобби говорит ваш сценарий подвержен риску SQL инъекционных атак. Узнайте о подготовлено операторы для MySQLi . Даже экранирование строки небезопасно!

Предложение

Вы должны go пройти через некоторые базовые c PHP учебные пособия, такие как те, которые предлагаются https://www.learn-php.org/ (бесплатный интерактивный веб-сайт) или другими услугами

...