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 に答える