2013-07-27 196 views
0

我有两个提交按钮在php文件take_test: -两个提交按钮 - 默认提交不工作,因为其他

<?php 

// First we execute our common code to connection to the database and start the session 
require("common.php"); 

// At the top of the page we check to see whether the user is logged in or not 
if(empty($_SESSION['user'])) 
{ 
    // If they are not, we redirect them to the login page. 
    header("Location: index.php"); 

    // Remember that this die statement is absolutely critical. Without it, 
    // people can view your members-only content without logging in. 
    die("Redirecting to index.php"); 
} 

// Everything below this point in the file is secured by the login system 

// We can display the user's username to them by reading it from the session array. Remember that because 
// a username is user submitted content we must use htmlentities on it before displaying it to the user. 
?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-AU"> 

<head> 
<title>OSTA - Take Test</title> 

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" /> 

<link href="css.css" rel="stylesheet" type="text/css" /> 

<script language="javascript" type="text/javascript"  src="editarea/edit_area/edit_area_full.js"></script> 

</head> 

<body> 

<div class="wrapper"> 
<div class="header"> 
<h1> OSTA - Take Test</h1> 
</div><!-- end header --> 

<div class="nav"> 
<ul> 
<li>Hello <?php echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF- 8'); ?></li> 
<li><a href="s_assignments.php">Assignments</a></li> 
<li><a href="s_edit_account.php">Edit Account</a></li> 
<li><a href="s_logout.php">Logout</a></li> 
</ul> 
</div><!-- end nav --> 

<div class="content"> 
<?php 
echo "<form id='code' action='take_test.php' method='post'>"; 
$con=mysqli_connect($host,$username,$password,$dbname); 
// Check connection 
if (mysqli_connect_errno($con)) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


if(isset($_POST['next'])) 
{ 

$aa = $_POST['source']; 
//foreach($aa as $k) : 
$query = "INSERT INTO student_test(status,user_name,aaid,qqid,answer,submit_time) 
VALUES('1','{$_SESSION['user'] ['username']}','{$_POST['edit']}','{$_POST['qid']}','{$aa}',NOW())"; 
$rest5=mysqli_query($con,$query); 
//endforeach; 

//} 

//if (!$rest) 
//{ 
// die('Error: ' . mysqli_error($con)); 
//} 
$qry="SELECT qid FROM questions where aid={$_POST['edit']} 
ORDER BY qid DESC 
LIMIT 1"; 
$restfinal=mysqli_query($con,$qry); 
$rowfinal = mysqli_fetch_array($restfinal); 
$qidfinal = $rowfinal['qid']; 
if ($qidfinal==$_POST['qid']) 
{ 
echo "Test Submitted Successfully."; 
sleep(3); 
header("Location: s_assignments.php"); 
echo "Test Submitted Successfully."; 
} 
} 


if(isset($_POST['edit'])) 
{ 
    $id2 = $_POST['edit']; 


    if(isset($_POST['next'])) 
    { 
    $a=$_POST['a']; 
    if(!isset($a)){ 
     $a=0; 
    }} 


    if(!isset($a)){ 
     $a=0; 
    } 
//$res=mysqli_query($con,"Select * from assignments where a_id='$id'"); 
$res1 = mysqli_query($con,"Select n_question from assignments where a_id='$id2'"); 
$row1 = mysqli_fetch_array($res1); 
$n_q = $row1['n_question']; 
$res8=mysqli_query($con,"Select * from questions where aid='$id2' LIMIT 1 OFFSET $a"); 

} 

echo "<table border='0' cellspacing='1' cellpadding='1'>"; 
echo "<tr> 

<th>Question</th> 
</tr>"; 

