我正在学习PHP
以便将一些模块开发到我的软件Dolibarr
中,我想知道如何循环查询结果并显示数组中的每一行。
这是我的剧本:
/*
* View
*/
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
$num = $db->fetch_row($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Affichage des 2 dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$langs->trans("Utilisateur").'</a></td><td align="right">'.$num[0]." ".$num[1]." ".$num[2].'</td>';
$LastLogin.= "</tr>";
}
print $LastLogin;
print '</table>';
到目前为止,我只返回查询的第一行。我之前从未在PHP中编程,我想知道如何将查询中的每一行显示到我的数组中?
我必须将fetch_row
更改为fetch_array
?
或者,或许更好,将我的数组拆分为3列(列名,列名,列datelastlogin)
这样的事情:
我真的不明白我该怎么做。
感谢您的帮助
编辑:
我编辑了我的剧本:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
while($num = $resql->fetch_assoc())
{
$nums[] = $num;
}
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
print '</table>';
但阵列没有很好地展示:
答案 0 :(得分:1)
Helloo再次:)
首先,我必须说你的错误与你刚接触PHP的事实无关 - 但我认为你缺少一些编程基础知识,因为phyton在这种情况下的工作方式相同。
让我们看看你的代码:
if (! empty($conf->user->enabled))
{
foreach($nums as $num)
{
$LastLogin = '<tr class="oddeven">';
$LastLogin.= '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
$LastLogin.= "</tr>";
}
}
print $LastLogin;
这里的问题是你一直覆盖$LastLogin
。这在phyton中的作用相同。所以你实际上有两个选择:
我不会为1
做一个例子,因为它只将print $LastLogin
放在foreach循环中 - 你不需要一个例子。
我将在此向您展示下面的代码我将如何在您的案例中编写它:
$query = "SELECT u.lastname as nom, u.firstname as prenom, u.datelastlogin as lastlogin";
$query.= " FROM ".MAIN_DB_PREFIX."user as u";
$query.= " ORDER BY lastlogin DESC LIMIT 2";
$resql = $db ->query($query);
//$num = $db->fetch_array($resql);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Dernières connexions").'</th></tr>';
if (! empty($conf->user->enabled)) {
while($num = $resql->fetch_assoc()) {
print '<tr class="oddeven">';
print '<td><a href="index.php">'.$num['nom'].'</a></td><td>'.$num['prenom'].'</td><td>'.$num['lastlogin'].'</td>';
print '</tr>';
}
}
print '</table>';
实际上没有必要将所有结果保存到var中并且一直追加到它。只需直接打印结果,没有什么可以阻止你。当然,我们现在可以解决逻辑分离问题。观点 - 但在这种情况下,并不需要它。
希望它有所帮助:)