2016-09-19 12 views
1

こんにちは私はこれを理解しているようです。私はテーブルを持っていると私は削除機能は、ここに私のコードhrefがうまくいきません。

<?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

こんにちは!あなたのご意見ありがとうございました。 –

答えて

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>'; 

1ページから複数のユーザーを削除する必要がある場合は、delete.phpを使用することをおすすめします。ただし、ページをリロードしないで、jQuery AJAXを使用してリクエストを処理できます。

+0

すてきなコピー&ペースト –

0

変更これは動作するはず

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

にこのライン

<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>'; 
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のJOINsがあります。
この場合、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になります。数千のレコードがある場合、スクリプトのリソース消費は急激に増加します。

第2の問題は、ここにいくつかのセキュリティ問題があることです。つまり、ここで準備文を使用していないので、セッションデータを介したSQLインジェクションを使用します。 htmlspecialchars()を使用していないので、ユーザーがHTMLをソースに注入しないようにするため、XSSはテーブルを介して攻撃を行います。

第3の点は、header()リダイレクト後に常にdie()を使用することです。それ以外の場合、PHPスクリプトは引き続き実行され、リダイレクト後にコードのほとんどまたはすべてを実行します。

4番目の小さな問題は、字下げがいくつかのクリーンアップを行うことができることです。一貫して適切にインデントしてください。これは、あなたと他の人があなたのコードを後で読むのに役立ち、バグが発生する確率を減らします。

また、「delete.php」ページなしで削除をスクリプトに組み込むことはできません。これは、ユーザーの要求を受け取り、処理するページをサーバー上に置く必要があるため、HTTP通信の仕組みのためです。
最も近いのは、削除コードをデータベースからデータを取得するスクリプトに移動することです。そうした場合、URLに2番目のパラメータを追加して、コードのその枝を実行するようスクリプトに指示する必要があります。

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 
関連する問題