2016-06-08 30 views
0

我有兩個表:event_title列出了即將發生的事件的Event_title_ID,標題和日期,並且event_reg存儲了來自提交表單的數據。根據下拉菜單選擇存儲第二個值作爲變量

我使用一個while循環來獲得來自event_title表中的數據來填充一個下拉菜單:

<select id="title" name="Event_title_ID"> 
<option value="0">Please Select One</option> 
<?php 
$q = "SELECT Event_title_ID, title, date FROM event_title ORDER BY date ASC"; 
    $r = mysqli_query($connection, $q); 
    if (mysqli_num_rows($r) > 0) { 
     while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC)) 
     { 
      echo '<option value="' . $row['Event_title_ID'] . '">' . $row['title'] . '</option>'; 
     } 
    } else { 
     echo '<option>No event to register for at this time</option>'; 
    } 
?> 
</select> 

運行驗證後,我設置了$行[「Event_title_ID」]爲$ Event_title_ID和插入它進入event_reg表。

根據用戶選擇的下拉項目,我還需要將$row['title']作爲變量$title存儲,以便可以在發送給管理員的電子郵件中調用它。

我不確定如何根據用戶選擇的下拉菜單中的值來存儲第二個值。

**** ****更新

謝謝@shut的答案。這裏是我的代碼:

形式:

<select id="title" name="Event_title_ID"> 
<option value="0">Please Select One</option> 

<?php // retrieve all the events from the event_title table 
$q = "SELECT Event_title_ID, title, date FROM event_title ORDER BY date ASC"; 
$r = mysqli_query($connection, $q); 

if (mysqli_num_rows($r) > 0) { 
    while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC)) 
    { 
     echo '<option value="' . $row['Event_title_ID'] .'-'.$row['title']. '">' . $row['title'] . '</option>'; 
    } 
} else { 
    echo '<option>No event to register for at this time</option>'; 
} 
?> 
</select> 

在驗證:

<?php 
    $errors = array(); 
    if (isset($_POST['Event_title_ID']) && $_POST['Event_title_ID'] == '0') 
     { 
      $errors[] = '<p id="eventErr">Please select an event.</p>'; 
     } else { 
      $event = explode('-' , $_POST['Event_title_ID']); 
      $Event_title_ID = $event[0]; 
      $title = $event[1]; 
     } 
?> 
+0

您是否嘗試使用[隱藏字段](http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_hidden) ? –

+0

是的,我嘗試使用隱藏字段 - 我應該提到這一點。當試圖將其添加到語法中時,結果從未如預期那樣回來。例如,在while循環內的閉合選項標籤之後直接添加一個隱藏字段導致下拉菜單中只顯示一個選項,而下拉菜單中的其他選項不顯示。你知道如何使用隱藏字段標記下拉列表,以便更正此行爲嗎? – Coleen

+0

很確定你不得不把你的隱藏領域放在你的下拉列表之外。每當下拉選擇索引變化或類似情況時,您都可以更新隱藏字段的值。 –

回答

1

您可以在選擇選項值同時使用EVENT_TITLE和event_title_id和驗證後,發生爆炸的是價值。 實施例

echo '<option value="' . $row['Event_title_ID'] .'-'.$row['title']. '">' . $row['title'] . '</option>'; 

和驗證使用後

$event = explode('-' , $_POST['Event_title_ID']); 
$Event_title_ID=$event[0]; 
$title=$event[1]; 
+0

這個伎倆!我會在下面發佈我的代碼。非常感謝! – Coleen

+0

我經常在我的驗證中使用spam_scrubber函數和以下語法:$ title = mysqli_real_escape_string($ connection,trim($ scrubbed ['title']));有沒有辦法將它添加到您上面發佈的代碼? – Coleen

相關問題