2013-05-02 33 views
0

我目前的上傳系統建立一個數據庫 - 我用一個選擇框來限制數量的類別添加到數據庫中。MySQL的選擇框複製 - 複製一個字段選項而不是其他的(查詢相同)

<select name="category"> 
<?php 
$conn = mysqli_connect("localhost", "blah", "blah") or die ("No connection"); 

mysqli_select_db($conn, "UPLOAD") or die("db will not open"); 

$query = "SELECT category FROM details GROUP BY category"; 

$result = mysqli_query($conn, $query) or die("Invalid query"); 

while($row = mysqli_fetch_array($result)) { 
       echo "<option value=\"" . $row[0] . "\">" . $row[0] . "</option>"; 
       }    
      mysqli_close($conn); 
      ?> 
    </select> 

    <select name="reaction"> 
      <?php 
      $conn = mysqli_connect("localhost", "blah", "blah") or die ("No connection"); 

      mysqli_select_db($conn, "UPLOAD") or die("db will not open"); 

      $query = "SELECT reaction FROM details GROUP BY reaction"; 

      $result = mysqli_query($conn, $query) or die("Invalid query"); 

      while($row = mysqli_fetch_array($result)) { 
       echo "<option value=\"" . $row[0] . "\">" . $row[0] . "</option>"; 
       }    
      mysqli_close($conn); 
      ?> 

雖然這兩個查詢是相同的 - 只有類別(頂部查詢)正在停止形式從我的分貝重複多個數據。當我查看我的數據庫 - 這是我發現的(我有預感可能是問題)。

INSERT INTO `details` (`name`, `category`, `reaction`, `photo`, `date_added`) VALUES 
('Mase Laughing', 'Funny', 'Laugh\n', 'mase-laugh.gif', '2013-05-01 07:16:26'), 
('Movie Wink', 'Cheeky', 'Wink\n', 'movie-wink.gif', '2013-05-02 12:33:12'), 
('Tarzan Giggle', 'Funny', 'Wink\r\n', 'tarzan-laugh.gif', '2013-05-02 01:33:00'); 

旁邊的反應我得到這些奇怪的\r\n字母 - 人有什麼想法? 在此先感謝。

+0

爲什麼你建立和斷開更新原來的問題數據庫連接多次? – NullPointer 2013-05-02 11:49:27

+0

我是所有這一切的新人 – user1826917 2013-05-02 11:51:02

+0

你想添加多個反應,但它失敗?像selext盒子有'有趣','震驚','噓聲'的反應。我可以選擇boo和funny,這兩個反應將被存儲在數據庫中? – 2013-05-02 12:04:32

回答

0

這些是 「回車」(\ r)和 「換行」(\ n)的字符。這些命令會告訴您的計算機走到線的末端並換到新線。

從顯示重複的類別停止你的頁面,更改此:

$query = "SELECT category FROM details GROUP BY category"; 

成這樣:

$query = "SELECT distinct category FROM details GROUP BY category"; 

它不會阻止你的數據庫中存儲重複的類別(你做不想要的,否則您只能保存每個類別的一(1)行詳細信息,但它會阻止您的下拉列表(select)顯示重複內容。因此,根據您顯示的詳細信息,它會爲您提供一個下拉列表,有趣「和」Cheecky「,他們都展示了一次。 添加「不同」到其他SQL語句也有反應,消除重複過:

$query = "SELECT DISTINCT reaction FROM details GROUP BY reaction"; 
+0

啊 - 那麼沒有什麼值得警惕的? – user1826917 2013-05-02 11:52:11

+0

根本不是我的朋友:-)這只是意味着他們按下「輸入」。根據他們的系統(windows/linux/mac/...),該輸入被翻譯爲\ n或\ r \ n。 – Borniet 2013-05-02 11:55:30

+0

AH-感謝這使得SENCE – user1826917 2013-05-02 11:56:57

0

在這裏,我通過減少冗餘代碼

<?php 
    $conn = mysqli_connect("localhost", "root", "") or die ("No connection"); 
    mysqli_select_db($conn, "test") or die("db will not open"); 
?> 
<select name="category"> 
<?php 

    $query = "SELECT category FROM details GROUP BY category"; 
    $result = mysqli_query($conn, $query) or die("Invalid query"); 
    while($row = mysqli_fetch_array($result)) { 
     echo "<option value='" . $row[0] . "'>" . $row[0] . "</option>"; 
    }    
?> 
</select> 

<select name="reaction"> 
<?php 
    $query = "SELECT reaction FROM details GROUP BY reaction"; 
    $result = mysqli_query($conn, $query) or die("Invalid query"); 

    while($row = mysqli_fetch_array($result)) { 
     echo "<option value='" . $row[0] . "'>" . $row[0] . "</option>"; 
    }    
    mysqli_close($conn); 
?> 
</select> 
+0

即使你可以做一兩件事,只要你允許在文本字段中錄入代替'\ r \組合N'爲'\ N'所以沒有不匹配會發生。 – NullPointer 2013-05-02 13:32:00

相關問題