while($rowt = mysqli_fetch_array($res8)) 
{ 
    echo "<tr>"; 
     echo "<td>" . $rowt['question'] . "</td>"; 
    echo "</tr>"; 
    echo "<td>"."<input type ='hidden' id='qid' name ='qid' value=".$rowt['qid']."></td>"; 
    echo "<td>"."<input type ='hidden' id='aid' name ='edit' value=".$rowt['aid']."></td>";   
    //echo "<td>"."<input type ='hidden' id='id' name ='id' value=".$id."> </td>"; 
    echo "<tr>"; 
    echo "<tr>"; 
    echo "<td>"."<hr>"."<td>"; 
    echo "</tr>"; 

    echo "<td>"."<label for='lang'>Select Language:</label> 
    <select name='lang' id='lang'> 
    <option value='7'>Ada (gnat-4.3.2)</option> 
    <option value='13'>Assembler (nasm-2.07)</option> 
    <option value='45'>Assembler (gcc-4.3.4)</option> 
    <option value='104'>AWK (gawk) (gawk-3.1.6)</option> 
    <option value='105'>AWK (mawk) (mawk-1.3.3)</option> 
    <option value='28'>Bash (bash 4.0.35)</option> 
    <option value='110'>bc (bc-1.06.95)</option> 
    <option value='12'>Brainf**k (bff-1.0.3.1)</option> 
    <option value='11'>C (gcc-4.3.4)</option> 
    <option value='27'>C# (mono-2.8)</option> 
    <option value='1' selected='selected'>C++ (gcc-4.3.4)</option> 
    <option value='44'>C++0x (gcc-4.5.1)</option> 
    <option value='34'>C99 strict (gcc-4.3.4)</option> 
    <option value='14'>CLIPS (clips 6.24)</option> 
    <option value='111'>Clojure (clojure 1.1.0)</option> 
    <option value='118'>COBOL (open-cobol-1.0)</option> 
    <option value='106'>COBOL 85 (tinycobol-0.65.9)</option> 
    <option value='32'>Common Lisp (clisp) (clisp 2.47)</option> 
    <option value='102'>D (dmd) (dmd-2.042)</option> 
    <option value='36'>Erlang (erl-5.7.3)</option> 
    <option value='124'>F# (fsharp-2.0.0)</option> 
    <option value='123'>Factor (factor-0.93)</option> 
    <option value='125'>Falcon (falcon-0.9.6.6)</option> 
    <option value='107'>Forth (gforth-0.7.0)</option> 
    <option value='5'>Fortran (gfortran-4.3.4)</option> 
    <option value='114'>Go (gc-2010-07-14)</option> 
    <option value='121'>Groovy (groovy-1.7)</option> 
    <option value='21'>Haskell (ghc-6.8.2)</option> 
    <option value='16'>Icon (iconc 9.4.3)</option> 
    <option value='9'>Intercal (c-intercal 28.0-r1)</option> 
    <option value='10'>Java (sun-jdk-1.6.0.17)</option> 
    <option value='35'>JavaScript (rhino) (rhino-1.6.5)</option> 
    <option value='112'>JavaScript (spidermonkey) (spidermonkey-1.7)</option> 
    <option value='26'>Lua (luac 5.1.4)</option> 
    <option value='30'>Nemerle (ncc 0.9.3)</option> 
    <option value='25'>Nice (nicec 0.9.6)</option> 
    <option value='122'>Nimrod (nimrod-0.8.8)</option> 
    <option value='43'>Objective-C (gcc-4.5.1)</option> 
    <option value='8'>Ocaml (ocamlopt 3.10.2)</option> 
    <option value='119'>Oz (mozart-1.4.0)</option> 
    <option value='22'>Pascal (fpc) (fpc 2.2.0)</option> 
    <option value='2'>Pascal (gpc) (gpc 20070904)</option> 
    <option value='3'>Perl (perl 5.12.1)</option> 
    <option value='54'>Perl 6 (rakudo-2010.08)</option> 
    <option value='29'>PHP (php 5.2.11)</option> 
    <option value='19'>Pike (pike 7.6.86)</option> 
    <option value='108'>Prolog (gnu) (gprolog-1.3.1)</option> 
    <option value='15'>Prolog (swi) (swipl 5.6.64)</option> 
    <option value='4'>Python (python 2.6.4)</option> 
    <option value='116'>Python 3 (python-3.1.2)</option> 
    <option value='117'>R (R-2.11.1)</option> 
    <option value='17'>Ruby (ruby-1.9.2)</option> 
    <option value='39'>Scala (scala-2.8.0.final)</option> 
    <option value='33'>Scheme (guile) (guile 1.8.5)</option> 
    <option value='23'>Smalltalk (gst 3.1)</option> 
    <option value='40'>SQL (sqlite3-3.7.3)</option> 
    <option value='38'>Tcl (tclsh 8.5.7)</option> 
    <option value='62'>Text (text 6.10)</option> 
    <option value='115'>Unlambda (unlambda-2.0.0)</option> 
    <option value='101'>Visual Basic .NET (mono-2.4.2.3)</option> 
    <option value='6'>Whitespace (wspace 0.3)</option> 
    </select>". "</td>"; 
    echo "</tr>"; 

    echo "<tr>"; 
     echo "<td>"."<label for='source'>Source Code:</label>"."</td>"; 
    echo "</tr>"; 

    echo "<tr>"; 
     echo "<td>"."<textarea cols='80' rows='12' name='source' id ='source'> </textarea>"."</td>"; 
    echo "</tr>"; 
} 
echo "<tr>";//echo "<br />"; 
echo "<td>"."<label for='input'>Input: <span class='description'>(Data that will be given to the program on the stdin.)</span></label>"; 
//echo "<br />"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>"."<textarea cols='40' rows='3' name='input' id='input'></textarea>". " </td>"; 
echo "</tr>"; 
$a=$a+1; 
echo "<input type='hidden' value='$a' name='a'>"; 
    // echo "<td>"."<a href='take_test.php'> " 
    //echo "<td>"."<input type ='submit' name ='compile' value='Compile Code'>"."</td>"; 
    echo "<td>"."<input type='submit' name='compile' id='compile' value='Compile Code'>"."</td>"; 
    echo "<td>"."<input type ='submit' name ='next' value='Next Question'>"."</td>"; 
    echo "</table>"; 

    echo"</form>"; 

    ?> 
    <div id="response"> 
     <div class="meta"></div> 
     <div class="output"></div> 
