我正在开发一个PHP函数,它使用MySQL查找存储在数据库表中的学校的部门列表,然后如果结果超过1个部门,则将结果拆分为两列。
我已经尝试过,而且foreach循环,由于某种原因,我不断得到一个无限循环。我不知道我哪里出错了。
我的功能如下:
function translateDegreeLists($school) {
require('includes/EM-langSelect-4.php');
$values = array();
$coacs_code = 1;
$cob_code = 2;
$avcon_code = 4;
$coe_code = 3;
$cose_code = 5;
$cotm_code = 6;
$query = "SELECT dept_name, ".$content." AS content FROM explore_majors.departments WHERE school_id = ".$school."";
$result = mysql_query($query);
$nums = mysql_num_rows($result);
if($nums == 1) {
echo '1 Option';
}
elseif(($nums / 2) == 2) {
echo '2 Columns with 2 Options';
}
elseif (($nums / 2) >= 3) {
echo '2 Columns with more than 3 Options';
}
echo '<div class="column column-1-2">';
for ($i=0; $i < $nums; $i++)
{
$row = mysql_fetch_assoc($result);
$dept_name = $row['content'];
echo '<h4>'.$dept_name.'</h4>';
echo '<ul>';
echo '<li>test</li>';
echo '</ul>';
}
echo '</div>';
}
注意:查询中的$ content是从EM-lang-4.php中提取的,它决定了浏览器语言,并在数据库中选择了相应的列。
这是函数的基础,因为上面的代码在同一列div中生成了4个部门的列表。
最终结果是我希望函数计算找到多少个部门,如果超过1个,则在2个div之间平均分配。除了里面的内容之外,div将是相同的。
任何想法我做错了什么?
答案 0 :(得分:1)
我认为问题是你每次都在for循环中运行mysql_fetch_assoc。循环的结构应如下:
while ($row = mysql_fetch_assoc($result)) {
$dept_name = $row['content'];
echo '<h4>'.$dept_name.'</h4>';
echo '<ul>';
echo '<li>test</li>';
echo '</ul>';
}
请注意,这不会格式化列,但您至少可以打印查询结果。
Php.net是你的朋友!请参阅documentation for mysql_fetch_assoc
中的示例一最后,mysql _ ***函数已被弃用,最终将从未来的php版本中删除!请参阅docs
中的红色警告