Создание класса в объектно-ориентированном PHP - PullRequest
0 голосов
/ 05 июля 2018
  <?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>';}
    ?>

Я смущен этим, поэтому любая помощь приветствуется

1 Ответ

0 голосов
/ 05 июля 2018

Первый подход. используя цикл:

$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 во всех трех подходах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...