Как исправить, чтобы печатался пять раз вместо 2 (PHP)?

#javascript #php #css #html

#javascript #php #css #HTML

Вопрос:

Мне нужна помощь с этим циклом for. Я хочу, чтобы он печатал элементы управления на стороне строки для каждого элемента в списке, но его список 5 вместо 2 наборов элементов управления.

 <tbody>
<?php
//get list of supplies
$numOfRows = 0;

$result = mysqli_query($conn,"SELECT * FROM supplies");

while ($row = mysqli_fetch_assoc($result)) {
  echo "<tr>";
  foreach ($row as $item) {
    echo '<td>' . $item . '</td>';
    $numOfRows   ;
  }
 //controls
  for ($i = 0;$i <= $numOfRows; $i  ) {
    echo '<td><a><i class="fas fa-edit"></i></a><a><i class="fas fa-trash-alt">
 </i></a></td>';                                          
  }
}
echo '</tr>';
?>
</tbody>
  

Комментарии:

1. Якоря, которые вы PHP генерируете, недействительны.

2. О да. Они пока ничего не делают.

Ответ №1:

просмотрите свой код, во-вторых, используется переменная numOfRows, которая вообще не подходит, вы повторяете столько строк, сколько есть в вашей таблице, не только 5 раз, если у вас есть 100 записей, то вы увидите, что TD печатается 100 раз, кстати, вы можете поместить эти 2 кнопки в один TD, тогда вам вообще не понадобится вторая

Ответ №2:

Я не думаю, что для элементов управления требуется другой цикл. Попробуйте это, я надеюсь, это поможет вам. Спасибо

 <?php

$result = mysqli_query($conn,"SELECT * FROM supplies");

while ($row = mysqli_fetch_assoc($result)) {
  echo "<tr>";
  foreach ($row as $item) {
    echo '<td>' . $item . '</td>';
    echo '<td><a><i class="fas fa-edit"></i></a><a><i class="fas fa-trash-alt">
      </i></a></td>';
    }                                          
  }
}
echo '</tr>';
?>
  

Ответ №3:

Если вы хотите, чтобы каждый элемент в отдельной строке отображал элемент ( $item ) в первом столбце и ссылки редактирования / удаления во 2-м столбце, вам нужно только while просмотреть каждую найденную строку.

 while ($row = mysqli_fetch_assoc($result)) {
  echo "<tr>";
  echo '<td>' . $item . '</td>';
  echo '<td>
        <a><i class="fas fa-edit"></i></a>
        <a><i class="fas fa-trash-alt"></i></a>
        </td>';
  echo '</tr>';
}
  

Ответ №4:

  // In your code you have the 
 // "<tr>" element inside of your loop. 
 // It needs to come before your loop. Try the code below

// This is where you need <tr>
 echo "<tr>";
while ($row = mysqli_fetch_assoc($result)) {
  // this is where you had tr // echo <tr>
  foreach ($row as $item) {
    echo '<td>' . $item . '</td>';`enter code here`
    $numOfRows   ;
  }
 //controls
  for ($i = 0;$i <= $numOfRows; $i  ) {
    echo '<td><a><i class="fas fa-edit"></i></a><a><i class="fas fa-trash-alt">
 </i></a></td>';                                          
  }
}
echo '</tr>';