2013-07-29 112 views
3

我有一個在線表格,列出了我孩子棒球聯盟的投手信息。表格允許輸入多個投手(未知數量)。我有問題循環播放結果,以便通過電子郵件發送給我。PHP電子郵件只填充值

下面是從代碼的形式(這是pitcher1 - 高達每表格10名投手):

<tr bgcolor=#cfcfcf> 
<td align=center><b>Team</td><td align=center><b>Pitcher Name</td> 
<td align=center><b>Age</td><td align=center><b>Pitches</td></tr> 
<tr> 
<td><select name="pitcherteam1" size="1"> 
<option>PLEASE SELECT TEAM 
<option>Team 1</option> 
<option>Team 2</option> 
<option>Team 3</option> 
</select></td><td> 
<input type=text size=50 name="pitcher1"></td> 
<td><select name="pitcherage1" size="1"> 
<option>AGE 
<option>8 
<option>9 
</select></td> 
<td><input type="text" size=3 name="pitcherpitches1"></td></tr> 

這是我在我的PHP郵件功能:

$size_array = count($_POST['pitcher[]']); 
for ($i=0; $i<$size_array; $i++){ 
$message .= <<<MESSAGE 

<tr><td>$_POST['pitcherteam'][$i]</td> 
<td><b>$_POST['pitcher'][$i]</td> 
<td><b>$_POST['pitcherage'][$i]</b></td> 
<td><b>$_POST['pitcherteam'][$i]</b></td></tr> 
MESSAGE; 
} 

我m希望循環遍歷表單並僅定位具有投手輸入的行(vs.每次回顯所有10行,並在非填充字段中顯示空白/錯誤數據)。

+0

是不是真的在這裏任何MySQL是嗎? – Strawberry

+0

您可以檢查以確保它們是'isset'或檢查以確保輸入了某些內容if($ _ POST ['pitcherage'] [$ i]!==「」){}'。 – Phas1c

回答

1

更改您的投入使用[]語法而不是設置了許多:

<tr bgcolor=#cfcfcf> 
<td align=center><b>Team</td><td align=center><b>Pitcher Name</td> 
<td align=center><b>Age</td><td align=center><b>Pitches</td></tr> 
<tr> 
<td><select name="pitcherteam[]" size="1"> 
<option>PLEASE SELECT TEAM 
<option>Team 1</option> 
<option>Team 2</option> 
<option>Team 3</option> 
</select></td><td> 
<input type=text size=50 name="pitcher[]"></td> 
<td><select name="pitcherage[]" size="1"> 
<option>AGE 
<option>8 
<option>9 
</select></td> 
<td><input type="text" size=3 name="pitcherpitches[]"></td></tr> 

然後取出[],因爲PHP會自動將它們解析爲本機數組。也有一個檢查,如果投手是空白的,你可以忽略這一行。

$size_array = count($_POST['pitcher']); // <-- notice there's no [] 
for ($i=0; $i<$size_array; $i++){ 
    if($_POST['pitcher'][$i] != ''){ 
     $message .= <<<MESSAGE 
     <tr><td>{$_POST['pitcherteam'][$i]}</td> 
     <td><b>{$_POST['pitcher'][$i]}</td> 
     <td><b>{$_POST['pitcherage'][$i]}</b></td> 
     <td><b>{$_POST['pitcherteam'][$i]}</b></td></tr> 
MESSAGE; 
    } 
} 
+0

我喜歡這個概念!所以 - 我可以重複所有10個條目的表單代碼,並且php可以區分?另外 - 出於某種原因 - 當我將php代碼塊添加到我的電子郵件表單時 - 它會拋出500內部服務器錯誤。我需要提前申報嗎?它適用於本節評論。 – homermac

+0

我修復了這個問題,看看我的編輯。在heredoc中,變量需要圍繞它們的{}。此外,關閉heredoc的'MESSAGE;'在同一行之前不能有任何空格。是的,你可以重複HTML和PHP將區分(這是有效的,因爲它們以正確的順序依次出現)。 – MrCode

+0

現在工作完美 - 非常感謝! – homermac

0

檢查的$ _POST值[ '投手'] [$ i]設置,跳過該消息,如果它不是:

if(!isset($_POST['pitcher'][$i]}) continue; 

或者,爲您的代碼:

$size_array = count($_POST['pitcher[]']); 
for ($i=0; $i<$size_array; $i++){ 
    if(!isset($_POST['pitcher'][$i]}) continue; 
    $message .= <<<MESSAGE 
    <tr><td>$_POST['pitcherteam'][$i]</td><td><b>$_POST['pitcher'][$i]</td><td><b>$_POST['pitcherage'][$i]</b></td><td><b>$_POST['pitcherteam'][$i]</b></td></tr> 
MESSAGE; 
} 
0

這是我從嵌入的代碼中編寫的一個快速腳本。我在一個小時前看到你的問題,當時迴應有限,從那以後你似乎解決了你的問題。代替扔這個代碼,我想我會提供它,以防它可以幫助你或其他人。

的test.php ::

print "<html><head><title>title</title></head><body>"; 
$size_array = count($_POST['pitcher']); // <-- notice there's no [] 
for ($i=0; $i<$size_array; $i++){ 
    if($_POST['pitcher'][$i] != ''){ 
     $team = $_POST['pitcherteam'][$i]; 
     $pitchername = $_POST['pitchername'][$i]; 
     $age = $_POST['pitcherage'][$i]; 
     $pitcherpitches = $_POST['pitcherpitches'][$i]; 
     if ($pitchername) { 
     print "$team, $pitchername, $age, $pitcherpitches<br>"; 
     } 
    } 
} 

$form_input_row = '<table><tr bgcolor=#cfcfcf><td align=center><b>Team</td><td align=center><b>Pitcher Name</td><td align=center><b>Age</td><td align=center><b>Pitches</td></tr><tr><td><select name="pitcherteam[]" size="1"><option>PLEASE SELECT TEAM<option>Team 1</option><option>Team 2</option><option>Team 3</option></select></td><td><input type=hidden size=50 name="pitcher[]" value="somedata"><input type=text size=50 name="pitchername[]"></td><td><select name="pitcherage[]" size="1"><option>AGE<option>8<option>9</select></td><td><input type="text" size=3 name="pitcherpitches[]"></td></tr></table>'; 

print "<form method=\"POST\">"; 
for ($j = 0; $j<6; $j++) { 
    print $form_input_row; 
} 
print "<input type=\"submit\" value=\"submit\">"; 
print "</form></body></html>"; 
相關問題