PHP データベースのテーブルを検索するフォーム

目次

概要

このサイトで動いている、動作確認のできるサンプルプログラムです。

データベースのテーブルを検索し、テーブルの内容を表示する PHP プログラムです。

解説

次の動作をするPHPプログラムです。

1)データベースからテーブル名を取得します。
2)SelectBoxにテーブル一覧を表示します。
3)テーブル名を選択します。
4)選択されたテーブルの内容を表示します。

ソースコード

テーブル一覧を取得して Select Box で表示

<!-- http://localhost/php/PHP_Source/PH1023_Select_Table_SelectBox/DB_SelectBox_input.php -->
<!-- http://lifeandit.com/php/PHP_Source/PH1023_Select_Table_SelectBox/DB_SelectBox_input.php -->

<!DOCTYPE html>
<html lang="ja">
<head>
<MEAT chaeset="UTF-8">
<title> PHP </title>
</head>
<body>
  <header>
	<h1>PHPの講座</h1>
	<style type="text/css">
	 h2{color:red;}
	 .sub_comment{ color:blue ; }
	</style>
  </header>
  
<main>
<h2> PHP ソース </h2>
<?php
  if ($_SERVER['HTTP_HOST'] == 'localhost') {
	$DataBase =  "lifeandit_eng001" ;
	$username = "root" ; 
	$password = "" ; 
	$hostname = "localhost" ;
  } else {
	$DataBase = file_get_contents('../../lifeandit_Database_Pram/database.txt'); 
	$username = file_get_contents('../../lifeandit_Database_Pram/user.txt');
	$password = file_get_contents('../../lifeandit_Database_Pram/password.txt'); 
	$hostname = file_get_contents('../../lifeandit_Database_Pram/host.txt'); 
  }
	$dsn = "mysql:dbname=$DataBase;host=$hostname";
try {
    $dbh = new PDO($dsn, $username, $password,
	array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) );
    if ($dbh == null) {
	print_r('接続失敗').PHP_EOL; 
    } else {  
	print_r('接続成功').PHP_EOL;
    }

} catch(PDOException $e) {
    echo('Connection failed:'.$e->getMessage());
    die();
}

$sql = 'SHOW TABLES';
$stmt = $dbh->query($sql);
while ($result = $stmt->fetch(PDO::FETCH_NUM)){
    $table_names[] = $result[0];
}
?>

    <dev class="sub_comment">
    <form action="Select_Table.php" method="get">  
  	<label for="Table_name">テーブル名:</label>
	<select size="1" name="Table_name" style="height:35px;width:300px;">
	<?php foreach ($table_names as $key => $val) : ?>
	<?php echo "<option value=$val> $val </option> " ?>  	
	<?php endforeach ?> 
	</select>
   <input type="submit" value="送信する">
   </form>
   </dev>
  </main>

  <footer>
  </footer>
</body>
</html>

選択されたテーブル名の内容を表示

<!-- http://localhost/php/PHP_Source/PH1022_Select_Table_List/Select_Table.php -->
<!-- http://localhost/php/PHP_Source/PH1022_Select_Table_List/Select_Table.php -->

<!DOCTYPE html>
<html lang="ja">
<head>
  <MEAT chaeset="UTF-8">
  <title>PHP Sample</title>
  <style type="text/css">
	#message {color:red   ;  background-color:white; font-size: 16px;  }
	#sql           {color:black;  background-color:white; font-size: 24px;  }
  </style>
</head>

<body>
<header><h1>MySQLのカラム名をPHPで取する</h1></header>
<main>
<header><h2>概要</h2></header>
Mysqlで、テーブルのカラム名とデータを取得する。<br>
<dev id="message" >
このページは実際のPHPプログラムで実行されています。<br>
</dev>

<!-- パラメータセットアップ -->
<?php
	// $tablename = '顧客マスタ' ;
	$tablename = htmlspecialchars($_REQUEST['Table_name'], ENT_QUOTES) ;

 	$sql = "SELECT *  FROM $tablename; " ;
	
	if ($_SERVER['HTTP_HOST'] == 'localhost') {
		$DataBase =  "lifeandit_eng001" ;
		$username = "root" ; 
		$password = "" ; 
		$hostname = "localhost" ;
	} else {
		$DataBase = file_get_contents('../../lifeandit_Database_Pram/database.txt'); 
		$username = file_get_contents('../../lifeandit_Database_Pram/user.txt');
		$password = file_get_contents('../../lifeandit_Database_Pram/password.txt'); 
		$hostname = file_get_contents('../../lifeandit_Database_Pram/host.txt'); 
	}

	$dsn = "mysql:dbname=$DataBase;host=$hostname";
?>
<?php echo "<h3> $tablename </h3>" ; ?>

