0

フォームのコードは次のとおりです。

<?php
include("updater.php");
   if(isset($_POST['submit'])) {
increment(); //increments value of question no.(I don't want to use auto_increment   hence this)
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Add Questions</title>
</head>

<body>
<form action="get_question.php" method="post">
<?php $q_no=$counter;
       echo "Q.no.".$q_no  ?><br/>
Question:<input type="text" name="question" cols="40" rows="3" /> <br/><br/>
<input type="radio" name="answer" value="1" />&nbsp;<input type="text" name="c1"/><br/>
<input type="radio" name="answer" value="2"/>&nbsp;<input type="text" name="c2"/><br/>
<input type="radio" name="answer" value="3" />&nbsp;<input type="text" name="c3"/><br/>
<input type="radio" name="answer" value="4" />&nbsp;<input type="text" name="c4"/><br/>
<input type="submit" name="Submit" />
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
<input type="submit" name="submit" value="Next Question>>">
</form>
</form>

Updater.php:

<?php
 $connection=mysql_connect("localhost","root","");

    if(!$connection){
        die("could not connect to database".mysql_error());
    }

 $select_db=mysql_select_db("oes",$connection);
    if(!$select_db){
        die("could not select database".mysql_error());
    }

$result=mysql_query("SELECT q_no FROM counter WHERE ptr='here'");
$row= mysql_fetch_array($result);
$counter= $row["q_no"];

     function increment(){
        global $counter;
        $counter++;
        $updated=mysql_query("UPDATE  oes.counter SET  q_no =  '$counter' WHERE  counter.ptr ='here';");
        return $counter;
    }

     function delete($q_no){
        $action_delete1=mysql_query("DELETE FROM oes.questions WHERE q_no='$q_no';");
        $action_delete2=mysql_query("DELETE FROM oes.choices WHERE q_no='$q_no';"); 
        $action_adddeleted=mysql_query("INSERT INTO oes.deleted (q_no) VALUES ('$q_no');");
    }

    function use_delete(){
        $retrive=mysql_query("SELECT MAX (q_no) AS q_no FROM deleted");
        $action_delete=mysql_query("DELETE FROM oes.deleted WHERE q_no='$retrive';");
        return $retrive;
    }

?>

問題は、送信ボタンがデータベース内の質問を更新するだけですが、同じページに同じ q_no が表示され、次の質問ボタンを押すと次の質問に移動する必要があることです (increment()) 同じボタンのクリックで 2 つのタスクを実行する方法はありますか?

4

4 に答える 4

0

データベースからデータを取得している場合、

<?php
if(isset($_POST['submit'])) {
// get your current question no. : $next_no = SELECT q_no from table WHERE q_no=$current_question_no;
// fetch next question: SELECT * FROM table where q_no=($next_no+1);
//here will be some SQL query to increment..
}
?>
于 2013-09-16T17:22:42.870 に答える
0

q_no の値を追跡するフォームに非表示の入力を配置します。

<input type="hidden" name="qcount" value=$q_no /> (or similar, I don't use php much)
于 2013-09-16T17:23:31.873 に答える
0
<form action="get_question.php" method="post">
<?php $q_no=$counter;
       echo "Q.no.".$q_no  ?><br/>
Question:<input type="text" name="question" cols="40" rows="3" /> <br/><br/>
<input type="radio" name="answer" value="1" />&nbsp;<input type="text" name="c1"/><br/>
<input type="radio" name="answer" value="2"/>&nbsp;<input type="text" name="c2"/><br/>
<input type="radio" name="answer" value="3" />&nbsp;<input type="text" name="c3"/><br/>
<input type="radio" name="answer" value="4" />&nbsp;<input type="text" name="c4"/><br/>
<input type="submit" name="submit" value="Next Question>>">
</form>

そのネストされたフォームを削除します。次に、質問に回答するための処理が次の質問コードをトリガーすることを確認する必要があります。実際には 2 つの別々のアクションを実行することなく、求めているように見えることを効果的に実行します。

于 2013-09-16T17:21:34.110 に答える
0

1 回のフォーム送信で 2 つの別個の HTTP リクエストを実行することはできないため、質問に対する答えはノーです。2 つのアクションを実行することはできません。

代わりに JavaScript を使用して個別の HTTP リクエスト (ajax) を発行するか、単純に PHP バックエンドに必要な 2 つのアクションを実行させることができます。インクリメントして次の質問にリダイレクトするのを止めるものは何もありません。

于 2013-09-16T17:22:01.243 に答える