簡體   English   中英

PHP聯絡表單,帶有多個單選按鈕

[英]Php contact form with multiable radio buttons

我對php很陌生,我正在嘗試編寫聯系表格/問卷

例如,我需要表格來查看單選按鈕的結果

EmployeeName:Ian Matthews Mark :(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。

但是如果填寫了其他名稱,請使用上述詳細信息創建新行

EmployeeName:Ian Matthews Mark :(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。

EmployeeName:Ciara Maguire標記:(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。

我正在嘗試使用“ foreach”,但我認為我沒有正確使用它

希望有人能幫忙

謝謝

目前我有這個代碼

 <?php $EmailFrom = ""; $EmailTo = ""; $Subject = "Questionnaire"; $EmpName = Trim(stripslashes($_POST['EmployeeName'])); $Radio = Trim(stripslashes($_POST['Radio'])); $Comment = Trim(stripslashes($_POST['Com'])); foreach ($_POST ['Radio'] as $value) { $Body = "$EmpName, $Radio, $Comment\\n"; } $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); if ($success){ print "top work"; } else{ print "you have a error"; } ?> 

 <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td>&nbsp;</td> <td> <h4>Excellent</h4> </td> <td> <h4>Very Good</h4> </td> <td> <h4>Good</h4> </td> <td> <h4>Satisfactory</h4> </td> <td> <h4>Poor</h4> </td> <td> <h4>N/A</h4> </td> </tr> <tr> <td height="30"> <label>Ian Matthews <input type="hidden" name="EmployeeName" value="Ian Matthews" /> </label> </td> <td align="center"> <input type="radio" name="Radio" value="10-Excellent" /> </td> <td align="center"> <input type="radio" name="Radio" value="7-VeryGood" /> </td> <td align="center"> <input type="radio" name="Radio" value="4-Good" /> </td> <td align="center"> <input type="radio" name="Radio" value="0-Satisfactory" /> </td> <td align="center"> <input type="radio" name="Radio" value="-5-Poor" /> </td> <td align="center"> <input type="radio" name="Radio" value="N/A" /> </td> </tr> <tr> <td height="30"> <label class="colourGrey">Comments:</label> </td> <td colspan="6" align="center"> <input class="teamCom" type="text" name="Com" /> </td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td colspan="7" class="BorderLine"></td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td>&nbsp;</td> <td> <h4>Excellent</h4> </td> <td> <h4>Very Good</h4> </td> <td> <h4>Good</h4> </td> <td> <h4>Satisfactory</h4> </td> <td> <h4>Poor</h4> </td> <td> <h4>N/A</h4> </td> </tr> <tr> <td height="30"> <label>Ciara Maguire <input type="hidden" name="EmployeeName" value="Ciara Maguire" /> </label> </td> <td align="center"> <input type="radio" name="Radio" value="10-Excellent" /> </td> <td align="center"> <input type="radio" name="Radio" value="7-VeryGood" /> </td> <td align="center"> <input type="radio" name="Radio" value="4-Good" /> </td> <td align="center"> <input type="radio" name="Radio" value="0-Satisfactory" /> </td> <td align="center"> <input type="radio" name="Radio" value="-5-Poor" /> </td> <td align="center"> <input type="radio" name="Radio" value="N/A" /> </td> </tr> <tr> <td height="30"> <label class="colourGrey">Comments:</label> </td> <td colspan="6" align="center"> <input class="teamCom" type="text" name="Com" /> </td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td colspan="7" class="BorderLine"></td> </tr> </table> 

首先,兩個員工都使用相同的輸入名稱。 您必須設置不同的名稱:

<input type="hidden" name="EmployeeName1" value="Ian Matthews" />
<input type="hidden" name="EmployeeName2" value="Ciara Maguire" />

並帶有所有輸入(Com1和Com2,radio1和radio2,..)

在您的php文件中,您必須執行以下操作

$Body = "";
$numEmployees = 2; // or the number you put
// Each iteration per employee, accesing to his form data
for ($i=1; $i<=$numEmployees; $i++)
{
  $EmpName = Trim(stripslashes($_POST['EmployeeName' .$i]));
  $Comment = Trim(stripslashes($_POST['Com' .$i]));
  $Radio = Trim(stripslashes($_POST['radio' .$i]));
  $Body .= "$EmpName, $Radio, $Comment\n";  // Note the dot in ".="
}  

接着

$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

當然,您的emailto和emailfrom為空,但我認為您將其填寫在最終版本中。 我沒有執行此版本,但希望可以幫助您了解您的錯誤。

$_POST['Radio']包含一個值,而您想通過多個值發送。 為此,最好的方法是將輸入分配給數組,如下所示:

<input name="Radio[]" value="Lorem" />
<input name="Radio[]" value="ipsum" />
<input name="Radio[]" value="dolor" />
<input name="Radio[]" value="sit" />
<input name="Radio[]" value="amet" />

然后,您可以通過以數組形式訪問它們來檢索結果:

$_POST['Radio'][0] == 'Lorem'
$_POST['Radio'][4] == 'amet'

最后,您每次在循環中都會覆蓋對$ Body的分配。 而不是$Body = "$EmpName, $Radio, $Comment\\n"; ,您將需要$Body .= "$EmpName, $Radio, $Comment\\n"; 注意等號前面的點。 那附加到變量而不是覆蓋它。

假設除了每個POST的許多單選按鈕響應外,您只有一名員工提交一條評論,那么您可以使用類似以下內容的方法:

foreach ($_POST ['Radio'] as $value) {
    $Body .= "$EmpName, $value, $Comment\n";
}

希望這可以幫助!

我這樣修改了您的代碼-

        <form method="post" >

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="10" colspan="7"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>
          <h4>Excellent</h4>
        </td>
        <td>
          <h4>Very Good</h4>
        </td>
        <td>
          <h4>Good</h4>
        </td>
        <td>
          <h4>Satisfactory</h4>
        </td>
        <td>
          <h4>Poor</h4>
        </td>
        <td>
          <h4>N/A</h4>
        </td>
      </tr>
      <tr>
        <td height="30">
          <label>Ian Matthews
            <input type="hidden" name="EmployeeName1" value="Ian Matthews" />
          </label>
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="10-Excellent" />
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="7-VeryGood" />
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="4-Good" />
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="0-Satisfactory" />
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="-5-Poor" />
        </td>
        <td align="center">
          <input type="radio" name="Radio1" value="N/A" />
        </td>
      </tr>
      <tr>
        <td height="30">
          <label class="colourGrey">Comments:</label>
        </td>
        <td colspan="6" align="center">
          <input class="teamCom" type="text" name="Com1" />
        </td>
      </tr>
      <tr>
        <td height="10" colspan="7"></td>
      </tr>
      <tr>
        <td colspan="7" class="BorderLine"></td>
      </tr>
      <tr>
        <td height="10" colspan="7"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>
          <h4>Excellent</h4>
        </td>
        <td>
          <h4>Very Good</h4>
        </td>
        <td>
          <h4>Good</h4>
        </td>
        <td>
          <h4>Satisfactory</h4>
        </td>
        <td>
          <h4>Poor</h4>
        </td>
        <td>
          <h4>N/A</h4>
        </td>
      </tr>
      <tr>
        <td height="30">
          <label>Ciara Maguire
            <input type="hidden" name="EmployeeName2" value="Ciara Maguire" />
          </label>
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="10-Excellent" />
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="7-VeryGood" />
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="4-Good" />
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="0-Satisfactory" />
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="-5-Poor" />
        </td>
        <td align="center">
          <input type="radio" name="Radio2" value="N/A" />
        </td>
      </tr>
      <tr>
        <td height="30">
          <label class="colourGrey">Comments:</label>
        </td>
        <td colspan="6" align="center">
          <input class="teamCom" type="text" name="Com2" />
        </td>
      </tr>
      <tr>
        <td height="10" colspan="7"></td>
      </tr>
      <tr>
        <td colspan="7" class="BorderLine"></td>
      </tr>

      </table>
                <input type="submit" value="Send Feedback" />

            </form>


     <?php

     if(isset($_POST)) {

    $EmailFrom = "";
    $EmailTo = "";
    $Subject = "Questionnaire";

    $Body = "";

    $noParaPerEmployee = 3;
    $n = 0;

    foreach ($_POST as $key=> $value) {
        //echo "$key => $value <br/>";
        //$Body .= "$EmpName, $Radio, $Comment\n";
        $Body .= "$value , ";
        $n++;
        if($n===3) {
            $Body = substr($Body,0, -2); // get rid of last comma..
            $Body .= "\n";
            $n = 0;
        }

      }

    //echo "$Body <br/>\n";
    $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");


    if ($success){
      print "top work";
    }
    else{
      print "you have a error";
    }

     }

    ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM