2015-04-25 33 views
-2

我正在学习PHP。如何最小化代码并避免重复?

我想计算所有科目在考试中缺课学生的人数。

我已经使用下面的代码来提取一个类和2个主题的数据。

我想计算四个班级和27个科目的缺席学生人数如何通过使用最小代码和避免重复来实现?

<?php 


/*Query to calculate number of absent students in FYBA in all 6 subjects. 

by counting studid (student id) 

Economics = marks1e*/ 


$e = mysql_query('select count(studid) from examdbf1 where exam_id = 14153 and faculty = 1 and sem = 1 and repeater = 1 and marks1e = \'AA\''); 

$ea = mysql_fetch_array($e); 

echo '<br>'. $ea['count(studid)'] . '<br>'; 


/*Marathi Optional = marks2e*/ 


$mo = mysql_query('select count(studid) from examdbf1 where exam_id = 14153 and faculty = 1 and sem = 1 and repeater = 1 and marks2e = \'AA\''); 

$moa = mysql_fetch_array($mo); 

echo '<br>'. $moa['count(studid)'] . '<br>'; 
+0

使用mysqli_而不是mysql_阅读http://php.net/manual/en/function.mysql-query.php – user1844933

+1

(1)找到你的可重复性与变化的数据,(2)把你的数据改变成一个数组,(3)把你的可重复数据放在一个循环中,即。 * for()*,* foreach()*,* while()*或函数,用可变数据的占位符,(4)使用数组运行循环/函数,(5)更新数据库库* mysql_ *到* mysqli *或* PDO * – Sean

+0

@Sean按照您的建议创建了数组和循环。无法理解如何为可变数据添加占位符。 '$ m = array(“marks1e”,“marks2e”,“marks3e”,“marks4e”,“marks5e”,“marks6e”); $($ x = 0; $ x <$ mcount; $ x ++){ $ e = mysql_query('select countdb(studid)from examdbf1 where exam_id = 14153和faculty = 1和sem = 1,repeater = 1和*** marks1e *** = \'AA \''); $ ea = mysql_fetch_array($ e); echo'
'。 $ ea ['count(studid)']。 '
';' –

回答

0

从您的评论使用代码,改变你的***marks1e***$m[$x] -

$m = array("marks1e", "marks2e", "marks3e", "marks4e", "marks5e", "marks6e"); 
$mcount = count($m); 
for($x = 0; $x < $mcount; $x++) { 
    $e = mysql_query('SELECT count(studid) FROM examdbf1 WHERE exam_id = 14153 AND faculty = 1 AND sem = 1 AND repeater = 1 AND '.$m[$x].' = \'AA\''); 
    $ea = mysql_fetch_array($e); 
    echo '<br>'.$m[$x].': '. $ea['count(studid)'] . '<br>'; 
} 

同样,因为你只从$m改变值,你可以做一个foreach() -

$m = array("marks1e", "marks2e", "marks3e", "marks4e", "marks5e", "marks6e"); 
foreach($m as $n) { 
    $e = mysql_query('SELECT count(studid) FROM examdbf1 WHERE exam_id = 14153 AND faculty = 1 AND sem = 1 AND repeater = 1 AND '.$n.' = \'AA\''); 
    $ea = mysql_fetch_array($e); 
    echo '<br>'.$n.': '. $ea['count(studid)'] . '<br>'; 
} 
+0

非常感谢。 –

+0

你的代码工作完美。你的建议减少了我的代码只有12行。此前它是60行。我希望你的建议能够进一步改进代码。每门考试分为两个学期和两个学院,并有定期和中继学生参加考试。每学期有不同的科目数量,例如6,7或8.如何修改上述代码,以便两个学期和两个院系可以显示缺席报告。无论是嵌套循环的方式,请给出提示。 –