2017-10-28 7 views
0

私はhtml/php/javascriptを使ってプログラムを書いています。このプログラムの目的は、個人が行う仕事のリストを持つことです(これらの仕事はデータベースに保存されます)。彼らは仕事を完了するとボタンをクリックすることができるので、仕事は完了(または真)に変更されます。完了したジョブをクリックするためのユーザ入力はない。問題は、特定のジョブでボタンをクリックしたときに、データベースの「完了」列の値を変更する方法です。データベースのブール値を変更する方法

<html> 


<table> 
    <thead> 
     <tr> 
      <th> Business Name</th> 
      <th> Address </th> 
      <th> Done </th> 
     </tr> 
    </thead> 

    <tbody> 
     <?php 

      $servername = "localhost"; 
      $username = "root"; 
      $password = ""; 
      $dbname ="myDB"; 

      $conn = new mysqli($servername, $username, $password, $dbname); 
      if($conn->connect_error){ 
      die("Connection failed: " . $conn->connect_error); 
      } 

      $sql = "Select * from jobs where done = '1'"; 
      $result = $conn->query($sql); 

      while ($row = mysqli_fetch_assoc($result)): 
      $businessname = $row['Business']; 



     ?> 

     <tr> 
      <td><?php echo $row['Business']; ?> </td> 
      <td><?php echo $row['Address']; ?> </td> 
      <td><?php echo $row['Done']; ?> </td> 
      <td> <button type = 'submit' name = 'Done' value = '{businessname}' >Accept</button></td> 
     </tr> 


     <?php endwhile; ?> 
    </tbody>  
</table> 
</html> 
+2

は多分 '更新ジョブが完了= = 1ここで、IDを設定し、'?あなたはAJAXリクエストを送信する方法を尋ねていますか?あなたがハングアップしている場所を知りません – chris85

+0

ユーザーがボタンをクリックしたときに、データベースのブール値を変更することにつきました。 – greatsoccerman1

+0

そこにはいくつものステップがあります。現在、あなたは何もしない 'ボタン 'しか持っていません。あなたは、PHP処理ページに提出してDBを更新するフォームを作ることができます。また、AJAXイベントをPHPプロセッサに送るJSのリスナーを持つこともできます。 – chris85

答えて

0

これを試してみてください:

if($_POST['Done']){ 

global $conn; 

$done = trim($_POST["Done"]); 

$job_id = trim($_POST["job_id"]); 

$query = "UPDATE jobs SET done='$done' WHERE business = $job_id"; 

$res = mysqli_query($conn, $query) or trigger_error($conn->error."[ DB ]"); 

    if(mysqli_affected_rows($conn) > 0){ 
     $_SESSION['answer'] = "<div class='success'>Updated!</div>"; 
     return true; 
    }else{ 
     $_SESSION['edit_page']['res'] = "<div class='error'>Error!</div>"; 
     return false; 
    } 

} 
+0

これはSQLインジェクションに対してオープンです。 OPはこれを試してはいけません。また、 'global'は関数内で使われていないと意味がありません。 OPとこの答えはどちらも手続き型コードを使用しています。 – chris85

関連する問題