2014-03-25 61 views
0

我對如何從頁面中的函數中刪除數據庫中的特定行感到頭疼。這是我卡住的地方:我知道我必須使用行中的特定ID,所以我把我的$ id放在while循環中,並且在這裏我被卡住了。因爲我不知道如何從特定行中檢索該ID。在每一行中,都有一個「提交」按鈕來刪除它。有人可以幫助我?如何在php函數中刪除頁面中的mySQL中的特定行

在我的其他網頁時,我把這些2個功能:

<input type="hidden" name="id" value="'.$id.'"> 
當然這的

<?php 
session_start(); 
include_once('connect.php'); 
$object = new User; 
if(isset($_POST['supprimer'])) { 
    $object->supprimer($id); 
} 
?> 

<html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="public/css/layout.css"> 
    </head> 
    <body> 
     <?php $object->showConcessionnaire(); ?> 
    </body> 
</html> 

PHP

public function showConcessionnaire(){ 
      $st = $this->db->prepare("SELECT * FROM `phplogin`.`users` WHERE type='Concessionnaire'"); 
      $st->execute(); 
      echo '<form action="supprConc.php" method="post"> 
      <table class="tableCredit"> 
       <tr class=""> 
        <th>Date</th> 
        <th>Nom d\'utilisateur</th> 
        <th>Mot de pass</th> 
        <th>E-mail</th> 
        <th>Cr&eacute;&eacute; par</th> 
        <th></th> 
        <th></th> 
       </tr> 
       '; 
      while($r = $st->fetch(PDO::FETCH_ASSOC)){ 
       $id = $r['ID']; 
       echo '<tr class="lightGray"> 
        <td>'.$r['Date'].'</td> 
        <td>'.$r['username'].'</td> 
        <td>'.$r['password'].'</td> 
        <td>'.$r['E-mail'].'</td> 
        <td>'.$r['Creer par'].'</td> 
        <td></td> 
        <td><input type="submit" name="supprimer" value="X" class="logout"></td> 
        </tr>'; 
      } 
      echo '</table></form>'; 
     } 


    public function supprimer($id){ 
      $st = $this->db->prepare("DELETE FROM `phplogin`.`users` WHERE `users`.`id` = '$id'"); 
      $st->execute(); 
     } 
+0

你需要給你的提交按鈕賦予不同的值,你的代碼看起來並沒有這樣做。 – Maximus2012

+0

此外,我不知道你是如何調用supprimer($ id)函數,因爲這個函數的唯一引用似乎是你的提交按鈕的名稱,顯然不會工作。 – Maximus2012

+0

旁註:我注意到你的'Creer par'列中有一個空格。如果您沒有考慮到在先前的查詢中需要使用反引號來包裝列(有空格),請查看該列。它不會解決你的問題,我只是說。 * Plus *,連字符也應該改爲強調「電子郵件」。 SQL可能會因爲想要執行一個數學方程而變得不合時宜。 –

回答

1

一個解決方案是插入一個隱藏的輸入,其中包含行的ID。

<input type="hidden" name="rowID" value="$id" /> 

然後再調用你的函數...

$object->supprimer($_POST['rowID']); 

當!確保你逃脫你的字符串以避免SQL注入!

0

你可以用你的ID添加隱藏的輸入字段在你的echo,你應該移動到你的<td>

+0

它將如何與OP要刪除的特定行綁定? – Maximus2012

+0

哦,對,把'form'移到行中。 – skywalker

1

更改此:

<td><input type="submit" name="supprimer" value="X" class="logout"></td> 

這樣:

<td><input type="submit" name="supprimer" value=".$id." class="logout"></td> 

,然後改變你的函數調用:

$object = new User; 
if(isset($_POST['supprimer'])) { 
    $id = $_POST['supprimer']; 
    $object->supprimer($id); 
} 

這並不完全安全的解決方案,但更像是一個證明的概念來展示這種方法。

相關問題