如何在php中显示多个总记录中的一个表行中的两个记录


how to display two records in a table row out of multiple total records in php?

我必须在一个表中显示SQL记录(以div显示),在该表中,一行只能显示2条记录。记录的总数,即n不是固定的,也不是数组。行数将取决于可用记录的数量。我尝试了几种方法,例如定义"define('TABLE_COLS',2);"和在while循环中使用for循环,但它们没有给我所需的结果。我正在处理的代码如下:

    echo "<table>";
    $sql = "Some SQL";
    $result = mysql_query($sql);
    $num = mysql_numrows($result);
    $i = 0;
    define('TABLE_COLS', 2);
    echo "<tr>";
        while ($i < $num) {
        //  for($i=0; $i<=2; $i++){
                $name = mysql_result($result,$i,"name");
                $Count = mysql_result($result,$i,"count");                      
        //  echo "<tr>";
                echo "<td>";
                    echo "<div>";
                        echo "<div>";
                            echo "$name";
                        echo "</div>";
                        echo "<div>";
                            echo "$Count";
                        echo "</div>";      
                    echo "</div>";
                echo "</td>";       
        //  echo "</tr>";
            $i++;
            }
    echo "</tr>";
    mysql_free_result($result);
echo "</table>";

我想要的结果是:现在,我必须添加相应事件id的计数值,并将其显示在结果表中,如下所示。我是PHP的新手,所以请帮助我。任何评论都非常感谢。

+------------+   +--------------+
|  Abby Bory |   |  Manny Mua   |
+------------+   +--------------+
|      4     |   |     22       |
+------------+   +--------------+
+------------+   +--------------+
|  Senyz Dory|   |  Kory Bua    |
+------------+   +--------------+
|      8     |   |     27       |
+------------+   +--------------+ 

您可以尝试这是否有助于解决您的问题。我会声明多个变量,以便于管理,例如更改每行的列。给定的代码应该适应每行任意数量的列。如果这是你需要的,请告诉我。此外,请考虑使用mysqli而不是mysql

更新1:包括样本数据库格式以标准化格式

database.php

<?php
$db_servername = "DATABASE SERVER NAME";
$db_username = "DATABASE USERNAME";
$db_password = "DATABASE PASSWORD";
$db_database = "DATABASE TABLE";
// Create connection
$con = new mysqli($db_servername, $db_username, $db_password, $db_database);
// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}
?>

示例代码

require "database.php";
global $con;
echo "<table>";
$sql = "SOME SQL";
$result = mysqli_query($con, $sql);
// define number of columns per row
$num_col = 2; 
// calculate total number of row based on columns per row defined
$total_row = intVal(mysqli_num_rows($result) / $num_col);
// calculate left over result if the division result is not perfect number
$left_over = mysqli_num_rows($result) % $num_col;
$counter = 0;
while($counter < $total_row){
   echo '<tr>';
   for($i = 0; $i < $num_col; $i++){
       $row = mysqli_fetch_array($result);
       echo "<td>";
       echo "<div>".$row["name"]."</div>";
       echo "<div>".$row["count"]."</div>";
       echo "</td>";
   }
   echo '</tr>';
   $counter++;
}
echo "<tr>";
while($left_over > 0 ){
   $row = mysqli_fetch_array($result);
   echo "<td>";
   echo "<div>".$row["name"]."</div>";
   echo "<div>".$row["count"]."</div>";
   echo "</td>";
   $left_over--;
}
echo "</tr>";
echo "</table>";

这可以提供一些想法。您必须注意最后一条记录,因为在每次迭代中都会读取两条记录。

    echo "<table>";
    $sql = "Some SQL";
    $result = mysql_query($sql);
    $num = mysql_numrows($result);
    $i = 0;
    while ($i < $num) {
        $name1 = mysql_result($result,$i,"name");
        $Count1 = mysql_result($result,$i,"count");                      
        $name2 = mysql_result($result,$i+1,"name");
        $Count2 = mysql_result($result,$i+1,"count");                      
         echo "<tr>";
                echo "<td>";
                    echo "$name1";
                echo "</td>";
                echo "<td>";
                    echo "$name2";
                echo "</td>";
          echo "</tr>";
          echo "<tr>";
                echo "<td>";
                    echo "$count1";
                echo "</td>";
                echo "<td>";
                    echo "$count2";
                echo "</td>";
          echo "</tr>";
            $i+=2;
            }
    mysql_free_result($result);
echo "</table>";

简单的做法是使用bootstrap css在div上创建它。

foreach($row = mysqli_fetch_array($result)){
   echo '<div class="col-sm-3">'.$row['name'].'<br />'.$row['count'].'</div>';
}

如您所见,"col-sm-3"将把一行划分为四列。"col-sm-6"将行划分为两列。

col-sm-12将具有一行一列。

希望能有所帮助。

然后试试,

echo "<table>";
$sql = "Some SQL";
$result = mysqli_query($sql);
$count = 0;
//No of columns per row    
$noColumns = 2;
while($row = mysqli_fetch_array($result)){
    if( $count % $noColumns == 0){
        echo '<tr>';
    }
    echo '<td><div>'.$row['name'].'<br />'.$row['count'].'</div></td>';
    $count++;
    if( $count % $noColumns == 0){
        echo '</tr>';
    }
}
 if( $count % $noColumns != 0){
    //Close the last row
    $remainCols = $noColumns - ($count % $noColumns);
    echo '<td colspan="'.$remainCols.'">&nbsp;</td>';
    echo '</tr>';
 }
echo '</table>';
mysqli_free_result($result);

它是基于Mod(%)算子的计算。希望它能解决。我使用了mysqli作为参考,而不是mysql。

这个解决方案解决了我的问题。

$result = mysql_query($sql);
$num_col = 2; 
$total_row = intVal(mysql_num_rows($result) / $num_col);
$i = 0;
while($i < $total_row){
   echo '<tr>';
   for($i = 0; $i < $num_col; $i++){
       $row = mysql_fetch_array($result);
       echo "<td>";
       echo "<div>".$row["name"]."</div>";
       echo "<div>".$row["count"]."</div>";
       echo "</td>";
   }
   echo '</tr>';
   $i++;
   }

感谢所有帮助我的人。

嗨,这是我找到的最简单的答案,我尝试了几种方法,但都失败了,这是的正确方法

<table class="table" id="table">
            <?php for($loop = 0; $loop <= 7; $loop++) : ?>
                <td>
                    <input type="checkbox" name="brand[]" value="<?php echo $loop; ?>"> Brand <?php echo $loop; ?>
                </td>
            <?php endfor; ?>
        </table>

不要使用tr,在风格上做一些类似的事情

#table td {
width: 50%;
float: left;

}