2013-07-10 33 views
0

所以我的目標是輸出一些MySQL信息到表。我希望它每18記錄開一個新的專欄。這裏是我當前的代碼:Mysqli輸出到表

$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量的新列。這可能嗎?

+0

它可以完成,但在x次的時間後開始新行更容易。 –

+0

好吧,我會怎麼做? – dkeeper09

回答

-1

正如評論中所述,它可以完成,但在x次的時間後開始新行更容易。使用$result->num_rows

  • 計算列由所需的行劃分總的行使用表
  • 顯示所需的列

    1. 計數總行
    2. 使用modulus operator以產生新的行,如果$i % $columns ==0

    TRY

    $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++; 
    } 
    

    如果需要,您還可以硬編碼列號。