Как отсортировать данные строк, полученные с помощью mysqli, в числовом порядке, начиная с 1

#php #html #mysqli

#php #HTML #mysqli

Вопрос:

У меня есть таблица со столбцом auto_increment в базе данных mysqli, и я хочу извлекать данные из этой таблицы для каждого пользователя, где бы имя пользователя ни появлялось в этой таблице. Я хочу отобразить эти полученные данные в html-таблице, в которой должен быть столбец с серийным номером, начинающийся с 1 и увеличивающийся на 1 для каждой строки в html-таблице. Мне сложно отображать мою таблицу в числовом порядке.

Я поискал в Google и прочитал некоторые похожие проблемы в Stackoverflow, но не смог найти решения.

 <?php $referralList = "SELECT * FROM referrals where sponsor='$username'";
$listResult = mysqli_query($conn,$referralList)or die(mysqli_error());
echo "<table class='table table-bordered table-hover table-striped'>";                            
echo "<thead><tr><th>amp;#8470;</th><th>Username</th><th>Phone amp;#8470;</th><th>Reg Date</th><th>Total Bonus</th><th>Status</th></tr></thead>";
if (mysqli_num_rows($listResult)<1) {
echo "<em style='color:red;'>You have no referral yet, invite people to start earning extra bonuses </em>";
} else {
while($listRow = mysqli_fetch_array($listResult)) {
$id = $listRow['userid'];
$referral = $listRow['username'];
$referralPhone = $listRow['phoneNumber'];
$regD = $listRow['reg_Date'];
$totalbonus = $listRow['totalbonus'];
if ($listRow['status']==0){
$status='<td style="background-color:hsla(0, 100%, 50%, 0.8)">Suspended</td>';
else if ($listRow['status']==2) {
$status='<td style="background-color:hsla(60, 100%, 50%, 0.8)">On Probe</td>'; 
}
else if ($listRow['status']==1) {
$status= '<td style="background-color:hsla(120, 100%, 40%, 0.8); color: white;">Active <i class="fa fa-check"></i></td>';
}
else {                                                  
$status='<td>Unknown</td>';
}
echo '<tbody><tr><td>', "$id", '</td><td>', "$referral", '</td><td>', "$referralPhone", '</td><td>', "$regD",'</td><td>', "$totalbonus", '</td><b>', "$status", '</b></tr></tbody>';
  } 
}
echo "</table>";
?>
  

Я хочу, чтобы в html-таблице был столбец с серийным номером, который упорядочивает строки в числовом порядке, начиная с 1, 2, 3, 4, 5, и т. д

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

1. Это просто. У вас почти получилось.

Ответ №1:

Я заменил ваш запрос статическим массивом, но он должен работать до тех пор, пока ваш запрос правильный. Обратите внимание, что я использую цикл foreach, в этом нет необходимости, ваш цикл while также будет работать так же хорошо.

 <?php 
    $listResult = [
                        ['userid'=>'101','username'=>'abc','phoneNumber'=>'1231231231','reg_Date'=>'03/22/2019','totalbonus'=>'5','status'=>'0'],
                        ['userid'=>'102','username'=>'def','phoneNumber'=>'5675675675','reg_Date'=>'03/22/2019','totalbonus'=>'10','status'=>'1'],
                        ['userid'=>'103','username'=>'xyz','phoneNumber'=>'6756756756','reg_Date'=>'03/22/2019','totalbonus'=>'12','status'=>'1'],
                    ];
    //$listResult = mysqli_query($conn,$referralList)or die(mysqli_error());
    echo "<table class='table table-bordered table-hover table-striped'>";                            
    echo "<thead>
            <tr>
                <th>Serial amp;#8470;</th>
                <th>amp;#8470;</th>
                <th>Username</th>
                <th>Phone amp;#8470;</th>
                <th>Reg Date</th>
                <th>Total Bonus</th>
                <th>Status</th>
            </tr>
        </thead>";
    if (empty($listResult)) {
    echo "<em style='color:red;'>You have no referral yet, invite people to start earning extra bonuses </em>";
    } else {
        $rowCount = 1;
        foreach($listResult as $listRow) {
            $id = $listRow['userid'];
            $referral = $listRow['username'];
            $referralPhone = $listRow['phoneNumber'];
            $regD = $listRow['reg_Date'];
            $totalbonus = $listRow['totalbonus'];
            if ($listRow['status']==0){
                $status='<td style="background-color:hsla(0, 100%, 50%, 0.8)">Suspended</td>';
            }else if ($listRow['status']==2) {
                $status='<td style="background-color:hsla(60, 100%, 50%, 0.8)">On Probe</td>'; 
            }
            else if ($listRow['status']==1) {
                $status= '<td style="background-color:hsla(120, 100%, 40%, 0.8); color: white;">Active <i class="fa fa-check"></i></td>';
            }
            else {                                                  
                $status='<td>Unknown</td>';
            }
            echo '<tbody><tr>**<td>', "$rowCount" ,'</td>**<td>', "$id", '</td><td>', "$referral", '</td><td>', "$referralPhone", '</td><td>', "$regD",'</td><td>', "$totalbonus", '</td><b>', "$status", '</b></tr></tbody>';
              $rowCount;
        }
    }
    echo "</table>";
    ?>
  

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

1. Большое вам спасибо @Yogesh, это действительно сработало. Большое спасибо.