2017-05-14 19 views
-1

私はどこでも検索しても答えは見つかりません。誰でも助けることができますか?複数のテーブルから選択テーブルに値を追加

私は5つのMySQLテーブルに移動するためのオプションを持っている(コラムname_idに入りますデータ付き)テキストボックスやチェックボックス、で構成されてPHPのフォームがあります。

人々が選択することができます
'table A' 
'table B' 
'table C' 
'table D' 
'table E' 

をどのテーブルが必要なのか、name_idは選択されたテーブルに移動します。

どうすればいいですか?ユーザーがPHP側で、フォームを送信するとき

+0

1ではなく5つのテーブルがあるのはなぜですか? – Strawberry

答えて

1

私Answere @ RandD-SexyBoy-。クエリは、彼が出てVALUES (:nameID_column)$sql = "INSERT INTO $tables[$i](nameID_column);を使用していRandD-SexyBoy- @異なっている私のSQLは、ここで$sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)"

を使用しているされた3例では、ユーザが最初に

場合に応答します:ユーザーは、単一のテーブル

を選択することができ

大文字小文字の区別:ユーザーは複数の表を選択できます。ここでは、ループと動的SQLクエリforeach()を使用する必要があります。第

場合:

`

<html> 
    <head> 

    </head> 
    <body> 
     <form action="" method="post"> 
      <input type="text" name="name_id" required> 

      <p>select your table to add data</p> 
      <input type="checkbox" name="tables[]" value="tblA">Table A<br> 
      <input type="checkbox" name="tables[]" value="tblB">Table B<br> 
      <input type="checkbox" name="tables[]" value="tblC">Table C<br> 
      <input type="checkbox" name="tables[]" value="tblD">Table D<br> 
      <input type="checkbox" name="tables[]" value="tblE">Table E<br> 

      <input type="submit" name="submit"> 
     </form> 
    </body> 
</html> 

`

PHPファイル:ユーザーは、この場合、任意のテーブルを選択しないことがあり、我々は、ユーザにメッセージtable not selected

HTMLフォームを与えなければなりません

<?php 
    $con = new mysqli('localhost','root','admin','demo'); 

    if(!$con){ 
     die("Connection ".$con->connect_error); 
    } 

    if(isset($_POST['submit'])){ 
     $name_id = $_POST['name_id']; 

     $tables = $_POST['tables']; 

     if(!empty($tables)){ 
      foreach($tables as $key=>$v){ 
       $sql = $con->stmt_init(); 
       if($sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)")){ 
        $sql->bind_param($name_id); 
        $sql->execute(); 

        echo "DATA INSERTED"; 
       } 
       else 
       { 
        echo "Error".$con->error; 
       } 
      } 
     } 
     else 
     { 
      echo "You have not selected tables"; 
     } 
    } 
?> 
+0

ありがとうございます...あなたは素晴らしいです –

+0

私はこのメッセージを受け取りました警告:行350のmysqli_stmt :: bind_param()の間違ったパラメータ数 データが挿入されました –

+0

これを '$ sql-> bind_param($ name_id);'を$ sql-> bind_param( 'i'、$ name_id);に変更するよりもOKです。エラーが発生した場合でもコメントボックスにコードを投稿します。バインドパラメータについてもっと知りたい場合は、[このリンク](http://php.net/manual/en/mysqli-stmt.bind-param.php)をクリックしてください。 –

0

だから、1つの単純なアプローチは、可能性があり、あなたがチェックされているチェックボックスをチェックし、1つのチェックボックスがある場合は、あなたの条件は、この

if(checkbox_for_table_A) {// insert query} 

if(checkbox_for_table_B) {// insert query} 

if(checkbox_for_table_C) {// insert query} 

if(checkbox_for_table_D) {// insert query} 

if(checkbox_for_table_E) {// insert query} 

この道のようなものかもしれません選択したテーブルに保存されます。複数のテーブルが選択されている場合は、そのテーブルに格納されます。

希望すると便利です。あなたがコメントセクションに入ることを疑うことはありませんか。

源から適応
0

post checkbox valueとチュートリアルhttp://www.mustbebuilt.co.uk/php/insert-update-and-delete-with-pdo/、あなたがこのアプローチを使用することができます。

HTMLフォーム:今

<form action="checkbox-form.php" method="post"> 

    <input type="text" name="name_id" /><br /> 

    Select your database: <br/> 
    <input type="checkbox" name="formTables[]" value="A" />Table A<br /> 
    <input type="checkbox" name="formTables[]" value="B" />Table B<br /> 
    <input type="checkbox" name="formTables[]" value="C" />Table C<br /> 
    <input type="checkbox" name="formTables[]" value="D" />Table D<br /> 
    <input type="checkbox" name="formTables[]" value="E" />Table E<br /> 

    <input type="submit" name="formSubmit" value="Submit" /> 

</form> 

PHPスクリプト:異なるで

<?php 
    $pdo_connection = new PDO('mysql:host=localhost;dbname=test', 'demouser', 'demopass'); 
    $tables = $_POST['formTables']; 
    if(empty($tables)) 
    { 
    echo("You didn't select any tables."); 
    } 
    else 
    { 
    $N = count($tables); 

    echo("You selected $N table(s): "); 

    for($i=0; $i < $N; $i++) 
    { 
     $sql = "INSERT INTO $tables[$i](nameID_column); 
     $stmt = $pdo_connection->prepare($sql); 
     $stmt->bindParam(':nameID_column', $_POST['name_id'], PDO::PARAM_STR); 
     $stmt->execute(); 
     echo("Your ID Name was inserted into table $tables[$i] ! <br /> "); 
    } 
    } 
?> 
関連する問題