私はこれを試して説明するために最善を尽くすつもりです。私はいくつかのロールタイプを含むアプリケーションを持っています。この場合重要なのは「マネージャー」と「代理人」だけです。代理人が作成されると、その会社の1人または複数のマネージャーに割り当てられます(会社はマネージャー作成時に割り当てられます)。すべてのユーザーがUsersという同じテーブルに格納されることに注意してください。配列の比較に基づくSQLの削除、更新または挿入
代表者とマネージャ関係の関係が作成されると、代表者のプライマリキーと私の場合は代表者のプライマリキー(私の場合、ユーザテーブルの「userId」列)がManagerRepRelationshipというテーブルにプッシュされます。私は、次のユーザーテーブルを持っているのであれば、たとえば(この場合のみでかまいcolsので仕事に行く):そのテーブルは、上記のことになりますので、もし唯一の自分のアカウント内で管理者に割り当てることができ
userId | username | role | accountId |
______ ________ ______________ _________
1 jsmith manager 14
2 mfoster manager 14
3 lcarter manager 18
4 jdoe representative 14
5 tlarson representative 18
6 rhoward representative 18
代表
道、ManagerRepRelationshipは次のようになります。repId | managerId
_____ _________
4 1
5 3
6 3
私はに実行していますトラブルを、それはこれらの関係を編集するために来るときです。現在、私は非常に制限されたページになるので、これらの関係の変更を処理するために、別のフォームとページを持っています。この場合、代理人jdoe
を編集し、別のマネージャーを割り当てようとしています。現在彼はjsmith
に割り当てられていますが、彼に2人のマネージャーを与えたいので、彼にmfoster
も割り当てます。この場合、ページのURLのようなものになります。ページの上部に
http:localhost:8888/mod-super-admin/edit-relatoinship.php?repId=4&accountId=14
を、私はそのアカウント(以下、クエリ内のアドレステーブルをノートのすべてのマネージャーをつかむだけの場所ですI私はこのページのアドレステーブルのために何も更新していません。私<select>
オプションについては、経営者の姓)
// Get the url variables
$rep_id = $_GET["repId"];
$account_id = $_GET["accountId"];
// grab all managers tied to the account (not the rep)
$manager_sql = "SELECT Users.userId, Address.firstName, Address.lastName FROM Users JOIN Address ON Users.addressId=Address.addressId WHERE Users.role='manager' AND Users.accountId=" . $account_id;
$account_managers = mysqli_query($connection,$manager_sql);
// grab all managers assigned to the rep
$relationship_sql = "SELECT managerId FROM ManagerRepRelationship WHERE repId=" . $rep_id;
$rep_rels = mysqli_query($connection, $relationship_sql);
// create and array that houses current assigned managers
$current_managers = array();
while($row = mysqli_fetch_array($rep_rels)){
array_push($current_managers, $row["managerId"]);
}
次のようにフォームがあります。すでに割り当てられている場合、マネージャーが強調表示されます。我々の場合
<form method="POST" action="./mod-super-admin/edit-relationship.php?repId=<?php echo $rep_id; ?>&accountId=<?php echo $account_id; ?>">
<div class="col-sm-12">
<div class="form-group">
<div class="form-group mbs">
<label for="manager" class="label-medium">Assigned Managers</label><br>
<small>To Select Multiple Managers Hold Down CTRL (CMD for Mac) and click</small>
<select name="manager[]" class="form-control input-medium" multiple="multiple">
<?php
$output;
while($manager = mysqli_fetch_assoc($account_managers)) :
$output .= '<option value="' . $manager["userId"] . '"';
foreach($current_managers as $key=>$value) :
if($value === $manager["userId"]){
$output .= ' selected';
}
endforeach;
$output .= '>' . $manager["lastName"] . ', ' . $manager["firstName"] . '</option>';
endwhile;
echo $output;
?>
</select>
</div>
<input type="submit" name="editRelationshipSubmit" class="btn btn-large btn-green mtm" value="Update Relationship">
</div>
</div>
</form>
、PHP、上記が出力マネージャの名前を持つと管理者が担当者に割り当てられている場合、それは既に強調表示されますmutliselect。ここで私は問題を抱えています。これらのrealtionshipsを編集することになります。たとえば、をマネージャーとして追加する場合は、jdoe
と実行するだけで、をManagerRepRelationship
に追加するか、jsmith
をマネージャーとして削除する場合は、DELETE FROM ManagerRepRelationship WHERE repId=4 AND managerId=1
を実行します。
どのようにして何が起こるのかを補うにはどうすればよいですか?私は、これらの変更を行っている現在のユーザーがマネージャー関係を追加したり、マネージャー関係を削除したり、両方の作業を少しやっているかどうかは分かりません。
私はその$current_managers
配列を作ったので、フォームが提出されたときに配列$_POST["manager"];
と照合することができました。配列が格納する唯一のデータはuserId
です。私はそれらの配列の比較に基づいて自分のデータベースを更新するために、別のSQLコマンドを実行しているだけです。
あまりにも長い質問:o –
@HamzaZafeerもし私が詳細を提供しなかったならば、私は "十分ではない情報"と言われていただろう –