[英]Is a “switch” the best to use in the following scenario?
我在php中有很长的代码,可以通过使用switch
其他任何方法来使其更短吗? 我有一个工资表,不同的州有相同名称的不同工资率。 我想在表中插入一个值array
,其中有一个特定的名称( desg
)和state
,然后据此计算速率。
表:
id desgn rate state
1 MAZDOOR 6600 MN
2 SKD-I 10890 MN
3 SKD-I 11400 MZ
4 SKD-II 9270 MN
5 SKD-II 9300 MZ
到目前为止,我的脚本是:
if(!empty($_POST['u'])) {
foreach ($_POST['u'] as $uid) {
$sql=mysql_query("select * from cpl_pay_temp where id='$uid' ");
while ($cal = mysql_fetch_array($sql)) {
$ticket=$cal['ticketno'];
// $month_yr=$_POST['month'];
$desgn=$cal['desg'];
$empname=$cal['name'];
$empdesg=$cal['desg'];
$cat=$cal['sex'];
$father=$cal['fathersname'];
$present=$cal['day_present'];
$state=$cal['state'];
if(($desgn=='MAZDOOR')&& ($state=='MZ')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='MAZDOOR' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='MAZDOOR')&& ($state=='MN')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='MAZDOOR' and state='MN'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-I') && ($state=='MZ')){
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-I' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-I') && ($state=='MN')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-I' and state='MN'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-I') && ($state=='MZ')){
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-I' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-II') && ($state=='MN')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-II' and state='MN'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-II') && ($state=='MZ')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-II' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-III') && ($state=='MN')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-III' and state='MN'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='SKD-III') && ($state=='MZ')) {
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='SKD-III' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='HSKD') && ($state=='MN')){
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='HSKD' and state='MN'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
if(($desgn=='HSKD') && ($state=='MZ')){
$sql_rate=mysql_query("select * from cpl_rate_mast where desg='HSKD' and state='MZ'");
$rate=mysql_result($sql_rate,$i,'rate') ;
$pay=round($present*($rate/$days));
}
mysql_query("insert into cpl_pay(billno,ticketno,name,desg,sex,fathersname,day_present,total_wages,from_date,to_date,status,state) values('$vrno','$ticket','$empname','$desgn','$cat','$father','$present','$pay','$fdate1','$tdate2','Y','$state' ) ") or die(mysql_error());
这是我的评论的快速演示,如果您发现要在整个页面中复制和粘贴相同的代码,则可以重新编写脚本。 您似乎并未在代码段中包含所有变量,所以我不能保证它会照常工作。 旁注,您需要为数据库连接切换到PDO
或mysqli_
:
<?php
function FetchCPL($array = false)
{
$rate = 0;
$design = (!empty($array['design']))? mysql_real_escape_string($array['design']) : false;
$state = (!empty($array['state']))? mysql_real_escape_string($array['state']) : false;
$count = (!empty($array['count']) && is_numeric($array['count']))? $array['count'] : 1;
if($design && $state) {
$sql_rate = mysql_query("select * from `cpl_rate_mast` where `desg` = '".$design."' and `state` = '".$state."'");
$rate = mysql_result($sql_rate,$i,'rate') ;
}
return $rate;
}
if(!empty($_POST['u'])) {
foreach ($_POST['u'] as $uid) {
$sql = mysql_query("select * from `cpl_pay_temp` where `id` = '".mysql_real_escape_string($uid)."'");
while ($cal = mysql_fetch_array($sql)) {
$empdesg = $cal['desg'];
$pay = round($present*(FetchCPL(array("design"=>$cal['desg'],"state"=>$cal['state'], "count"=>$i))/$days));
mysql_query("insert into `cpl_pay`
(`billno`,`ticketno`,`name`,`desg`,`sex`,`fathersname`,`day_present`,`total_wages`,`from_date`,`to_date`,`status`,`state`)
values('$vrno','".$cal['ticketno']."','".$cal['name']."','".$cal['desg']."','".$cal['sex']."','".$cal['fathersname']."','".$cal['day_present']."','$pay','$fdate1','$tdate2','Y','".$cal['state']."' ) ") or die(mysql_error());
}
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.