2017-11-21 7 views
-1

私はSaaSプロジェクトを開発しようとしています。私は、新しい会社が登録するときに、すべての許可パラメータと許可グループを自動的に登録する必要があります。このコードは、企業、許可グループAdmin内のその会社のユーザー、クライアントの閲覧権限を持つ企業を含めて機能しています。PDOを使用して私のSaaSプロジェクトに多くの行を挿入するのに助けが必要

他の権限を同じ方法で追加する必要があります。作成したばかりの管理グループに追加して追加する必要があります。間違って

<?php 

require_once 'config.php'; 


$name = isset($_POST['name']) ? $_POST['name'] : null; 
$cnpj = isset($_POST['cnpj']) ? $_POST['cnpj'] : null; 
$username = isset($_POST['username']) ? $_POST['username'] : null; 
$email = isset($_POST['email']) ? $_POST['email'] : null; 
$password = isset($_POST['password']) ? $_POST['password'] : null; 

if (empty($name) || empty($cnpj) || empty($username) || empty($email) || empty($password)){ 
    echo "Please fill all fields"; 
    exit; 
} 

//Creates the new company 
$PDO = db_connect(); 
$sql = "INSERT INTO companies (name, cnpj) VALUES(:name, :cnpj)"; 
$stmt = $PDO->prepare($sql); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':cnpj', $cnpj); 
$stmt->execute(); 

//creates permission param clients_view 
$id_company = $PDO->lastInsertId(); 
$name = 'clients_view'; 
$sql2 = "INSERT INTO permission_params (id_company, name) VALUES (:id_company, :name)"; 
$stmt2 = $PDO->prepare($sql2); 
$stmt2->bindParam(':id_company', $id_company); 
$stmt2->bindParam(':name', $name); 
$stmt2->execute(); 

//creates permission group Admin with param clients_view 
$params = $PDO->lastInsertId(); 
$name = 'Admin'; 
$sql3 = "INSERT INTO permission_groups (id_company, name, params) VALUES (:id_company,:name, :params)"; 
$stmt3 = $PDO->prepare($sql3); 
$stmt3->bindParam(':id_company', $id_company); 
$stmt3->bindParam(':name', $name); 
$stmt3->bindParam(':params', $params); 
$stmt3->execute(); 

//create new user and adds to Admin group 
$id_group = $PDO->lastInsertId(); 
$sql4 = "INSERT INTO users (username, email, password, id_group, id_company) " 
     . "VALUES (:username, :email, :password, :id_group, :id_company)"; 
$stmt4 = $PDO->prepare($sql4); 
$stmt4->bindParam(':username', $username); 
$stmt4->bindParam(':email', $email); 
$stmt4->bindParam(':password',md5($password)); 
$stmt4->bindParam(':id_group', $id_group); 
$stmt4->bindParam(':id_company', $id_company); 
$stmt4->execute(); 


//creates permission clients_edit 
// NOT WORKING 
$name = 'clients_edit'; 
$sql5 = "INSERT INTO permission_params (name) VALUES (:name) WHERE id_company=:id_company"; 
$stmt5 = $PDO->prepare($sql5); 
$stmt5->bindParam(':name', $name); 
$stmt5->bindParam(':id_company', $id_company); 
$stmt5->execute(); 


//Insert permission clients_view in group Admin 
//NOT WORKING 
$params = $PDO->lastInsertId(); 
$sql6 = "INSERT INTO permission_groups (params) VALUES (:params) WHERE name=:name AND id_company=:id_company"; 
$stmt6 = $PDO->prepare($sql6); 
$stmt6->bindParam(':params', $params); 
$stmt6->bindParam(':name', $name); 
$stmt6->bindParam(':id_company', $id_company); 
$stmt6->execute(); 


header('Location: index.php'); 

答えて

1
INSERT INTO permission_params (name) VALUES (:name) WHERE id_company=:id_company 

を私はこれをしようとしているが、それは唯一の最初のパラメータ(clients_view)とない第二のparam(clients_edit)を追加します。そのIDに再度INSERTすることはできません。あなたは新しいIDで新しいINSERTすることができますか、またはあなたは新しい名前でそのIDを更新することができますまたはそこに新しいテーブルを作成することができますこのテーブルからIDを挿入し、この方法でこのテーブルと他のテーブルを接続します。私が何を意味するか知っていれば、おそらく最良の説明ではないかもしれません:D

+0

私は理解しているか、説明できるかどうかわかりません(英語は私の第1言語ではありません)。テーブルpermission_paramsに新しいIDを挿入したいが、id_company変数に関連していなければならないので、これは正しい会社に作成される。私は更新しようとしましたが、それは最初のものを削除し、2番目のものを作成しました。私は両方が必要です(最後に9個のパラメタになります)。テーブルid_paramsにはid、id_company、およびnameがあります。 – Fabi

+0

英語も私の第1言語ではないので、私にも説明するのは簡単ではありません:Dあなたはこの方法で試してみることもできます。企業のテーブルに会社を追加してから、そのIDをpermission_paramsで使用します。$ sql5 = "INSERT INTO permission_params(name、company_id)VALUES(:name、company_id);そのテーブルからそれを取得してください。基本的には、あなたはそれを打ち返す必要があります。なぜなら、新しいインサートでいくつかのインサートをオーバーライドすることはできないからです。 – elvirt

+0

ありがとうございました!私はid_groupにこれらの2つのパラメータを追加する必要がありますが、これと同じロジックを試しましたが、新しいIDを作成して助けになりません。テーブルpermission_groups id:5、id_group = 10、params = 1,2,3,4,5ここで1,2,3,4,5は私が作成したこれらのパラメータのIDです。 – Fabi

関連する問題