【问题标题】:How do I give a 'submit' button more than one action in php?如何在 php 中为“提交”按钮提供多个操作?
【发布时间】:2016-05-11 21:01:01
【问题描述】:

我有一个表单,在提交时我希望它做两件事: 1) 将值存储在数据库中 2) 将 $_POST 值写入 pdf

我有一个用于数据库写入的脚本,它可以独立运行。我有另一个用于写入 PDF 的脚本,它自己也可以正常工作。

但是,当我尝试在另一个函数的末尾调用一个函数时,提交操作只执行其中一个操作。我该如何解决这个问题。我希望我的按钮同时执行 store.php 和 makepdf.php

目前,我只能在表单的 action 标签中指定一个表单。

编辑:我在这里添加脚本。

这是我的 store.db 文件(连接长度限制):

<?php

   $dbhost = 'localhost';
   $dbuser = '';
   $dbpass = '';

// GET ALL THE VARIABLES FROM THE FORM

     $FirstName= $_POST['firstname']?$_POST['firstname']:'0';
     $LastName= $_POST['lastname']?$_POST['lastname']:'0'; 
     $Email= $_POST['email']?$_POST['email']:'0'; 
     $idn= $_POST['idn']; 

   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql1 = "INSERT INTO borrower(FirstName,LastName,Email,ssn) VALUES('".$FirstName."','".$LastName."','".$Email."','".$idn.");
   mysql_select_db('db');
   $retval1 = mysql_query( $sql1, $conn );

   }

//Test successs 
   //echo "Successful"  

?>

这是我的 makepdf.php :

<?php 

function pdfMaker() {
include('fpdf/fpdf.php'); 
include('fpdi/fpdi.php'); 

$FirstName;
$LastName;
$Email;
$IDNumber;



// initiate FPDI 
$pdf =& new FPDI(); 
// add a page 
$pdf->AddPage(); 
// set the sourcefile 
$pdf->setSourceFile('rcpp1.pdf'); 
// import page 1 
$tplIdx = $pdf->importPage(1); 
// use the imported page as the template 
$pdf->useTemplate($tplIdx, 0, 0); 

// now write some text above the imported page 
$pdf->SetFont('Times', '', 9); 
$pdf->SetTextColor(0,0,153); 

// Top Left stuff
$pdf->SetXY(9, 38); 
$pdf->Write(0, $Firstaname.$LastName.$Email.$IDNumber); 

$pdf->Output(($Firsname."_".$Lastname.'file.pdf'), 'D'); 

}

pdfMaker();

?>

这是我的表格:

<form class="form-horizontal" method="post" action="">
<fieldset>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="firstname">First Name</label>  
  <div class="col-md-4">
  <input id="firstname" name="firstname" type="text" placeholder="" class="form-control input-md">

  </div>
</div>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="lastname">Last</label>  
  <div class="col-md-4">
  <input id="lastname" name="lastname" type="text" placeholder="" class="form-control input-md">

  </div>
</div>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="email">Email</label>  
  <div class="col-md-4">
  <input id="email" name="email" type="text" placeholder="" class="form-control input-md">

  </div>
</div>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="idn">ID#</label>  
  <div class="col-md-4">
  <input id="idn" name="idn" type="text" placeholder="" class="form-control input-md">

  </div>
</div>

</fieldset>
</form>

再次,当我将任一 php 脚本添加到表单中的操作标记时,每个函数都可以单独使用。但是如果尝试将一个函数添加到另一个脚本或从另一个脚本调用它,它只会执行一个并停止。

【问题讨论】:

  • 看不到您的代码,我们只能推测......我们做得不太好。
  • 我应该包括所有三个脚本吗?
  • 表单一次只能提交到一个 url。为什么要让“提交按钮”做两件不同的事情?这不是表单提交的工作吗?将该脚本设为&lt;?php job1(); job2(); ?&gt; 很简单
  • 我已经更新了我的脚本。

标签: php forms function button form-submit


【解决方案1】:

你指的是&lt;form action="/uri" &gt;吗?

&lt;form action="/path/to/do_two_things.php" &gt; 怎么样?

<form action="/path/my_form_handler.php">
    <input type="submit" name="dowhat" value="Do action A" />
    <input type="submit" name="dowhat" value="Do action B" />
</form>

<?php
if ($_POST['dowhat'] == "Do action A") {
    // something
    // even more than one thing
} else {
    // something else
    // etc
}
?>

【讨论】:

    【解决方案2】:

    只需在 PHP 中在另一个脚本中包含一个脚本

    在你的 store.php 脚本中试试这个:

    include("makepdf.php");
    

    仅供参考,您也可以从另一个脚本调用一个脚本,但您需要像这样传递帖子参数和文件名:

    file_get_contents("makepdf.php?param1=".$_POST['param1']."&param2=".$_POST['param2']);
    

    【讨论】:

    • 我不知道谁对你投了反对票,我不认为是我。我已经更新了我的脚本。
    • 别担心。你试过包含吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2014-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多