我正在做一个项目,其中我必须做一个144个律师的随机计划。这个计划是每个month.So在一个月的每一天都会有3-4个律师。这个计划将在每个月的开始进行。这个计划必须是随机的,每个人都要被平等地挑选出来。
我的想法是这样的:第一次我每天接4个人(144/31=4),剩下的20个人计划在5月1日-20日。有4个计划,每个律师选择他们将参与的计划。在我的数据库中,我将每个选项都存储在一个表中。例如,如果他选择计划1(称为politie_parchet_all),他将在数据库的表中有1)。
问题是这里的...This代码只运行if子句,其余24个人保持未选中状态。我认为不退出if子句,我不知道为什么?
$str_date ="01-".$luna."-".$an;
$start_date = strtotime($str_date);
$end_date = strtotime('+1 month',$start_date);
$number_days = date("t",$start_date);
$nr_lawyer =number_lawyer($planificare);
while ($nr_lawyer >0)
{
$nr_lawyer =number_lawyer($planificare);
if($nr_lawyer > $number_days)
{
$nr = intval($nr_lawyer/$number_days);
while ($start_date < $end_date)
{
$time=date('Y-m-d',$start_date);
for ($i=1; $i<=$nr; $i++)
{
$time=date('Y-m-d',$start_date);
selectare_avocat($planificare,$time);
}
$start_date = strtotime('+1 days',$start_date);
}
}
else if($nr_lawyer < $number_days)
{
$str_date ="01-".$luna."-".$an;
$start_date = strtotime($str_date);
$end_date = strtotime('+'.number_lawyer($planificare).' days',$start_date);
echo date('Y-m-d',$end_date);
while ($start_date < $end_date)
{
$time=date('Y-m-d',$start_date);
selectare_avocat($planificare,$time);
$start_date = strtotime('+1 days',$start_date);
}
}
$nr_lawyer = number_lawyer($planificare);
}selectare_avocat是一个函数,它将选择一个随机的律师,将这个随机的律师存储在generare_liste表中,并更新select = 1
select = 0意味着他可以被选中。如果选择了律师,则在挑选完所有律师之前,不会再次选择这些律师。
selectare_avocat()函数:<-此函数运行良好。
function selectare_avocat($planificare,$time) {
global $con;
$sql3="SELECT avocat.id from avocat WHERE avocat.select=0 AND avocat.".$planificare." = 1 AND avocat.id NOT IN (SELECT id_avocat FROM generare_liste WHERE `data` LIKE '{$time}') ORDER BY RAND() LIMIT 1";
$result3 = mysqli_query($con,$sql3);
$row=mysqli_fetch_array($result3);
$id = $row['id'];
$sql4="INSERT INTO generare_liste(id,id_avocat,planificare,data)VALUES(null,".$id.",'{$planificare}','{$time}')";
mysqli_query($con,$sql4);
$sql2="UPDATE `avocat` SET `select`=1 WHERE id={$id}";
mysqli_query($con,$sql2);
}问题是这个脚本永远不会结束,并且只在if子句上被阻塞(因为在运行之后,我在generare_lista表中只有124个律师),剩下的20个律师必须用else子句来挑选。
发布于 2014-05-19 02:08:03
我的建议是:
获取实际月份的天数=> $number_days =$start_date(“t”,$start_date);初始化变量$cont = 1;创建一个空数组$list =$list();在数据数组中进行循环,直到它为空;从数组数据中执行$list$cont =一些随机值,然后从数组数据中删除它;测试$cont是否大于$number_days,然后将其转换为1增量$cont++;
这个例行公事适用于任何数量的律师。
https://stackoverflow.com/questions/23724996
复制相似问题