Php 选中表中每一行中的复选框以获取值并插入数据库

Php 选中表中每一行中的复选框以获取值并插入数据库,php,checkbox,pdo,Php,Checkbox,Pdo,我正在使用我的页面的发送邮件功能。为了能够获得表中的值,我想在每行中添加一个复选框,该复选框可以勾选超过1行。然后,一旦通过按钮提交,它将被插入到数据库中。我不知道我的代码出了什么问题。请帮忙 下面是复选框: echo "<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>"; echo”“; 代码如下: function InsertEmailMessage() { fore

我正在使用我的页面的发送邮件功能。为了能够获得表中的值,我想在每行中添加一个复选框,该复选框可以勾选超过1行。然后,一旦通过按钮提交,它将被插入到数据库中。我不知道我的代码出了什么问题。请帮忙

下面是复选框:

 echo "<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>";
echo”“;
代码如下:

 function InsertEmailMessage() {

 foreach ($_POST['checkb'] as $id => $val) {

 if($val=='checked'){
 $sql6 = "SELECT * FROM invalid_invoice WHERE ID='".$id."'";
 $conn = dbConnect();
 $stmt6 = $conn->prepare($sql6); 
 $stmt6->execute();
 $data = $stmt6->fetchAll(PDO::FETCH_ASSOC);     
 $conn=null;
 }

 foreach ($data as $row6) {

 $invnumb=$row6['Invoice_Number'];
 $partnumb=$row6['Part_Number'];
 $issue=$row6['Issues'];
 $pic=$row6['PIC_Comments'];
 $emailadd= $row6['PersoninCharge'];
 $issuetype=$row6['Issue_Type'];
 $createdate=$row6['Creation_Date'];
 $site=$row6['Site'];
 $vendor=$row6['Vendor_Name'];
 $invdate=$row6['Invoice_Date'];
 $po=$row6['PO'];
 $rr=$row6['RR']; 
 $currency=$row6['Currency'];
 $invamount=$row6['Invoice_Amount'];
 $stat=$row6['Status'];


 if($row6['Status']=="Open") {

 $message = "<html><b>Issue Type: {$issuetype} </b><br><br>";       
 $message .= "<b>Creation Date: {$createdate} </b><br><br>";
 $message .= "<b>Site: {$site} </b><br><br>";
 $message .= "<b>Vendor Name: {$vendor} </b><br><br>";
 $message .= "<b>Invoice Date: {$invdate} </b><br><br>";
 $message .= "<b>Invoice Number: {$invnumb} </b><br><br>";
 $message .= "<b>Part Number:</b><br>{$partnumb}<br><br>";
 $message .= "<b>PO: {$po} </b><br><br>";
 $message .= "<b>RR: {$rr} </b><br><br>";
 $message .= "<b>Currency: {$currency} </b><br><br>";
 $message .= "<b>Invoice Amount: {$invamount} </b><br><br>";
 $message .= "<b>Issues:</b><br>{$issue}<br>";
 $message .= "<b>Status: {$stat} </b><br><br>";  
 $message .= "<b>{$pic}<b><br>";  
 $message .= "</html>";


 if(!empty($emailadd)) {
 dbInsertEmailMessage($emailadd, "Invoice Number: {$invnumb} - {$issue}.", $message);
 echo "<script language='javascript'>alert('Email sent to {$emailadd}')</script>";
 }
 }
 }

 }
 }
 }

 function dbInsertEmailMessage($send_to, $subject, $message) {

  $sql7 = "INSERT INTO email_queue (send_to, subject, message) VALUES (:send_to, :subject, :message)";  
  $conn = dbConnect();
  $stmt7 = $conn->prepare($sql7); 
  $stmt7->bindParam(':send_to', $send_to);
  $stmt7->bindParam(':subject', $subject);
  $stmt7->bindParam(':message', $message);
  $stmt7->execute();
  $conn=null; 
  }  
函数InsertEmailMessage(){
foreach($_POST['checkb']作为$id=>$val){
如果($val=='checked'){
$sql6=“从无效的发票中选择*,其中ID=”“$ID.””;
$conn=dbConnect();
$stmt6=$conn->prepare($sql6);
$stmt6->execute();
$data=$stmt6->fetchAll(PDO::FETCH_ASSOC);
$conn=null;
}
foreach($6行数据){
$invnumb=$row6[“发票编号”];
$partnumb=$row6['Part_Number'];
$issue=$row6['Issues'];
$pic=$row6['pic_Comments'];
$emailadd=$row6['PersoninCharge'];
$issuetype=$row6['Issue_Type'];
$createdate=$row6['Creation_Date'];
$site=$row6['site'];
$vendor=$row6['vendor_Name'];
$invdate=$row6[“发票日期”];
$po=$row6['po'];
$rr=$row6['rr'];
$currency=$row6['currency'];
$invamount=$row6[“发票金额”];
$stat=$row6['Status'];
如果($row6['Status']==“Open”){
$message=“问题类型:{$issuetype}

”; $message.=“创建日期:{$createdate}

”; $message.=“站点:{$Site}

”; $message.=“供应商名称:{$Vendor}

”; $message.=“发票日期:{$invdate}

”; $message.=“发票编号:{$invnumb}

”; $message.=“零件号:
{$partnumb}

”; $message.=“PO:{$PO}

”; $message.=“RR:{$RR}

”; $message.=“货币:{$Currency}

”; $message.=“发票金额:{$invamount}

”; $message.=“问题:
{$issue}
”; $message.=“状态:{$stat}

”; $message.=“{$pic}
”; $message.=“”; 如果(!empty($emailadd)){ dbInsertEmailMessage($emailadd,“发票号:{$invnumb}-{$issue}.”,$message); 回显“警报('Email发送到{$emailadd}')”; } } } } } } 函数dbInsertEmailMessage($send_to,$subject,$message){ $sql7=“插入电子邮件队列(发送对象、主题、消息)值(:发送对象、:主题、:消息)”; $conn=dbConnect(); $stmt7=$conn->prepare($sql7); $stmt7->bindParam(':send_to',$send_to); $stmt7->bindParam(':subject',$subject); $stmt7->bindParam(':message',$message); $stmt7->execute(); $conn=null; }
这一行似乎错了:

