Я создаю приложение для выбора процесса, и я даже не уверен, что мой подход верен (я новый, извините!). У меня есть форма с 5 входными параметрами с помощью переключателей (выберите 1-10).
У меня есть 5 таблиц для каждого из этих параметров, которые хранят имя процесса и поля, заданные как 1 - 10, чтобы соответствовать пользовательскому вводу... Один из них выглядит следующим образом:
введите описание изображения здесь
Я хочу сохранить каждый пользовательский ввод параметров (1-10) в качестве переменной сеанса для вывода в массив для дальнейшего вычисления.
У меня есть следующий код, который устанавливает переменные сеанса из формы и возвращает только те записи, которые соответствуют вводу пользователя только из одного параметра:
<?php
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "selectionapp";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['Submit'])) {
$_SESSION['temperature'] = $_POST['temperature'];
$_SESSION['partSize'] = $_POST['partSize'];
$_SESSION['volume'] = $_POST['volume'];
$_SESSION['stiffness'] = $_POST['stiffness'];
$_SESSION['weight'] = $_POST['weight'];
}
echo $_SESSION['temperature'];
echo $_SESSION['partSize'];
echo $_SESSION['volume'];
echo $_SESSION['stiffness'];
echo $_SESSION['weight'];
$result = mysqli_query($conn, "SELECT * FROM processes WHERE temperature LIKE '%{$_SESSION['temperature']}%'");
$row = mysqli_fetch_assoc($result);
echo "<table border='1'>";
while ($row = mysqli_fetch_assoc($result)) {
echo '<tr>';
echo '<td>' . $row['score'] .'</td>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row['temperature'] . "</td>";
echo "<td>" . $row['partSize'] . "</td>";
echo "<td>" . $row['volume'] . "</td>";
echo "<td>" . $row['stiffness'] . "</td>";
echo "<td>" . $row['weight'] . "</td>";
echo "<td>" . $row['tool'] . "</td>";
echo "<td>" . $row['paint'] . "</td>";
echo "<td>" . $row['notes'] . "</td>";
echo '<tr/>';
}
echo '</table>';
?>
<?php
// close connection
mysqli_close($conn);
?>
Кроме того, мне кажется, что мне действительно нужно захватить один столбец, который соответствует пользовательскому вводу (1-10) из каждой из 5 таблиц, чтобы создать новый массив, чтобы я мог использовать эти значения в вычислении, которое будет забивать/оценивать этот тип процесса.
Цените любую помощь. Спасибо!
Я это сделал! Это не красиво, не лаконично и не элегантно... но это работает. Спасибо @RonnieOosting! Пока я не прошел маршрут массива, вы помогли указать мне в правильном направлении.
<?php
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "selectionapp";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['Submit'])) {
$_SESSION['temperature'] = $_POST['temperature'];
$_SESSION['partSize'] = $_POST['partSize'];
$_SESSION['volume'] = $_POST['volume'];
$_SESSION['stiffness'] = $_POST['stiffness'];
$_SESSION['weight'] = $_POST['weight'];
}
echo $_SESSION['temperature'];
echo $_SESSION['partSize'];
echo $_SESSION['volume'];
echo $_SESSION['stiffness'];
echo $_SESSION['weight'];
if ($result_temp = mysqli_query($conn, "SELECT * FROM temperature WHERE '%{$_POST['temperature']}%' LIKE '%{$_SESSION['temperature']}%'"));
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'Process Type' . "</td>";
echo "<td>" . 'Temperature Score' . "</td>";
echo '<tr/>';
while ($row = mysqli_fetch_assoc($result_temp)) {
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['temperature']] * 10 . "</td>";
echo '<tr/>';
}
echo '</table>';
$result_size = mysqli_query($conn, "SELECT * FROM partSize WHERE '%{$_POST['partSize']}%' LIKE '%{$_SESSION['partSize']}%'");
//$row = mysqli_fetch_assoc($result);
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'Process Type' . "</td>";
echo "<td>" . 'Part Size Score' . "</td>";
echo '<tr/>';
while ($row = mysqli_fetch_assoc($result_size)) {
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['partSize']] . "</td>";
echo '<tr/>';
}
echo '</table>';
$result_vol = mysqli_query($conn, "SELECT * FROM volume WHERE '%{$_POST['volume']}%' LIKE '%{$_SESSION['volume']}%'");
//$row = mysqli_fetch_assoc($result);
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'Process Type' . "</td>";
echo "<td>" . 'Volume Score' . "</td>";
echo '<tr/>';
while ($row = mysqli_fetch_assoc($result_vol)) {
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['volume']] . "</td>";
echo '<tr/>';
}
echo '</table>';
$result_stiff = mysqli_query($conn, "SELECT * FROM stiffness WHERE '%{$_POST['stiffness']}%' LIKE '%{$_SESSION['stiffness']}%'");
//$row = mysqli_fetch_assoc($result);
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'Process Type' . "</td>";
echo "<td>" . 'Stiffness Score' . "</td>";
echo '<tr/>';
while ($row = mysqli_fetch_assoc($result_stiff)) {
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['stiffness']] . "</td>";
echo '<tr/>';
}
echo '</table>';
$result_wght = mysqli_query($conn, "SELECT * FROM weight WHERE '%{$_POST['weight']}%' LIKE '%{$_SESSION['weight']}%'");
//$row = mysqli_fetch_assoc($result);
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'Process Type' . "</td>";
echo "<td>" . 'Weight Score' . "</td>";
echo '<tr/>';
while ($row = mysqli_fetch_assoc($result_wght)) {
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['weight']] . "</td>";
echo '<tr/>';
}
echo '</table>';
echo "<table border='1'>";
echo '<tr>';
echo "<td>" . 'LFI Results' . "</td>";
echo "<td>" . 'Score' . "</td>";
echo '<tr/>';
echo '<tr>';
echo "<td>" . $row['type'] . "</td>";
echo "<td>" . $row[$_SESSION['weight']] . "</td>";
echo '<tr/>';
echo '</table>';
?>
<?php
// close connection
mysqli_close($conn);
?>
Эти результаты:
Тип процесса Температурный показатель LFI 5 DCPD 5 SMC 10
Тип процесса Размер детали Размер LFI 0.0 DCPD 0.0 SMC 1.0
Тип процесса Объемный коэффициент LFI 0.5 DCPD 0.5 SMC 1.0
Тип жесткости Тип LFI 1.0 DCPD 1.0 SMC 1.0
Тип процесса Вес Показатель LFI 1.0 DCPD 1.0 SMC 1.0
Я не совсем уверен, что это то, что вам нужно:
// You can start to create an array:
$array = [];
// Next is to set the $array with data
$array = [
'temperature' => (int) $_POST['temperature'],
'partSize' => (int) $_POST['partSize'],
];
// In case you want to echo a piece of the array simply do this:
echo $array['temperature'];
// If you want to 'add' a number to the current one you can do this:
$array['partSize'] = ($array['partSize'] + (int) $_POST['partSize']);
// Do a check if $_POST data actually exist and/or is valid:
$array = [
'temperature' => (isset($_POST['temperature'])) ? (int) $_POST['temperature'] : 0,
'partSize' => (isset($_POST['partSize'])) ? (int) $_POST['partSize'] : 0,
];
Честно говоря, я лично не буду хранить это в сеансе каждый раз, когда вы получите новые данные. Просто выполните один запрос и получите все данные в один массив и вычислите их.
Например:
// Set $temperature
$temperature = [];
// Query to get all temperature and put into an array:
$temperature = [1, 6, 3, 8, 2, 9, 10, 3, 7, 9];
// Count how many items you've got
$count_temperature = count($temperature); // = 10
// Now calculate and get an average
$sum_temperature = 0;
foreach ($temperature as $temp)
{
$sum_temperature = ($sum_temperature + $temp);
}
echo $sum_temperature; // 58
$avg_temperature = ($sum_temperature / $count_temperature);
echo $avg_temperature; // 5.8
Надеюсь, у вас есть идея, и это отвечает на ваш вопрос. Вы не обязаны использовать соединение с базой данных, его можно сохранить в $_SESSION
. Но, пожалуйста, позвольте мне напомнить вам, как только сессия будет уничтожена, вход будет потерян. Если это НЕ ответит на ваш вопрос, сообщите мне, и я помогу вам найти решение!