2017-02-16 11 views
0

私はPHPで初心者ですので、まだ私は学ぶことを試みていることを始めましょう。私はWordpressでフォームを作成しました。そして、私は1つのテーブル(data_testテーブル、私はそれを管理しました)に値を挿入し、data_testテーブルからのすべての列を取る(IDは自動インクリメントの数字、名前、電子メール、製品、数ユーザーが入力したもの)を挿入し、他のテーブルに挿入します。どのように私は1つのPHPから他の値を解析することができます

<?php 
 

 
if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 
 

 
//connect with database 
 
include "database_conn.php"; 
 

 
//get the form elements and store them in variables 
 

 
session_start(); 
 
$name=$_POST["name"]; 
 
$email=$_POST["email"]; 
 
$prod=$_POST["prod"]; 
 
$quant=$_POST["quant"]; 
 

 
//insert data on data_test table 
 
$sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
 
if(!mysqli_query($con,$sql)){ 
 
    echo mysqli_error($con); 
 
} else{ 
 

 
    //retrieve data 
 

 
    $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
 
    $result = mysqli_query($con,$sql); 
 
    if(!$result){ 
 
     echo mysqli_error($con); 
 
    } else{ 
 
     while($value = mysqli_fetch_object($result)){ 
 
\t \t \t $id = intval($value->id); 
 
      $_SESSION['myid'] = $value->id; 
 
      var_dump($value); 
 
\t \t \t 
 
      //insert data on data_test_ins table 
 
      $sql="INSERT INTO site_db.data_test_ins` (id,name , email, prod,quant) VALUES ($id,'$name','$email','$prod','$quant')"; 
 
      if(!mysqli_query($con,$sql)){ 
 
       echo mysqli_error($con); 
 
      } else{ 
 

 
       //Redirects to the specified page 
 
      // header("Location: http://localhost/site/"); 
 
      } 
 
     } 
 
    } 
 
} 
 
} 
 
?>

今すぐ:値を取るように

<form action="../enter_data_insert.php" method="post" onsubmit="return form_validation()" name="myForm"> 
 

 
     Name <input id="name" name="name" type="text" /> 
 

 
     Email <input id="email" name="email" required type="email"/> 
 

 
     Product<input id="prod" name="prod" required type="text" /> 
 

 
     Quantity<input id="quant" name="quant" required type="number" min="1"/> 
 

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

 
     </form>
そしてこのPHP:私は値を解析するために、フォームのために、このhtmlコードを使用しましたdata_testテーブルのidを除くすべての値を挿入します。それはmuであるためnullであると思いますstはphpの最初の挿入を閉じて、私は他のPHP上の// insert data with data_test_insテーブルの2番目の挿入をコールする必要がありますか? しかし、私は確信していません、誰も私を助けてくれる?またはちょうど私に正しい方法が何であるかを案内します。 私は、2つのPHPを作成して値を解析し、最初のテーブルを取得してから別のPHPを使用して値を挿入する必要があると思い始めます。 ご意見はお役に立ちます! :-)

答えて

0

$valueの代わりに$value->idをクエリに渡そうとしましたか?

結果セットの現在の行を持つオブジェクトです。したがって、このオブジェクトのid属性のみを渡す必要があります。

$sql="INSERT INTO `site_db`.`data_test_ins` (`id`,`name` , `email`, `prod`,`quant`) VALUES ('$value->id','$name','$email','$prod','$quant')"; 

追加:mysql非推奨のライブラリを使用して

  • 停止。
  • あなたはそのisset

EDIT場合はポストされたデータをチェックする必要があります:

あなたのコードはずのようになります。何をやっている

<?php 
 

 
if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 
 

 
    //connect with database 
 
    include "database_conn.php"; 
 

 
    //get the form elements and store them in variables 
 

 
    session_start(); 
 
    $name=$_POST["name"]; 
 
    $email=$_POST["email"]; 
 
    $prod=$_POST["prod"]; 
 
    $quant=$_POST["quant"]; 
 

 
    //insert data on data_test table 
 
    $sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
 
    if(!mysqli_query($con,$sql)){ 
 
     echo mysqli_error($con); 
 
    } else{ 
 

 
     //retrieve data 
 

 
     $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
 
     $result = mysqli_query($con,$sql); 
 
     if(!$result){ 
 
      echo mysqli_error($con); 
 
     } else{ 
 
      while($value = mysqli_fetch_object($result)){ 
 
\t \t \t \t 
 
       $_SESSION['myid'] = $value->data_test_id; 
 
\t \t \t \t $id = intval($value->data_test_id); 
 
       
 
\t \t \t \t 
 
       //insert data on data_test_ins table 
 
       $sql="INSERT INTO `site_db`.`data_test_ins` (id,name , email, prod,quant) VALUES ('$id','$name','$email','$prod','$quant')"; 
 
       if(!mysqli_query($con,$sql)){ 
 
        echo mysqli_error($con); 
 
       } else{ 
 

 
        //Redirects to the specified page 
 
        header("Location: http://localhost/site/"); 
 
       } 
 
      } 
 
     } 
 
    } 
 
} 
 
?>

1

されます正しくない。 IDフィールドに値を手動で追加するのは良い方法ではありません。データベースによって自動的に生成されます。私がお勧めするものは、あなたのdata_test_insテーブルに別のフィールドを追加することです:あなたのdata_testテーブルのIDを指すtest_idこれは外部キーの概念です。 読む外部キーの概念についてhere

あなたのコードでは、今のようになります。 - もちろん

<?php 

if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 

    //connect with database 
    include "database_conn.php"; 

    //get the form elements and store them in variables 

    session_start(); 
    $name=$_POST["name"]; 
    $email=$_POST["email"]; 
    $prod=$_POST["prod"]; 
    $quant=$_POST["quant"]; 

    //insert data on data_test table 
    $sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
    if(!mysqli_query($con,$sql)){ 
     echo mysqli_error($con); 
    } else{ 

     //retrieve data 

     $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
     $result = mysqli_query($con,$sql); 
     if(!$result){ 
      echo mysqli_error($con); 
     } else{ 
      while($value = mysqli_fetch_object($result)){ 
       $id = $value->id; 

       //insert data on data_test_ins table 
       $sql="INSERT INTO `site_db`.`data_test_ins` (`id`,`name` , `email`, `prod`,`quant`, `test_id`) VALUES ('$name','$email','$prod','$quant', '$id')"; 
       if(!mysqli_query($con,$sql)){ 
        echo mysqli_error($con); 
       } else{ 

        //Redirects to the specified page 
        header("Location: http://localhost/site/"); 
       } 
      } 
     } 
    } 
    } 
?> 
+1

あなたresponcesのためのみんなに感謝 – Mohammad

+0

デシベルのベストプラクティスとして、このアプローチを使用して、より良いです! :-)私はそれを理解し、あなたは正しいです!しかし、私は基本的に、後でその値をデータベースの別のテーブルに挿入するのではなく、erpでテスト目的で行っています。だから私は値を入力して、ERPに渡すことができます。 – Alex4842

関連する問題