<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>
这句话似乎错了:

<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>

这种申报方式是错误的

echo "<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>";
应该是这样的

<?
echo "<td><input type='checkbox' name='checkb[]' value='".$row['ID']."'></td>";

function InsertEmailMessage() 
{
        $checkb=$_POST['checkb'];
        $TotalCheckbox=$sizeof($checkb);
        for($i=0;$i<$TotalCheckbox;$i++)
        {
             $Selcheckb=$checkb[$i];
             $sql6 = "SELECT * FROM invalid_invoice WHERE ID=$Selcheckb";
             $conn = dbConnect();
             $stmt6 = $conn->prepare($sql6); 
             $stmt6->execute();
             $data = $stmt6->fetchAll(PDO::FETCH_ASSOC);     
             $conn=null;
        }
.
.// Your rest of the code..

这种声明方式是错误的

echo "<td><input type='checkbox' name='checkb[".$row['ID']."]'></td>";
应该是这样的

<?
echo "<td><input type='checkbox' name='checkb[]' value='".$row['ID']."'></td>";

function InsertEmailMessage() 
{
        $checkb=$_POST['checkb'];
        $TotalCheckbox=$sizeof($checkb);
        for($i=0;$i<$TotalCheckbox;$i++)
        {
             $Selcheckb=$checkb[$i];
             $sql6 = "SELECT * FROM invalid_invoice WHERE ID=$Selcheckb";
             $conn = dbConnect();
             $stmt6 = $conn->prepare($sql6); 
             $stmt6->execute();
             $data = $stmt6->fetchAll(PDO::FETCH_ASSOC);     
             $conn=null;
        }
.
.// Your rest of the code..

我正在使用php。我应该把var_dump($_POST)放在哪里;就在
函数InsertEmailMessage(){
行之后,您可以放置:
var\u dump($\u POST);return;
-通过这种方式,您可以检查复选框的名称和值是否与您期望的完全相同。尝试查看页面的源代码,可能var_转储被其他我正在使用的php隐藏。我应该将var_转储($_POST)放在哪里;就在
函数InsertEmailMessage()行之后{
您可以放置:
var\u dump($\u POST);return;
-通过这种方式,您可以检查复选框的名称和值是否与您期望的完全相同。尝试查看页面的源代码,可能var_转储被其他内容隐藏,但如何使用$Selcheckb?我应该将其插入何处?@KimlynTormes:我更新了我的答案。请仔细查看。因为,您的复选框声明了上的错误。我将其更正。并且,第一个函数将相应地工作。因为,我不知道您的数据库表/列,所以我无法编辑您的完整代码。但是,复选框代码我已更新。请检查。谢谢。@KimlynTormes:请让我知道您的工作进度。仍然没有在数据库中插入行。@KimlynTormes:您删除了
 foreach($_POST['checkb']作为$id=>$val){/}
关于我的代码??谢谢,但是我如何使用$Selcheckb?我应该在哪里插入它?@KimlynTormes:我更新了我的答案。请检查一下。因为,你的复选框声明是错误的。我做了更正。第一个函数将相应地工作。因为,我不知道你的数据库表/列,所以我无法编辑你的完整代码。但是,请检查Box代码我已更新。请检查。谢谢。@KimlynTormes:请让我知道您的工作进度。仍然没有在数据库中插入行。@KimlynTormes:您删除了带有我代码的
foreach($\u POST['checkb']as$id=>$val){/}
??
$checkb=$_POST['checkb'];

$TotalCheckbox=$sizeof($checkb);
for($i=0;$i<$TotalCheckbox;$i++)
{
    echo $Selcheckb=$checkb[$i];
}
.
.
.
// Your code.
<?
echo "<td><input type='checkbox' name='checkb[]' value='".$row['ID']."'></td>";

function InsertEmailMessage() 
{
        $checkb=$_POST['checkb'];
        $TotalCheckbox=$sizeof($checkb);
        for($i=0;$i<$TotalCheckbox;$i++)
        {
             $Selcheckb=$checkb[$i];
             $sql6 = "SELECT * FROM invalid_invoice WHERE ID=$Selcheckb";
             $conn = dbConnect();
             $stmt6 = $conn->prepare($sql6); 
             $stmt6->execute();
             $data = $stmt6->fetchAll(PDO::FETCH_ASSOC);     
             $conn=null;
        }
.
.// Your rest of the code..