php mysql打印月份和表内容
我需要列一张打印月份的清单,以及他们是否有工资 首先,我用月份名称创建一个数组:php mysql打印月份和表内容,php,arrays,printing,prepared-statement,Php,Arrays,Printing,Prepared Statement,我需要列一张打印月份的清单,以及他们是否有工资 首先,我用月份名称创建一个数组: $month_names = array("January","February","March","April","May","June","July","August","September","October","November","December"); 然后我有12个月的列:值1表示付费,值0表示未付费。所以我做了一个变量来知道它是否被支付: if ($row['month1'] == '1') {
$month_names = array("January","February","March","April","May","June","July","August","September","October","November","December");
然后我有12个月的列:值1表示付费,值0表示未付费。所以我做了一个变量来知道它是否被支付:
if ($row['month1'] == '1') {
$row['month1'] = 'Paid';
} else $row['month1'] = 'Non-Paid';
有更好的方法吗
该列表只有两列:“每月付款”和“状态”
而while或foreach应该是这样的:
echo '
<li><a class="months">'$array[$month_names]=>$value'</a></li>
<li><a class="status">'.$row['month1'].'</a></li>
';
echo'
“$array[$month\u names]=>$value”
“.$row['month1']”
';
我不太确定,我该怎么做
谢谢大家! 您正处于正确的轨道上,将您的逻辑与演示分开。这是一件好事。对于您的问题,您可以检查所有月份值,并将结果存储在另一个数组(我们称之为
$paid
)中,该数组按月份编号进行索引。然后使用$monthNames
数组映射到$paid
中的相应值。这将设置您在$monthNames
数组中循环并创建HTML
以下内容将满足您的需要:
<?php
$monthNames = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December");
$paid = array(); //Placeholder for paid months.
$row = $result->fetch_array(); //Assuming MySQLi API (you are using that or PDO...I hope...)
for($i = 1; $i < 13; $i++) {
$month = "month" . $i;
if($row[$month] == 1) {
$paid[] = "Paid";
} else {
$paid[] = "Not Paid";
}
}
//Now make the HTML list
print("<ul>\n");
foreach($monthNames as $key => $month) {
print('<li><a class="months">' . $month . '</a></li>' . "\n");
print('<li><a class="status">' . $paid[$key] .'</a></li>' . "\n");
}
print("</ul>");
?>
输出将沿以下线路(取决于DB数据):
- 一月
- 支付
- 二月
- 支付
- 行军
- 未付
- 四月
- 支付
- 五月
- 支付
- 六月
- 支付
- 七月
- 支付
- 八月
- 未付
- 九月
- 支付
- 十月
- 支付
- 十一月
- 未付
- 十二月
- 支付
希望对你有所帮助 如果我没弄错的话,你有这样一个数组:
$rows = array(
array('month' => 1, 'paid' => 0),
array('month' => 2, 'paid' => 1),
array('month' => 4, 'paid' => 0),
array('month' => 5, 'paid' => 1),
array('month' => 7, 'paid' => 1),
array('month' => 8, 'paid' => 0),
);
<ul class="rows">
<?php foreach ($rows as $month => $status): ?>
<!-- We replace all non-numeric caracters in the key of the element and then sustract one to match the zero base index -->
<li><a href="#" class="month"><?php echo $month_names[ preg_replace('/[^0-9]/', '', $month) - 1 ] ?></a></li>
<li><a href="#" class="status"><?php echo $status ? 'Paid' : 'Non-Paid' ?></a></li>
<?php endforeach ?>
</ul>
在这种情况下,你可以这样做
<ul class="rows">
<?php foreach ($rows as $row): ?>
<li><a href="#" class="month"><?php echo $month_names[$row['month']] ?></a></li>
<li><a href="#" class="status"><?php echo $row['paid'] ? 'Paid' : 'Non-Paid' ?></a></li>
<?php endforeach ?>
</ul>
那么你应该这样做:
$rows = array(
array('month' => 1, 'paid' => 0),
array('month' => 2, 'paid' => 1),
array('month' => 4, 'paid' => 0),
array('month' => 5, 'paid' => 1),
array('month' => 7, 'paid' => 1),
array('month' => 8, 'paid' => 0),
);
<ul class="rows">
<?php foreach ($rows as $month => $status): ?>
<!-- We replace all non-numeric caracters in the key of the element and then sustract one to match the zero base index -->
<li><a href="#" class="month"><?php echo $month_names[ preg_replace('/[^0-9]/', '', $month) - 1 ] ?></a></li>
<li><a href="#" class="status"><?php echo $status ? 'Paid' : 'Non-Paid' ?></a></li>
<?php endforeach ?>
</ul>
Wow!谢谢ofc这很有帮助!:)嗯,使用printf和echo有什么区别吗?实际上,我使用echo是因为我知道,使用printf更好?@ChazyChazprint
与printf
相比没有什么问题。如果有什么不同的话,printf
函数在处理字符串中的变量时会更好,因为您可以更好地控制格式。对于带有一个或两个变量的基本字符串,print
可以正常工作。好的,谢谢,我将更改用于打印的回显。谢谢你的提示:)@ChazyChaz没问题。值得一提的是,使用echo
也没有任何问题,我只是更喜欢print
或printf
my strings:)有关echo vs.print主题的更多信息,请参见本文。我可以自由添加更多带有$variables的列吗?如果语句选择了该表。