dongquechan4414 2014-01-26 01:10
浏览 45
已采纳

测试foreach循环中每个数组值的条件

I might have put a not so right title of the question, apologies for that. I am sending some values in an array to be looped by foreach. Now, the use-case is that these are some id(s) related to a teaching responsibility and i am required to group them in a higher grouped responsibility. But the condition is that these id(s) have to be of same paper type.

Now, what i think i need to do in order to achieve this is to check the paper type for each array value and if they are not the same then i need to get out of the loop and give an error.

Note This is an AJAX request.

my code so far for looping through the array is:

$tid = mysql_real_escape_string($_POST['tid']);

$resp = $_POST['respid'];

$name_id = array_values($resp)[0];

$q1 = mysql_query("select p.p_name from papers p, iars ir where ir.id='$name_id' and ir.paperid = p.p_id");

$rows1 = mysql_fetch_array($q1);
$gresp_name = $rows1['p_name'];

$q2 = mysql_query("insert into giars set sessionid='$session', teacherid='$tid', name='$gresp_name'");
if(mysql_affected_rows()>0){
$gresp_id = mysql_insert_id();
}

foreach ($resp as $value ) {

   $query = mysql_query("select p.ptype from papers p, iars ir where p.p_id = ir.paperid and ir.id='$value'");

   $rows=mysql_fetch_array($query);
   $ptype=$rows['ptype'];

  // I am stuck here //

$q1 = mysql_query("insert into grp_resp(giars_id, iars_id, courseid, semester, paperid, groupid) select '$gresp_id', '$value', courseid, semester, PaperId, groupid from iars where id='$value'");

}
echo "done";

Now, how do i get out of the loop if the condition fails and give an appropriate response for the AJAX request.

展开全部

  • 写回答

3条回答 默认 最新

  • dsgdhf5674 2014-01-26 01:17
    关注

    You just have to loop it twice.
    Consider the following code:

    $paper_type = null; // we'll be storing the prototype here (all should match it)
    $error = false;     // no errors as for now
    
    foreach ($resp as $value) 
    {
       $query = mysql_query("select p.ptype from papers p, iars ir where p.p_id = ir.paperid and ir.id='$value'");
       $rows = mysql_fetch_array($query);
       $ptype = $rows['ptype'];
       if($paper_type === null) $paper_type = $ptype; // initializing the "prototype"
       if($paper_type != $ptype) { $error = true; break; } // if it doesn't match the prototype - throw an error
    }
    
    // Displaying an error for AJAX
    if($error) { echo "ERROR"; exit; }
    
    // Otherwise - everything is fine, let's do the inserts!
    foreach ($resp as $value) 
    {
        $q1 = mysql_query("insert into grp_resp(giars_id, iars_id, courseid, semester, paperid, groupid) select '$gresp_id', '$value', courseid, semester, PaperId, groupid from iars where id='$value'");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?