2015-10-31 136 views
1

我有兩個php頁面。 - 第一個表單在數據庫中插入數據。 - 第二個插入數據庫的所有數據。從php頁面編輯數據庫行

我怎麼能在概念上爲每行添加一個按鈕「更新」,允許我改變該行的某些值(在我的例子中是2 dropdownlist的值)並更新數據庫中的這些信息以及。

這是我能夠做到在尋找互聯網上的代碼,我有2個問題: 首先,工作只有第二個更新按鈕(所以纔有了第二排得到更新)。 第二個,這些更改不會反映到下拉列表中。 (意味着如果我更改第二行數據庫更新,但不是下拉列表)。

注意,我實現了兩列

<td>" . $row['status'] . "</td> 
<td>" . $row['priority'] . "</td> 

只檢查數據庫中的值更改。

<form method="post" action="job-status.php"> 
      <?php 

    include("../includes/connection.php"); 

     if($link->connect_errno > 0){ 
      die('Unable to connect to database [' . $link->connect_error . ']'); 
     } 

     if(isset($_POST['update'])) { 
      $results = $link->query("UPDATE job SET status='$_POST[status]', 
     priority='$_POST[priority]' WHERE id='$_POST[hidden]'"); 

     }  
      $sql = "SELECT * from job"; 
     if(!$result = $link->query($sql)){ 
      die('There was an error running the query [' . $link->error . ']'); 
     } 
     echo " 
    <table class='table'> 
     <thead> 
      <tr>"; 
     /* Get field information for all columns */ 
     while ($finfo = $result->fetch_field()) { 
      echo " 
      <th>" . $finfo->name . "</th>"; 
     } 
     echo " 
      </tr> 
     </thead> 
     <tbody>"; 
     while($row = $result->fetch_assoc()){ 
     echo "<tr class='info'> 

        <td>" . $row['id'] . "</td> 
        <td>" . $row['device'] . "</td> 
        <td>" . $row['model'] . "</td> 
        <td>" . $row['problem'] . "</td> 
        <td><select class='form-control col-sm-10' id='status' name='status'> 
         <option value='new'>New</option> 
         <option value='progress'>Progress</option> 
         <option value='wait'>Wait</option> 
         <option value='done'>Done</option> 
         <option value='close'>Close</option> 
        </select></td> 

        <td><select class='form-control col-sm-10' id='priority' name='priority'> 
        <option value='high'>High</option> 
         <option value='medium'>Medium</option> 
        <option value='low'>Low</option> 
        </select></td> 

         <td>" . $row['status'] . "</td> 
         <td>" . $row['priority'] . "</td> 

        <input type=hidden name=hidden value=" . $row['id'] . "> 

<td><button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td> 

<td> <a class='btn btn-primary btn-sm' data-toggle='modal' data-target='#myModal'>Info</a></td> 
       </tr>"; 
     } 
     echo " 
     </tbody> 
</table>"; 
?> 
</form> 

enter image description here

+0

概念?編輯按鈕創建一個表單提交,它調用位於您的服務器上的send.php表單。顯然你必須發送所有數據到該鏈接,而不僅僅是名稱。該php文件驗證用戶所需的編輯,然後將更新推送到mySQL數據庫。提交後,刷新數據庫顯示頁面給用戶(顯示更新的數據條目)您也可以使用Ajax,但這有點棘手(並且需要使用JavaScript)或其他工具 – zipzit

+0

@zipzit除了提交表單和JavaScript可以被僱用? – Terminus

+0

看看Symfony及其數據庫提取層,Doctrine ..(注意還有其他工具是這樣的......)或學習Angular.js等先進的JavaScript工具是如何工作的。注意:這些不是用於臨時修復的..這些是高度開發的工具,需要一些時間來理解和實施。 – zipzit

回答

0

您可以使用另一個TD爲您的表的每一行:

"<td>" . $row['name'] . '</td><td><a href="LINK">Edit</a>' . "</td>" 

LINK將是你的控制器的鏈接,如果你是唱MVC模式,並且您可以傳遞要刪除的que行的id。我的意思是像somethig:

"<td>" . $row['name'] . "</td><td><a href='clientes/editar?id=" . $row['id'] . "'>Edit</a> . "</td>" 

這樣你可以通過點擊「編輯」鏈接編輯的任何行。請記住在控制器中實現更新具有特定ID的行的邏輯。爲此,您可以使用ORM,它可以幫助您訪問數據庫。

+0

如果我只想編輯一列,它會是一樣的嗎?如果我有一個多選的下拉菜單和側面的提交按鈕,以便將更改發送到數據庫並更新它? – gigi

+0

使用這種方式,您不需額外需要你的刪除按鈕了。您只需點擊編輯鏈接,您的控制器將負責其餘部分。你必須確保該鏈接將帶您到控制器,當然。 –

+0

我做了一些工作,並更新我的問題,你能不能給我任何其他提示嗎? – gigi

0

我用下面的代碼解決了部分問題。 剩下的唯一問題是:下拉菜單顯示所有值加上存儲在數據庫中的值,以便值顯示兩次。 (參見圖)

while($row = $result->fetch_assoc()){ 
       echo "<form action='' method=post>"; 
       echo "<tr class='info'> 
      <input type=hidden name=hidden value=" . $row['id'] . "> 
         <td>" . $row['id'] . "</td> 
         <td>" . $row['device'] . "</td> 
         <td>" . $row['model'] . "</td> 
         <td>" . $row['problem'] . "</td> 

    <td><select class='form-control col-sm-10' id='status' name='status'> 

     <option value=". $row['status'] ." >" . $row['status'] . "</option> 
          <option value='new'>New</option> 
          <option value='progress'>Progress</option> 
          <option value='wait'>Wait</option> 
          <option value='done'>Done</option> 
          <option value='close'>Close</option> 
                           </select></td> 

    <td><select class='form-control col-sm-10' id='priority' name='priority'> 
    <option value=". $row['priority'] ." >" . $row['priority'] . "</option> 
           <option value='high'>High</option> 
           <option value='medium'>Medium</option> 
           <option value='low'>Low</option> 
    </select></td> 


          <td>" . $row['status'] . "</td> 
          <td>" . $row['priority'] . "</td> 

    <td> <button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td> 

     <td> <a class='btn btn-primary btn-sm' data-toggle='modal' data-target='#myModal'>Info</a></td> 
    </tr>"; echo"</form>"; 
      }  
      echo " 
      </tbody> 

     </table>"; 

enter image description here