0

所以我的目标是将一些mysql信息输出到一个表中。我希望它每 18 条记录开始一个新列。这是我当前的代码:

$hostname = "localhost"; //SET SERVER/HOSTNAME
    $dbusername = "username"; //SET DATABASE USERNAME
    $dbname = "database"; //SET DATABASE NAME
    $dbpassword =  "password"; //SET DATABASE USERNAME
    $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 

    if (!$link)
    { 
        die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); 
    } 

    $continent='Africa';

    //GET AFRICA Countries
    $sql = "SELECT country FROM countries WHERE continent = '$continent';"; 
    $result = mysqli_query($link, $sql, MYSQLI_USE_RESULT);
    if (!result) 
    { 
        echo 'Error: ', $mysqli->error;
    }
        while($row = $result->fetch_assoc()){
        $country = $row['country'];
        echo "$country<br>";
    }

现在它只是在一个直列中输出列表,但我希望它在 x 次后开始一个新列。那有可能吗?

4

1 回答 1

-1

正如评论中所讨论的,它可以完成,但在 x 次后开始新行更容易。

  1. 使用计算总行数$result->num_rows
  2. 通过将总行数除以所需行数来计算列
  3. 使用表格显示所需的列
  4. 如果使用模运算符生成新行$i % $columns ==0

尝试

$requiredRows= 18; 
$rows = $result->num_rows ;
$columns = ceil($rows/$requiredRows);
$i = 0;
while($row = $result->fetch_assoc()) 
    {
    if ($i == 0) {
        echo "<table><tr><td>";
    }
    elseif ($i % $columns) {// <> 0
        echo "</td>\n";
        echo "<td>\n";
    }else{//$i % $columns == 0
        echo "</td>\n";
        echo "</tr>\n";
        echo "<tr>\n";
        echo "<td>\n";
    }
    echo $row['country'];
    $i++;
}

如果需要,您还可以对列号进行硬编码。

于 2013-07-12T08:18:32.377 回答