</div> 
</div><!-- end content --> 

<div class="footer"> 
<p>designed by | &copy; </p> 
</div><!-- end footer --> 
</div><!-- end wrapper --> 
<script language="javascript" type="text/javascript"> 
editAreaLoader.init({ 
id : "source"  // textarea id 
,syntax: "css"   // syntax to be uses for highgliting 
,start_highlight: true  // to display with highlight mode on start-up 
}); 
</script> 

<script type="text/javascript" src="jquery.min.js"></script> 
<script src="script.js"></script> 
<!-- <script src="../jquery/jquery-1.4.1.min.js"></script> --> 
</body> 
</html> 

一个提交名称=下一个我正在检测通过 如果(isset($ _ POST [ “下一”])) 和另一个通 这里是的script.js

jQuery(document).ready(function($) { 
//$('input[name=compile]').on('click',function(){ 
// $(this).closest("#code")[0].submit();}) 
//$('#compile').on('click', function() { 
    $('#code').submit(function(){ 

    var data = $(this).serialize(); 
    var source = $('textarea#source').val(); 

    if(source == '') { 
     alert('No source code provided'); 
     return false; 
    } 

    $(this).append('<div class="loading">Processing...</div>'); 

    $.ajax({ 
     type: 'post', 
     url: 'process.php', 
     dataType: 'json', 
     data: data + '&process=1', 
     cache: false, 
     success: function(response){ 
      $('.loading').remove(); 
      $('.cmpinfo').remove(); 
      $('#response').show(); 
      //alert(response); 
      console.log(response.raw); 
      if(response.status == 'success') { 
       $('.meta').text(response.meta); 
       $('.output').html('<strong>Output</strong>: <br><br><pre>' + response.output + '</pre>'); 

       if(response.cmpinfo) { 
        $('.cmpinfo').remove(); 
        $('.meta').after('<div class="cmpinfo"></div>'); 
        $('.cmpinfo').html('<strong>Compiler Info: </strong> <br><br>' + response.cmpinfo); 
       } 

      } else { 
       //$('.output').html('<pre>' + response + '</pre>'); 
       alert(response.output); 
      } 
      //alert(response.msg); 
     } 
    }); 

    return false; 
    }); 
}); 

的代码的问题是每当我点击任一编译按钮或下一步按钮它只考虑编译按钮。如果我删除脚本文件,下一个按钮将完美运行。 请给出任何建议。 我已经尝试了很多解决方案,但没有任何工作。

+0

你得到任何错误? – putvande

+0

这有点...长。你能缩短你的代码到一个足以复制你的问题的最小例子吗? – Ben

+0

您是否尝试过注释编译按钮?下一步按钮在这种情况下工作正常吗? – Harry

回答

0

JS文件中的$('#code').submit函数似乎是问题所在。由于您的PHP中的两个按钮都是提交按钮,因此单击这两个按钮中的任意一个都会触发表单提交操作,并会触发process.php的AJAX请求。

如果脚本文件被注释掉了,那么表单标签中提到的默认操作页面会被调用,这就是当脚本被注释掉时下一个按钮有效的原因。

您应该在JS文件中添加一个控件,以检查用户实际点击了哪些提交按钮,然后执行相应的操作。以下是供你参考一个非常基本的样本:

HTML

<form id="code" action="aa.php" method="post"> 
    <input type="submit" class="button" name="compile" value="compile"/> 
    <input type="submit" class="button" name="next" value="next"/> 
</form> 

JS(要在DOM执行就绪)

var buttonpressed; 
$('.button').click(function() { 
    buttonpressed = $(this).attr('name'); 
}); //This will set the name of the button that was clicked to the buttonpressed variable whenever a button is clicked 

$('#code').submit(function() { 
//The below lines check for the button's name upon form submit and then process accordingly 
    if(buttonpressed=="next") alert("Add code to next"); 
    else alert("Add code to compile"); 
    buttonpressed=''; 
    return false; 
}); 
+0

先生,这是你上面提到的确切问题。我试过上面的代码。现在,只有编译按钮正在工作,这也是因为if(isset($ _ POST ['next'])),如果我删除它,我的逻辑转移到下一个问题将会消失。有没有其他的编译按钮。 – master

+0

@master你可以编辑问题并发布你的修改后的代码吗?我想看看您的修改后的代码是否存在任何问题。 – Harry

+0

jQuery的(文件)。就绪(函数($){ \t VAR buttonpressed; \t $()点击(函数(){ \t buttonpressed = $(本).attr( '名 ')' 按钮。'。 \t}); //这将设置点击按钮的按钮的名称,只要按钮被点击 \t $('#code')。提交(函数(){ \t //下面的线在形式检查按钮的名称提交,然后相应地处理 \t如果(buttonpressed ==“下一步”)警报(“添加代码,未来”); \t否则警报( “添加代码编译”); \t buttonpressed = ''; \t返回FALSE; \t}); //检查提交按钮结束 )}; // jQuery的结束 – master