2017-07-21 10 views
0

問題は、MySQLデータベースから取得した従業員に関する短い情報を持つhtmlテーブルがあることです。私は、ButtonIDというフィールドに同じ値を持つ従業員に関する完全な情報を持つモーダルウィンドウを開くIDを持つボタンを作成しようとしています。私は希望のクエリを作成しようとし、phpのいくつかの変数に設定し、javascriptでそれにアクセスするが、それはうまく終了しませんでした。私はあなたが使用することをお勧めsqlのレコードをhtmlボタンのidと同じidで検索してモーダルを生成します

http://my-site.com/employee.php?id=12 

employee.php(アイデア)

$stmt = $conn->prepare("SELECT * FROM employees WHERE id=:id"); 
$stmt->execute(array(':id' => $_GET['id'])); 
$employee = $stmt->fetch(PDO::FETCH_ASSOC); 
print "<ul>"; 

//list the employee data 
foreach($employee as $key => $value) 
{ 
    $key = htmlspecialchars($key, ENT_QUOTES, 'UTF-8'); 
    $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8') 
    print "<li>". $key .': ' . $value . '</li>'; 
} 
print "</ul>"; 

<!-- 
in <input id = "1" type="button" value="Full Info" input id equals to sql 
'ButtonID' fields value 
--> 
Edit: 
<form action=""> 
<input id = "1" type="button" value="Full Info" 
onclick="fullInfo()"> 
</form> 

<!DOCTYPE html> 
    <html lang="en"> 
     <head> 
     <meta charset="utf-8"> 
     <title>Список сотрудников</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     </head> 
     <body> 

    <div class = "header"> 
     <img src = "img/header.png"></img> 
    </div> 

    <div class = "container"> 
    <?php 

    echo "<table id='table_id' class = 'table table-striped'>"; 
    echo "<thead> 
      <tr> 
       <th>№</th> 
       <th>ФИО</th> 
       <th>Имя транслитом</th> 
       <th>Дата рождения</th> 
       <th>Должность</th> 
       <th>Дата приёма</th> 
       <th>№ удостоверения</th> 
       <th>Полная информация</th> 
      </tr> 
     </thead> 
     "; 

    class TableRows extends RecursiveIteratorIterator { 
     function __construct($it) { 
      parent::__construct($it, self::LEAVES_ONLY); 
     } 

     function current() { 
      return "<td>" . parent::current(). "</td>"; 
     } 

     function beginChildren() { 
      echo "<tr>"; 
     } 

     function endChildren() { 
      echo "</tr>" . "\n"; 
     } 
    } 

    $servername = "localhost"; 
    $username = "user"; 
    $password = "password"; 
    $dbname = "test"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $conn->prepare("SELECT number, fullname, engname,birthdaydate, position, recruitmentDate,id,buttonid FROM employees"); 
     $ids = $conn->prepare("SELECT * FROM employees"); 
     $stmt->execute(); 

     // set the resulting array to associative 
     $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
     foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
      echo $v; 
     } 
    } 
    catch(PDOException $e) { 
     echo "Error: " . $e->getMessage(); 
    } 

    $conn = null; 
    echo "</table>"; 
    ?> 
    </div> 
    <div class = "footer"> 
     <img src = "img/footer.jpg"></img> 
    </div> 

     <!--<link rel="stylesheet" type="text/css" href="css/styles.css">--> 
     <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> 
     <link rel="stylesheet" type="text/css" href="css/normalize.css"> 
     <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css"> 
     <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="http://code.jquery.com/ui/1.11.1/jquery-ui.js"></script> 
     <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.15/css/jquery.dataTables.css"> 
     <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script> 
     <script> 

    $(document).ready(function() { 
     $('#table_id').DataTable({ 
      "language": { 
       "url": "//cdn.datatables.net/plug-ins/1.10.13/i18n/Russian.json" 
      } 
     }); 



    }); 
     </script> 
     <!-- 
     <script> 
     function fullInfo(){ 
      var ids = <?php echo json_encode($ids); ?>; 
      for (int i = 0;i<ids.length;i++){ 
       if (ids['buttonID'] == this.id){ 
        alert ("good"); 
       } 
      } 
     }; 
     </script> 
     --> 

     </body> 
    </html> 
+0

ボタンを出力するコードは表示されません。それを見せてもらえますか? – user4035

+0

"希望のクエリを作成し、PHPの変数に設定してからjavascriptでアクセスしようとしました" - ここではどういう意味ですか?なぜjavascriptのPHP変数にアクセスしようとしましたか?あなたの仕事は、新しいページを開く(簡単な方法)か、AJAXクエリを使って解決することができます。 – user4035

+0

@ user4035新しいページを開いてコードを作成する方法や、コードの例を書いてください。私はJSでクエリを実行する方法とPHPでonClick関数を実行する方法を理解していないので、javascriptでアクセスしようとしました。 –

答えて

0

あなたは、このようなあなたのサイトへの呼び出しを処理する関数を作成します<a>タグの代わりに<button>にリンクしてください。フォームではなく、ここにリンクがあります。ただstylize it with CSS。あなたのテーブルの列「Полнаяинформация」でリンクを作成します。

<a target="_blank" href=\"/employee.php?id=$row['id']\">Полная информация</a> 

これは新しいページを開きます。 PHPでリクエストを処理して、サンプルコードを提供しました。

は、それが従業員IDとして自身のIDとボタンエコー各行についてサイズ等

+0

/employee.php?id=12を開いていると、この警告がスローされる 警告:foreach()の引数が無効である –

+0

@DamirBadilovデータベース? 'var_dump($ _ GET ['id']);'しようとすると、何が印刷されますか? – user4035

+0

string(2) "12"とその警告 –

0

の変化する、ウィンドウモーダルを行うように装飾を追加します。 ボタン上のIDの前に文字を追加して、繰り返さないようにします。

echo "<button id='emp*$employeeid*'>view</button> 
関連する問題