2016-09-19 79 views
1

嗨,我似乎無法弄清楚這一點。我有一個表,我想在這裏補充刪除功能是我的代碼href不工作我的回聲php

<?php   
$delete = "delete"; 
    $user = $_SESSION['hlbank_user']['user_id']; 
    $sql = "SELECT * FROM tbl_complains where user_id='".$user."' ORDER BY create_date asc "; 
    $result = dbQuery($sql); 
    while($row = dbFetchAssoc($result)){ 

     if($row['eng_id']==0){ 
     $engid= 'N/A'; 
     }else{ 
    $sqls = "SELECT * FROM tbl_engineer where eid='".$row['eng_id']."'"; 
    $results = dbQuery($sqls); 
    $rows = dbFetchAssoc($results); 
     $engid= $rows['ename']; 
     } 
     echo '<tr class="row1" style="height:25px;"> 
      <td align="center">'.$row['acc_no'].'</td> 
      <td align="center">'.$row['comp_name'].'</td> 
      <td align="center">'.$row['comp_desc'].'</td> 
      <td align="center">'.$row['status'].'</td> 
      <td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>'; 
      //The problem is in this line. When ever i try putting a href the whole table will not show. 

     echo '</tr>'; 

    } 
?> 

,這裏是我的delete.php

<?php 

if(isset($_GET['user_id'])) { 
$id = $_GET['user_id']; 

$con = new mysqli('localhost', 'root', '', 'db_hlbank'); 
$sql = 'DELETE FROM tbl_complains WHERE user_id = ?'; 
$delete = $con->prepare($sql); 
$delete->bind_param('i', $id); 
$delete->execute(); 

if($delete->affected_rows > 0) { 
    header('Location: index.php'); 
} 
} 

?> 

另一個問題: 是否有這個不調用刪除整合的方式。 PHP的?

非常感謝!

+2

問題在報價中。 –

+0

'Delete';' –

+0

嗨SIr @anant!感謝您的評論,所有的東西都能正常工作! –

回答

1

一些不必要的報價+點。不要象下面這樣: -

<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>'; 

所以代碼將是: -

echo '<tr class="row1" style="height:25px;"> 
      <td align="center">'.$row['acc_no'].'</td> 
      <td align="center">'.$row['comp_name'].'</td> 
      <td align="center">'.$row['comp_desc'].'</td> 
      <td align="center">'.$row['status'].'</td> 
      <td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>'; 
     echo '</tr>'; 
1

你缺少名言。

'<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>'; 

如果你需要能夠從一個頁面刪除多個用戶,我建議你使用delete.php。但是,您可以使用jQuery AJAX來處理請求,而無需重新加載頁面。

+0

很好的複製和粘貼 –

0

改變這一行

<td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>'; 

<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>'; 
2

這應該工作:

echo '<tr class="row1" style="height:25px;"> 
     <td align="center">'.$row['acc_no'].'</td> 
     <td align="center">'.$row['comp_name'].'</td> 
     <td align="center">'.$row['comp_desc'].'</td> 
     <td align="center">'.$row['status'].'</td> 
     <td align="center">'.'<a href="delete.php?id='.$row['user_id'].'">'.'Delete'.'</a>'.'</td>'; 
1

有問題與報價

更換

<td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>'; 

隨着

<td align="center">'.'<a href="delete.php?id='.$row['user_id'].'">Delete</a></td>'; 

這肯定會起作用。

0

如果您在文章中查看代碼的語法高亮顯示,您應該能夠發現錯誤。

這就是說有幾件事你應該仔細閱讀,以便大大提高代碼的質量。

第一件事是SQL中的JOIN。
在這種情況下,您希望在tbl_engineer表上對您已設置的外鍵關係進行INNER JOIN。這會使查詢看起來像這樣:

SELECT [fields] FROM companies AS c 
INNER JOIN engineers AS e ON e.id = c.engineer_id 
ORDER BY c.date 

這將幫助您大大減少您運行的查詢的數量。從1 + x(其中x是記錄數)到1。如果有幾千條記錄,腳本的資源消耗迅速增加。

第二件事是你有幾個安全問題在這裏。即通過會話數據進行SQL注入,因爲您尚未在此處使用準備好的語句;並且通過表格進行XSS攻擊,因爲您尚未使用htmlspecialchars()來阻止用戶將HTML注入源代碼。

第三件事是,您應該總是在header()重定向後使用die()。否則PHP腳本將繼續運行,並在重定向後執行大部分/全部代碼。

第四個小問題是,您的縮進可能會進行一些清理。確保你縮進一致,並妥善。這將幫助您和其他人稍後閱讀您的代碼,並減少發生錯誤的可能性。

另外,如果沒有「delete.php」頁面,您不能「刪除」到腳本中。這是因爲HTTP通信的工作原理,因爲您需要在接收並處理用戶請求的服務器上擁有一個頁面。
您可以最接近的是將刪除代碼移入從數據庫中提取數據的腳本。如果你這樣做,那麼你需要在URL中添加第二個參數來告訴你的腳本運行該代碼分支。

1
To avoid getting into a mess with quotes in future,you can write something like: 

<?php foreach($results as $result): ?> 

//say you have stored the results in $results as an associative array after executing a query 

<tr> //looping an entire row 
<td align=""><?=$result['name']?></td> 
<td align=""><?=$result['email']?></td> 
. 
. 
. 
<td align=""><a href="delete.php?id=<?=$result['id']?>">Delete</a></td> 
</tr> //end of row 

<?php endforeach; ?> //end of loop