Как выбрать и отобразить определенную строку, которая соответствует основе ввода формы из массива PHP?

Я делаю школьный проект по своему предмету веб-разработки, и это последняя часть моей системы, которая вызывает у меня головную боль о том, как я собираюсь это сделать. Эта часть, скорее всего, является функцией поиска с несколькими постоянными параметрами (потому что я использую раскрывающийся список для ввода в своей форме). Цель этой части — отобразить конкретный столбец на текущей странице на основе пользовательского ввода для формы. Допустим, у меня есть эти поля в table1.

<сильный>| идентификатор | тип | из | маршрут | цена |

(Данные, которые мне нужны в этой таблице, взяты только из столбца price.)

Теперь в моем php-коде я извлекаю все строки из моей table1 и сохраняю их в массиве. вот код:

<?php
$sel = "SELECT * FROM table";
$res = mysqli->query($sel);
$Allrow = array();
while($rows = $res->fetch_assoc())
{
  $Allrow[] = $rows;
}
?>

Теперь в моей html-форме, где я хочу отобразить конкретные данные из столбца price в table1, вот входные данные:

    <form action="status.php" method="post">
        <label>Type</label>
        <select id="type" name="tType">
            <option value=""></option>
            <option value="type1">Aircondition</option>
            <option value="type2">Ordinary</option>
            <option value="type3">Pickup</option>
        </select>
        <label>From</label>
        <input list="from" name="from">
        <datalist id="from">
            <option value=""></option>
            <option value="place1">Place 1</option>
            <option value="place2">Place 2</option>
            <option value="place3">Place 3</option>
        </datalist>
        <label>Route</label>
        <input list="to" name="to">
        <datalist id="to">
            <option value=""></option>
            <option value="place1">Place 1</option>
            <option value="place2">Place 2</option>
            <option value="place3">Place 3</option>
        </datalist>

        <p>Price: <!--Display column price here--></p>

        <input type="reset" name="Reset">
        <input type="submit" name="btn-submit" value="Submit">
    </form>

Теперь, как мне отобразить определенные данные из моего массива $Allrow, которые соответствуют входным данным из моей формы. Это переменная, которая содержит входные данные:

<?php
if(isset($_POST['btn-submit']))
  $type = $_POST['type'];
  $from = $_POST['from'];
  $to = $_POST['to'];
?>

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


person Chepky Pie    schedule 17.04.2021    source источник
comment
Кажется, у вас опечатка: mysqli->query($sel);. Я думаю, это должно быть $mysqli->query($sel);   -  person Magnus Eriksson    schedule 17.04.2021
comment
Кажется, вы спрашиваете здесь несколько вещей. Как отфильтровать результат на основе ввода и как получить и отобразить эти результаты без перезагрузки страницы. Пожалуйста, задавайте только одну вещь в каждом вопросе, иначе он, скорее всего, просто будет закрыт из-за того, что он не сфокусирован.   -  person Magnus Eriksson    schedule 17.04.2021
comment
@MagnusEriksson не возражает против запроса, я просто забыл ввести $ на нем. Да, вы правы насчет второго комментария, извините, если непонятно. Это лучший английский, на котором я могу говорить.   -  person Chepky Pie    schedule 17.04.2021
comment
При публикации здесь убедитесь, что код, который вы публикуете, не содержит новых и несвязанных синтаксических проблем. Вы действительно должны скопировать/вставить свой фактический код вместо того, чтобы переписывать его здесь (по этой конкретной причине).   -  person Magnus Eriksson    schedule 17.04.2021
comment
Вы пытаетесь показать маршрут и цену выбранного типа?   -  person Kevin Gales    schedule 17.04.2021
comment
@KevinGales Нет, я хочу показать цену выбранного маршрута   -  person Chepky Pie    schedule 18.04.2021


Ответы (1)


Вы можете использовать javascript для этого

<script>
document.querySelector("#isprice").addEventListener('input', function () {  //listen to the specific input with id isprice
  if(document.querySelector('#to').querySelector('option[value="'+this.value+'"]')){ //get values from options under datalist id to
    document.getElementById("price").innerHTML="Price: KWD "+ this.value;   //display values on the paragraph id price
  }
});

</script> 

Затем в вашем HTML замените на

<label>Route</label>
        <input list="to" name="to" id="isprice">
        <datalist id="to">
            <option value=""></option>
           <?=$routes?> //list your routes-price pair as options
        </datalist>

        <p id="price">Price: KWD 0</p> // or you can leave it as <p id="price"></p>

В вашем PHP вам нужно создать теги параметров, чтобы вы могли назначить каждому маршруту его цену.

$sql = "SELECT * FROM table1"; 
   $retval = mysqli_query( $conn, $sql );
   while($row = mysqli_fetch_assoc($retval)) {

         $routes .=  "<option value=\"".$row['price']."\">".$row['route']."</option>"; // assign prices to routes
      
   }
person Kevin Gales    schedule 18.04.2021