<?php
// Selects 1
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='1' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_1 = $resultSet->fetch_all();
// Selects 2
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='2' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_2 = $resultSet->fetch_all();
// Selects 3
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='3' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_3 = $resultSet->fetch_all();
У меня есть 3 отдельных оператора выбора, в которых изменяется только «тип». возвращаемые значения позже используются в другом коде. Могу ли я создать класс, в котором есть только 1 оператор для всех 3 типов, и быть используется позже в:
<?php foreach($result_1 as $item){
echo '
<div class = "col-md-3">
<div class = "square">
<input name = "cb_id[]" class = "checkBox" type = "checkbox"
value = "'.$item[0].'">
<p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] .
'$<br>Size: ' .$item[4] . ' MB</p>
</div>
</div>';}
?>
<?php foreach($result_2 as $item){
echo '
<div class = "col-md-3">
<div class = "square">
<input name = "cb_id[]" class = "checkBox" type = "checkbox"
value = "'.$item[0].'">
<p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] .
'$<br>Weight: ' .$item[5] . ' KG</p>
</div>
</div>';}
?>
<?php foreach($result_3 as $item){
echo '
<div class = "col-md-3">
<div class = "square">
<input name = "cb_id[]" class = "checkBox" type = "checkbox"
value = "'.$item[0].'">
<p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] .
'$<br>Dim: ' .$item[6] . 'X' .$item[7] . 'X' .$item[8] . '</p>
</div>
</div>';}
?>
Я сам смущен этим, поэтому любая помощь приветствуется
Я думаю, что здесь было бы разумно выполнить какую-либо функцию. Он принимает Type в качестве входных данных и будет параметром в вашем sql чтобы ты мог bindparam. Затем вы можете просто вызвать функцию и передать тип. Эта функция мог является методом внутри класса, но, не зная вашего кода, я не мог предположить, что будет иметь здесь смысл в качестве класса (возможно, класса maininfo?)
Если вы хотите пройти через класс, создайте файл класса и создайте там, где вам нужно определить класс, и определите общедоступную функцию, в которой вы берете ввод 1, 2, 3, ... и возвращаете массив, который вам нужно поймать из интерфейса и отображать в виде таблицы.






Первый подход. используя цикл:
$results = [];
for ($i = 1; $i <= 10; $i++) {
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$i' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
array_push($results, $resultSet->fetch_all());
}
Второй подход. используя функцию:
function returnResult($type){
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$type' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
return $resultSet->fetch_all();
}
$result1 = returnResult(1);
$result2 = returnResult(2);
$result3 = returnResult(2);
третий подход OO PHP
class Foo {
public function returnResult($type){
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$type' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
return $resultSet->fetch_all();)
}
}
$SomeObject = new Foo;
$result1 = $SomeObject->returnResult(1);
$result2 = $SomeObject->returnResult(2);
$result3 = $SomeObject->returnResult(3);
Я написал здесь код. Не тестировал. На вашем месте я бы использовал первый подход
PS. конечно, вы должны указать $ db во всех трех подходах.
Третий подход был тем, что я искал, спасибо за такой быстрый ответ
Почему не просто функция? Почему класс?