2013-03-28 14 views
0

我在網上搜索了幾個小時,我無法找出它是否顯示在表格爲什麼正確,爲什麼它不保存到MySQL數據庫是否正確?CONCAT顯示姓氏和名字,但只有第一個名稱保存到mysql數據庫

我的形式我有一個下拉,顯示我的學生的名字和我使用下面的代碼爲下拉拿到第一和最後一個名字:

<?php 
$stud_sql = "SELECT CONCAT (First_name,' ', Last_name) AS fullname FROM students"; 
$stud_results = mysqli_query($db_conx, $stud_sql); 
     echo "<select name='fullname'>"; 
     while ($row = mysqli_fetch_array($stud_results, MYSQLI_ASSOC)){ 
      $fullname = $row['fullname']; 
      echo "<option value=".$row['fullname'].">" . $row['fullname'] . "</option>"; 
      } 
      echo "</select>"; 
      ?> 

下拉的形式顯示名字完美的名字,但是當我嘗試發佈到我的mysql數據庫它只保存第一個名字而不是兩個?

下面的代碼發佈到數據庫:

if (isset($_POST['fullname']) && ($_POST['fullname'] !='')){ 
$studentname = $_POST['fullname']; 

    if (empty($studentname)) 
    { 
     $errors[] = "Missing student name."; 
    } 

if (count($errors) > 0) 
    { 
     //there were validation errors, prepare error message 
     $response = "<span style=\"color:red;\">"; 
     $response .= "the following errors occured:\n"; 
     $response .= "<ul>"; 
     $response .= '<li>' .implode('</li><li>', $errors) . '</li>'; 
     $response .= "</ul>\n"; 
     $response .= "</span>\n"; 
    } 
else 
    { 
     //No validation errors, save the dat to database 
     $studentname = mysqli_real_escape_string($db_conx, $studentname); 
$sql = "INSERT INTO incidentform (`studentname`) value ('$studentname')"; 
$query = mysqli_query($db_conx, $sql); 

所以纔要清楚的CONCAT將顯示例如FUNKY MONKEY但只有質樸會得到保存到數據庫中。

確定馬克·B已經建議這些變化將保存FULLNAME到數據庫,但現在只能在下拉顯示1名?

Name of Student: 
     <select name='fullname'> 
     <option value="$id"><?php echo $fullname; ?></option> 
     </select> 
and 
$stud_sql = "SELECT id, CONCAT (First_name,' ', Last_name) AS fullname FROM students"; 
$stud_results = mysqli_query($db_conx, $stud_sql); 


    while ($row = mysqli_fetch_array($stud_results, MYSQLI_ASSOC)){ 

      $fullname = $row['fullname']; 
} 

有關我如何獲得完整列表的任何建議嗎?

+0

相反在線搜索的(你正在尋找?)你必須調試這個非常的代碼。 –

+0

...和**查看頁面源**作爲此調試的一部分。 –

+0

現在問題可以被封閉,因爲太局部化了。 –

回答

-1

您有一個HTML錯誤。

在這一行

"<option value=".$row['fullname'].">" 

您需要將$row['fullnane']之間添加單引號....

"<option value='".$row['fullname']."'>" 
-1

您試圖插入場「studentname」持有的全名,但你從「FIRST_NAME」和「姓氏」檢索。要麼在正確的字段中插入名字和姓氏(我推薦),要麼在字段中插入全名。

編輯 - 看起來像有人在玩樂瞬間downvoting答案,長大。

0

它看起來就像你不能正確使用該數據庫。您應該爲學生選擇一個ID以及他們的名字,例如

SELECT id, CONCAT(first_name, ' ', last_name) 
FROM students 

,然後使用

<option value="$id">$fullname</option> 
在表單

提交後,你插入值$ ID即可incidentform,現在你已經得到了事件和學生之間的聯繫,基於這一共同id字段。你的系統基本上將任何碰巧分享名字的學生都搞砸了。例如「約翰史密斯」(編號#42)被拘留,但你只在事件報告中儲存「約翰史密斯」。現在約翰史密斯(#37)和約翰史密斯(#203)也陷入困境。

+0

我已經對 – frosty

+0

,我現在可以將兩個名稱都添加到數據庫中,它只在列表中顯示1個名稱? – frosty

+0

也考慮到這一點,因爲學校只有80名學生,不太可能有兩名學生具有相同的名字,但更不可能的是,他們將在同一班上,因爲它的特殊需要的上學年齡不是階級形成的因素。 – frosty

相關問題