2015-05-19 3 views
-2

Я работаю над системой планирования, и мне нужна ваша помощь. У меня код хорошо работает,Итерация до тех пор, пока не будет выполнено условие

$t_slot_time - текущий временной интервал, если условие да на линии19, $t_slot_time приращение на 2, и $t_slot_times становится новым.

, как я могу повторить тот же процесс от 1 до 21 для нового временного интервала $t_slot_times, где $t_slot_time на LINE1 заменяется новым $t_slot_times на line20 и последующих значений после того, как приращение до тех пор, пока эта $num_rowe >= 1 не выполняется.

Благодаря

$queuen = mysql_query("SELECT * FROM put_exam WHERE sess_id ='".$t_slot_time."'") or die(mysql_error()); 
$arrDatasa = array(); 
while($rowsa = mysql_fetch_array($queuen)) 
{ 
    $arrDatasa[]=$rowsa['course_code']. '|'; 
    $docam = array_filter($arrDatasa); 
} 

foreach($arrDatasa as $a=> $rowsa) 
{ 
    $docama .= $docam[$a]; 
} 

//Store current coursecode to assisgn into currentass 
$currentass = $e_course_code; 

//Check for common student between the last assigned course and current course to be assigned, if yes increment timeslot by 2 
$chkcomms = mysql_query("SELECT student.matric, student.std_name FROM student 
    JOIN course_reg e1 ON e1.matric=student.matric 
    JOIN course c1 ON c1.course_code=e1.course_code 
    JOIN course_reg e2 ON e2.matric=student.matric 
    JOIN course c2 on c2.course_code = e2.course_code 
    WHERE c1.course_code = '".$currentass."' 
    AND c2.course_code RLIKE '%$docama%' 
    GROUP BY student.matric") or die(mysql_error()); 

// Count number of rows 
$num_rowe = mysql_num_rows($chkcomms); 
if($num_rowe >= 1) { 
    $t_slot_times = $t_slot_time + 2; 
} 

ответ

0
$num_rowe = mysql_num_rows($chkcomms); 
for($i=0; $i<=$num_rowe; $i++){ 
    ... 
} 

как я обычно обрабатывать такого рода вещи!

EDIT: Надеюсь, я понял, что вы пытаетесь сделать, также обратите внимание, что я не проверял это на наличие ошибок!

function get_codes($t_slot_time){ 
    $queuen = mysql_query("SELECT * FROM put_exam WHERE sess_id ='".$t_slot_time."'") or die(mysql_error()); 
    $arrDatasa = array(); 
    while($rowsa = mysql_fetch_array($queuen)) 
    { 
     $arrDatasa[]=$rowsa['course_code']. '|'; 
     $docam = array_filter($arrDatasa); 
    } 

    foreach($arrDatasa as $a=> $rowsa) 
    { 
     $docama .= $docam[$a]; 
    } 

    return $docama; 
} 

//if you need it done at least once then 
$docama = get_codes($t_slot_time); 

//Store current coursecode to assisgn into currentass 
$currentass = $e_course_code; 

//Check for common student between the last assigned course and current course to be assigned, if yes increment timeslot by 2 
$chkcomms = mysql_query("SELECT student.matric, student.std_name FROM student 
    JOIN course_reg e1 ON e1.matric=student.matric 
    JOIN course c1 ON c1.course_code=e1.course_code 
    JOIN course_reg e2 ON e2.matric=student.matric 
    JOIN course c2 on c2.course_code = e2.course_code 
    WHERE c1.course_code = '".$currentass."' 
    AND c2.course_code RLIKE '%$docama%' 
    GROUP BY student.matric") or die(mysql_error()); 

// Count number of rows 
$num_rowe = mysql_num_rows($chkcomms); 
if($num_rowe >= 1) { 
    for($i=0; $i<=$num_rowe; $i++){ 
     $t_slot_time = $t_slot_time + 2; 
     $docama = get_codes($t_slot_time); 
     //add code to do what ever you want with $docama! 
    } 
} 
+0

Спасибо. но что происходит между циклами? и как я могу получить свое новое время из цикла, чтобы использовать – Yommy

+0

внутри цикла, вы ставите код, который вы хотите повторить. Если вы хотите, чтобы он повторялся только в том случае, если он соответствует условию, используйте оператор if для проверки его соответствия. Если вам нужно выполнить код в верхней части вашего источника более одного раза, поместите его в цикл for. Вам нужно будет решить, какие части! – user3633383

+0

Спасибо, я понимаю вас, но образец с моими кодами выше может помочь многое другое. @ user3633383 – Yommy

Смежные вопросы