2013-05-21 18 views
0

我有一個選擇值「後」,當有人想從未解改變後的狀態,以解決他們必須選擇一個職位恩比點擊「更改爲解決」帖子沒有完全貼PHP

的問題是當我點擊按鈕時,它不會改變,因爲PHP不需要整個帖子的標題。所以當我的帖子被稱爲'Photoshop崩潰'時,它只發送'Photoshop'。這就是爲什麼它不在我的數據庫中更新,查詢無法找到正確的帖子,當帖子的標題只有1個字,我的表得到更新。

<?php 
if (isset($_POST['btnSolved'])) 
{ 
// wanneer er op de knop geklikt is proberen we user te saven in de databank 
if (!empty($_POST['btnSolved'])) 
{ 
    $solved = $_POST['unsolved']; 
    $conn = new mysqli("localhost","root","root","PhpProject"); 
    if ($conn -> connect_errno) { 
     throw new Exception("No connection with database!"); 

    } else { 
     $sql = "UPDATE Posts SET status = 'Solved' WHERE post='".$solved."'"; 
    } 
    } 
    $conn->query($sql); 
    } 
    ?> 

在我的身上:

<h3>Change status</h3> 
     <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
      <?php 
      if(mysqli_num_rows($showBugs) > 0) 
      { 
       echo "<select name= unsolved>"; 
       while ($row = mysqli_fetch_assoc($showBugs)) 
       { 
        echo "<option value=" . $row['subject'] . ">" . $row['subject'] . "</option>"; 
       } 
       echo "</select>"; 
      } 
      ?> 
      <br /> 
      <input class="btn btn-info dropdown-toggle" type="submit" name="btnSolved" value="Change to solved" /> 
     </form> 

這是我所得到的,當我做了$ sql中的打印

UPDATE Posts SET status = 'Solved' WHERE post='Photoshop' 

有人不知道爲什麼PHP可以發佈1個字,但不是整個標題?這可能是愚蠢的,但我不知道如何解決這個問題。

+2

您的瀏覽器具有「查看源」功能(通常通過按Ctrl + U來達到)。用它來找出你的''

+0

這和打印一樣。 我該如何改變它?把id而不是主題? – Lupicora

+0

@Lupicora - 你需要把你的價值放在單引號中。檢查我的答案。 – Rikesh

回答

0

嘗試封閉在單引號的價值,

echo "<option value='" . $row['subject'] . "'>" . $row['subject'] . "</option>"; 
+0

謝謝,它現在有效。 – Lupicora

0

瀏覽器將無法解析這一點,如果正確$行[ '主題']包括兩個詞:

echo "<option value=" . $row['subject'] . ">" . $row['subject'] . "</option>"; 

您的瀏覽器將讀取

<option value=two words> 

<option value=two> 

並且不知道該怎麼辦用詞

使用轉義雙引號

echo "<option value=\"" . $row['subject'] . "\">" . $row['subject'] . "</option>"; 
+0

謝謝,它現在已經修復。也謝謝你的解釋,我現在明白了! – Lupicora

1

您的問題是您的html中沒有引號。 修復此:

echo "<option value=" . $row['subject'] . ">" . $row['subject'] . "</option>"; 

這樣:

echo '<option value="' $row['subject'] . '">' . $row['subject'] . "</option>"; 
+0

感謝您的幫助! – Lupicora

0

您需要添加引號值屬性。如果你有你的價值的報價,你需要通過htmlentities()通過$row['subject']這樣的:

echo '<option value="' . htmlentities($row['subject']) . '">' . htmlentities($row['subject']) . "</option>"; 

在這種情況下ヶ輛()用於不需要標籤,但它是很好的做法。