Как получить все строки из одного столбца из нескольких таблиц на основе пользовательского ввода?

0

Я создаю приложение для выбора процесса, и я даже не уверен, что мой подход верен (я новый, извините!). У меня есть форма с 5 входными параметрами с помощью переключателей (выберите 1-10).

Изображение 174551

У меня есть 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 таблиц, чтобы создать новый массив, чтобы я мог использовать эти значения в вычислении, которое будет забивать/оценивать этот тип процесса.

Цените любую помощь. Спасибо!

  • 0
    Привет, я не уверен, что именно вам нужно. Я прав, если я думаю, что вам это нужно ?: 1. Пользователь делает выбор. 2. Данные должны быть сохранены в базе данных. 3. Те же данные должны быть предоставлены в сеансе. 4. Вы хотите использовать эти переменные сеанса для проведения расчетов?
  • 0
    1. Да 2. Не обязательно ... Я полагаю, я могу хранить справочные данные в массиве? 3. Данные сеанса должны сравниваться с эталонными данными (база данных или массив?). 4. Нет, данные сеанса служат только для определения столбца, из которого будут использоваться вычисления.
Теги:

2 ответа

0

Я это сделал! Это не красиво, не лаконично и не элегантно... но это работает. Спасибо @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

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. Но, пожалуйста, позвольте мне напомнить вам, как только сессия будет уничтожена, вход будет потерян. Если это НЕ ответит на ваш вопрос, сообщите мне, и я помогу вам найти решение!

  • 0
    Я могу использовать это, спасибо! За исключением того, что мне не хватает одного куска ... Мне нужно только значение массива для каждого параметра (темп, размер и т. Д.) В зависимости от ввода ... возможно, я смогу отредактировать вопрос ...
  • 0
    Итак, у меня 5 таблиц (температура, размеры, объем, жесткость, вес). Эти таблицы содержат столбцы (ID, тип ..., а затем столбцы с именами один, два, три ... через 10). тип - это тип процесса, скажем, «литье под давлением» ... столбцы с 1 по 10 имеют значения, основанные на том, насколько хорошо они подходят по шкале от 1 до 10 ввода пользователя. значение, скажем, «1» подходит. Значение «0» не является. Если пользователь выбирает TWO на форме, мне нужно получить все значения этого столбца TWO (включая тип). То же самое для partSize ... если они выбирают ТРИ, возьмите все значения из этого столбца.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню