我必须在一个表中显示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.'"> </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;
}