【问题标题】:Can I have a single submit button that performs two actions?我可以有一个执行两个操作的提交按钮吗?
【发布时间】:2013-09-17 01:36:09
【问题描述】:

这是表单的代码:

<?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,然后按下一个问题按钮我必须转到下一个问题(增量())有没有办法在同一个上做两个任务按钮点击?

【问题讨论】:

  • 也许您可以使用div 而不是&lt;input type="submit" .../&gt; 并在 div 上将函数附加到 onclick 事件,并且在该函数上您可以做任何您想做的事情。

标签: php html mysql web


【解决方案1】:
<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>

删除该嵌套表单。然后,您必须确保回答问题的处理会触发下一个问题代码。有效地做你似乎要求的事情,而实际上没有两个单独的动作。

【讨论】:

  • 如果我只使用提交按钮,那么在每次重新加载页面时(甚至 F5)问题都不会自动增加。
  • 因为你不告诉它。我们必须查看表单处理器的逻辑,以建议您如何实现这一目标。
  • 对于一个你在增量之前运行提取代码的人。您应该在将输出到页面的任何内容之前运行所有表单处理。我也看不到任何正在阅读帖子值的内容,因此您只是忽略了答案并转到下一个问题。我假设“这里”是一个占位符,有朝一日可能代表用户。
  • 代码在另一个 php 文件中,它没有什么可做的,它只是获取数据并将其放入适当的数据库中,这里指向问题的价值 no
【解决方案2】:

您不能通过一个表单提交执行两个单独的 HTTP 请求,因此您的问题的答案是否定的,它不能执行两个操作。

您可以改为使用 JavaScript 来发出分隔 HTTP 请求(ajax),或者您可以简单地让您的 PHP 后端执行您需要的两个操作。没有什么可以阻止它增加 重定向到下一个问题。

【讨论】:

    【解决方案3】:

    在跟踪 q_no 值的表单中放置一个隐藏输入。

    <input type="hidden" name="qcount" value=$q_no /> (or similar, I don't use php much)
    

    【讨论】:

    • value="&lt;?php echo $q_no; ?&gt;"
    【解决方案4】:

    如果你是从数据库中获取数据,那么,

    <?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..
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2021-11-23
      • 2014-01-01
      • 2013-01-14
      • 2016-06-24
      • 2011-12-13
      相关资源
      最近更新 更多