2016-04-06 11 views
1

私はPHPとMySQLを使用するプロジェクトを行っています。私は本当にPHPに新しいですし、私は多くを検索したが、まだきれいなソリューションを見つけていない。ボタン名としてSQLからの戻り値、ボタンをクリックした後のテキストを表示

問題は、まずユーザーがキーワードを入力し、検索した値(テーブル名)を変数に返します。

echo '<h2> Search Result: </h2>'; 
$searchSQL = "select distinct table_name from information_schema.columns where lower(column_name) like lower('%$search%') and table_schema='university'"; 
$result = $conn->query($searchSQL); 
if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
    $table_name = $row['table_name']; 
    echo "<input type='submit' name=$table_name value=$table_name>"."<br />"; 
} 

ボタンが作成されました。ユーザーがいずれかのボタンをクリックすると、さらに進んで各テーブルの列名を返します。私は非静的なボタンをどうするか分からない。

+1

単にフォームタグを使用して、通常のフォームのように扱い、送信ボタンの値を取得してから、「DESCRIBE」を使用してください – Ghost

答えて

1

まず、実際に<form>を設定することを忘れないでください。それらをまとめてください。

第二に、私はちょうどあなたの送信ボタンに同じ名前の属性を使用し、お勧めしたい:

name="table_name" 

だから、次のようになります。

echo '<h2> Search Result: </h2>'; 
$searchSQL = " 
SELECT DISTINCT table_name FROM information_schema.columns 
WHERE LOWER(column_name) LIKE LOWER('%$search%') AND table_schema = 'university' 
"; 

$result = $conn->query($searchSQL); 

echo '<form method="POST" action="show_colums.php">'; // opening form tag 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
    $table_name = $row['table_name']; 
    echo "<input type='submit' name='table_name' value='$table_name' /> <br/>"; 
           // ^don use the $table_name in the name attribute 
} 

echo '</form>'; // closing form tag 

もすることを忘れないでくださいフォームタグにaction=""属性を追加します。フォーム処理を行うPHPスクリプトを指してください。

show_columns.phpインサイド:この例では、ただ単に選択したボタンを処理することPHPファイルにDESCRIBEを適用し、今show_columns.php

を使用

if(!empty($_POST['table_name'])) { 
    $table_name = $_POST['table_name']; // get input 
    $sql = "DESCRIBE {$table_name}"; // use DESCRIBE 
    $query = $conn->query($sql); // execute query 
    while($row = $query->fetch_assoc()) { // fetch rows 
     // do whatver you need to do, table or whatever you like 
     echo $row['Field']; // field name 
    } 
} 

編集:またはあなたがすることができ

echo '<h2> Search Result: </h2>'; 
$searchSQL = " 
    SELECT DISTINCT table_name FROM information_schema.columns 
    WHERE LOWER(column_name) LIKE LOWER(?) AND table_schema = 'university' 
    "; 
$stmt = $conn->prepare($searchSQL); 
$search = '%' . $search . '%'; 
$stmt->bind_param('s', $search); 
$stmt->execute(); 
$stmt->bind_result($table_name); 
echo '<form method="POST" action="show_columns.php">'; 
while($stmt->fetch()) { 
    echo "<input type='submit' name='table_name' value='$table_name' /><br/>"; 
} 
echo '</form>'; 
+0

スクリプトは同じ名前の複数の送信ボタンを作成しますそれを区別する? –

+0

@DipanwitaKundu thatsなぜ同じ値を得るために '$ _POST ['table_name']'を使うことができますか?とにかく1つの値だけが必要です。 – Ghost

+0

Ok 、それを得た..明確化のためにありがとう.. –

0

インスティテュートボタンtype='button'を作成し送信ボタンを作成するのDのjavascript/jqueryのを使用して、またはHTMLプロパティを使用してどちらか一方のテーブルの詳細を返しますページを呼び出します。

echo "<input type='button' name='" . $table_name . "' value='" . $table_name . 
    "' onclick=\"location.href='http://yourwebsite.com?tbl=" . $table_name."'\"><br />"; 

あなたはまた、いくつかのJS関数を呼び出す同じことを行うことができます。

関連する問題