<!-- テーブル用のSQL文 -->
<dev id="sql">
<?php print( "データベース :  $DataBase "); print('<br>');  ?> 
<?php print( "テーブル名 :  $tablename "); print('<br>');  ?> 
<?php print( " SQL文:  $sql "); print('<br>');  ?> 
</dev>
<?php 
  try { $dbh = new PDO($dsn, $username, $password,
           array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
           // SQLを実行              
          $res = $dbh->query($sql);

  } catch ( PDOException $e){ print('Error:'.$e->getMessage()); die(); }
         // カラム名の取得
         for ($i = 0; $i < $res->columnCount(); $i++) {
             $column_index[] = $res->getColumnMeta($i)['name'];
}
// $dbh をクリア
$dbh = null ;
?> 

<!-- テーブル表示 -->
<dev>
<table  border="1">
<!-- カラム名表示 -->
   <tr>
   <?php foreach ($column_index as $s)  :  ?>
	<td> <?php echo $s  ; ?></td> 
   <?php endforeach ?> 
   </tr>
<!-- データ表示 -->
<?php foreach ( $res as $row ) : ?>
   <tr>
     <?php foreach ( $column_index as $r ) : ?>
            <td> <?php echo htmlspecialchars( $row[ $r ] ) ; ?></td> 
      <?php endforeach ?> 
    </tr>
<?php endforeach ?> 
</table>
</dev>
</main>
<footer> </footer>
</body>
</html>
<!-- http://localhost/kajyu/php/0140_SelectTable/Src_SelectTable_office.php -->
<!-- http://sungrow.online/kajyu/php/0140_SelectTable/Src_SelectTable_office.php -->

<!DOCTYPE html>
<html lang="ja">
<head>
  <MEAT chaeset="UTF-8">
  <title>PHP Sample</title>
  <style type="text/css">
	#message {color:red   ;  background-color:white; font-size: 16px;  }
	#sql           {color:black;  background-color:white; font-size: 24px;  }
  </style>
</head>

<body>
<header><h1>MySQLのカラム名をPHPで取する</h1></header>
<main>
<header><h2>概要</h2></header>
Mysqlで、テーブルのカラム名を取得するSQL文とPHPのソースコードです。<br>
<dev id="message" >
このページは実際のPHPプログラムで実行されています。<br>
</dev>

<!-- パラメータセットアップ -->
<?php
	// $tablename = htmlspecialchars($_REQUEST['Table_name'], ENT_QUOTES) ;
	// $tablename = 'Office_master' ;
	// $tablename = 'fruit' ;
	// $tablename = 'processing' ;
	 $tablename = 'data' ;


 	$sql = "SELECT *  FROM $tablename; " ;
	
	if ($_SERVER['HTTP_HOST'] == 'localhost') {
		$DataBase =  "_sungrow_tmp2021" ;
		$username = "root" ; 
		$password = "" ; 
		$hostname = "localhost" ;
	} else {
		// $DataBase = file_get_contents('../Database_Pram/database.txt'); 
		// $username = file_get_contents('../Database_Pram/user.txt');
		// $password = file_get_contents('../Database_Pram/password.txt'); 
		// $hostname = file_get_contents('../Database_Pram/host.txt'); 

		$DataBase = "_sungrow_tmp2021" ;
		$username = "_sungrow_tmp2021" ; 
		$password = "tmp-2021" ; 
		$hostname = "mysql016.phy.heteml.lan" ;


	}

	$dsn = "mysql:dbname=$DataBase;host=$hostname";
?>
<?php echo "<h3> $tablename </h3>" ; ?>

<!-- テーブル用のSQL文 -->
<dev id="sql">
<?php print( "データベース :  $DataBase "); print('<br>');  ?> 
<?php print( "テーブル名 :  $tablename "); print('<br>');  ?> 
<?php print( " SQL文:  $sql "); print('<br>');  ?> 
</dev>
<?php 
  try { $dbh = new PDO($dsn, $username, $password,
           array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
           // SQLを実行              
          $res = $dbh->query($sql);

  } catch ( PDOException $e){ print('Error:'.$e->getMessage()); die(); }
         // カラム名の取得
         for ($i = 0; $i < $res->columnCount(); $i++) {
             $column_index[] = $res->getColumnMeta($i)['name'];
}
// $dbh をクリア
$dbh = null ;
?> 

<!-- テーブル表示 -->
<dev>
<table  border="1">
<!-- カラム名表示 -->
   <tr>
   <?php foreach ($column_index as $s)  :  ?>
	<td> <?php echo $s  ; ?></td> 
   <?php endforeach ?> 
   </tr>
<!-- データ表示 -->
<?php foreach ( $res as $row ) : ?>
   <tr>
     <?php foreach ( $column_index as $r ) : ?>
            <td> <?php echo htmlspecialchars( $row[ $r ] ) ; ?></td> 
      <?php endforeach ?> 
    </tr>
<?php endforeach ?> 
</table>
</dev>
</main>
<footer> </footer>
</body>
</html>
よかったらシェアしてね!
目次