Перебрать несколько массивов и динамически выводить результат - PullRequest
0 голосов
/ 01 июня 2018

Я борюсь с этим.Как можно перечислить все устройства, их модели и поставщиков из моей базы данных?Данные хранятся через запятую в полях устройство, модель и поставщик.

<?php
  while ($row = mysqli_fetch_array($result)) {
    $device_explode = explode(',', $row['device']);
    $model_explode = explode(',', $row['model']);
    $supplier_explode = explode(',', $row['supplier']);

    $device = array(array($device_explode[0]), //count function? How would I do that?
                    array($model_explode[0]),
                    array($supplier_explode[0])
                  );

    echo "<table border='1'>
        <tr>
            <th>Møterom</th>
            <th>Romnummer</th>
        <th>Lokasjon</th>
        <th>Antall sitteplasser</th>
        <th>Tilgjengelig utstyr</th>
        <th>Bilde av rommet</th>
        <th>Endre</th>
        <th>Slett</th>
        </tr>
      <tr>
        <td>".$row['name']."</td>
        <td>".$row['roomnbr']."</td>
        <td>".$row['location']."</td>
        <td>".$row['seats']."</td>
        <td>".$device[0][0]."<br>".$device[1][0]."<br>".$device[2][0]."<br></td> //also count?
        <td><img src='../img/uploads/".$row['img']."' width='150px' ></td>
        <td><a href='?p=editconfroomv2&id=".$row['id']."'>Endre</a></td>
        <td><a href='./index.php?p=deleteconfroomdb&id=".$row['id']."' class='delete'>Slett</a></td>
      </tr>
      </table>";
  }
?>

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Я бы предложил зацикливать массивы в разметке и генерировать выходные данные с использованием синтаксиса HTML-шаблонов и альтернативных структур управления.

Некоторые вещи, которые я сделал [не связаны непосредственно с вопросом]:

  • переключил синтаксис array () для сокращения [это можно сделать начиная с версии 5.4]
  • переключился с использования одного эха на использование синтаксиса html-шаблонов [путем исключения не динамических частей из php ивывод динамических частей в]
  • Переключение с использования оператора echo на использование сокращения
  • Переключение на альтернативные структуры управления

PHP документация для строк

<?php

while ($row = mysqli_fetch_array($result)) {
    $device_explode = explode(',', $row['device']);
    $model_explode = explode(',', $row['model']);
    $supplier_explode = explode(',', $row['supplier']);

    //I am assuming you want to loop trough all exploded fields related to each row
    $devices = [
        $device_explode,
        $model_explode,
        $supplier_explode
    ];

?>


<?php while(($row = mysqli_fetch_array($result))) : ?>
    <table border='1'>
        <tr>
            <th>Møterom</th>
            <th>Romnummer</th>
            <th>Lokasjon</th>
            <th>Antall sitteplasser</th>
            <th>Tilgjengelig utstyr</th>
            <th>Bilde av rommet</th>
            <th>Endre</th>
            <th>Slett</th>
        </tr>
        <tr>
            <td><?= $row['name'] ?></td>
            <td><?= $row['roomnbr'] ?></td>
            <td><?= $row['location'] ?></td>
            <td><?= $row['seats'] ?></td>
            <td>
            <?php foreach ($devices as $deviceSpecs) :  //Here we loop trough the first dimension fo the array ?>
                <?php foreach ($deviceSpecs as $deviceSpec): //Here we loop trough the second dimension ?>
                <?= $deviceSpec ?><br>
                <?php endforeach; ?>
            <?php endforeach; ?>
            </td>
            <td><img src='../img/uploads/<?= $row['img'] ?>' width='150px' ></td>
            <td><a href='?p=editconfroomv2&id=<?= $row['id'] ?>>Endre</a></td>
            <td><a href='./index.php?p=deleteconfroomdb&id=<?= $row['id'] ?>' class='delete'>Slett</a></td>

        </tr>
    </table>
<?php endwhile; ?>
0 голосов
/ 01 июня 2018

Это можно сделать таким образом (если я правильно понимаю структуру вашей таблицы).Я предполагаю, что $device_explode, $model_explode и $supplier_explode имеют одинаковое количество элементов:

<?php
  // Table Header
  echo "<table border='1'>
        <tr>
        <th>Møterom</th>
        <th>Romnummer</th>
        <th>Lokasjon</th>
        <th>Antall sitteplasser</th>
        <th>Tilgjengelig utstyr</th>
        <th>Bilde av rommet</th>
        <th>Endre</th>
        <th>Slett</th>
        </tr>";
  while ($row = mysqli_fetch_array($result)) {
    $device_explode = explode(',', $row['device']);
    $model_explode = explode(',', $row['model']);
    $supplier_explode = explode(',', $row['supplier']);

    // Table rows   
    $td = '';
    $td .= 
        "<tr>
            <td>".$row['name']."</td>
            <td>".$row['roomnbr']."</td>
            <td>".$row['location']."</td>
            <td>".$row['seats']."</td>
            <td>";

    for ($i = 0; $i < count($device_explode); $i++) {
        $td .=$device_explode[$i]." ".$model_explode[$i]." ".$supplier_explode[$i]."<br>";
    } 

    $td .= 
            "</td>
            <td><img src='../img/uploads/".$row['img']."' width='150px' ></td>
            <td><a href='?p=editconfroomv2&id=".$row['id']."'>Endre</a></td>
            <td><a href='./index.php?p=deleteconfroomdb&id=".$row['id']."' class='delete'>Slett</a></td>
        </tr>";
    echo $td;   
  }
  echo "</table>";
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...