2017-03-22 7 views
1

私はグループを作成しました。私がしたいのは、参加ボタンが非表示にするグループに参加するときです。私はそれを行う方法はわかりません.. tbl_groupは作成されたグループのリストです。グループに参加すると、idはdiffテーブルに保存されます。このコードはグループのすべてのリストを表示するためのものです。データベースにデータを保存した後にボタンを非表示にする

group.php

<?php 
    $db = new Group($conn); 
    $res = $db->g_viewlist(); 
    foreach ($res as $key => $value){ 
?>  
    <div class="col-lg-12" align="center" style="border:1.5px solid #59960b;padding-bottom:10px;padding-top:10px;"> 
    <button class="btn2 btn-2 join" data-id="<?php echo $value['g_id']; ?>" data-toggle="modal" data-target="#joinModal" style="padding: 2px 2px;margin-left:50%"><strong> Join</strong></button> 

    <img src="./<?php echo $value['g_image']; ?>"class="pull-left" class="img-square" height="70" width="70" alt="Avatar"> 
    <p align="left"> 
    <strong class="font-1" style="color:#59960b;"><?php echo $value['g_name'];?>   </strong><br> 
    <small style="font-family:courier,'new courier';" class="text">Member Since 2008<br></small> 
    <small style="font-family:courier,'new courier';" class="text-muted">Description:<?php echo $value['g_desc']; ?></small><br> 
    </p> 
</div> 
<?php 
} 
?> 

グループのすべてのリストを表示するためのSQLクエリ

public function g_viewlist(){ 
    $sql = "SELECT * FROM tbl_group "; 
    $result = $this->dbh->prepare($sql); 
    $result->execute(); 
    $data = array(); 
    while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
     $data[] = $row; 
    } 
    return $data; 
} 

enter image description here この表Iは、ユーザIDとグループIDを格納する場合、これは必要にenter image description here

答えて

0

tbljoingroupからg_id tbl_groupから= 25とGROUP_ID = 25 table..assuming差分でありますグループの配列を取得するuserはforeachループのメンバであり、foreachループの内部でこのリストを検索するだけです。ユーザーが$value['g_id']のメンバーの場合は、ループの繰返しをスキップするだけでcontinueとなります。

あなただけのボタンを隠し、まだコードの残りの部分を表示したい場合は、このような何か:ユーザーオブジェクトが続いた場合trueを返しますmemberOf()メソッドを作成$userに保存している場合は

<?php 
    $db = new Group($conn); 
    $res = $db->g_viewlist(); 
    foreach ($res as $key => $value) { 
?>  
    <div class="col-lg-12" align="center" style="border:1.5px solid #59960b;padding-bottom:10px;padding-top:10px;"> 
    <?php if (!$user.memberOf($value['g_id'])) { ?> 
     <button class="btn2 btn-2 join" data-id="<?php echo $value['g_id']; ?>" data-toggle="modal" data-target="#joinModal" style="padding: 2px 2px;margin-left:50%"><strong> Join</strong></button> 
    <?php } ?> 

    <img src="./<?php echo $value['g_image']; ?>"class="pull-left" class="img-square" height="70" width="70" alt="Avatar"> 
    <p align="left"> 
    <strong class="font-1" style="color:#59960b;"><?php echo $value['g_name'];?>   </strong><br> 
    <small style="font-family:courier,'new courier';" class="text">Member Since 2008<br></small> 
    <small style="font-family:courier,'new courier';" class="text-muted">Description:<?php echo $value['g_desc']; ?></small><br> 
    </p> 
    </div> 
<?php 
} 
?> 

ユーザーはグループのメンバーです。そうでない場合はfalseです。

注:memberOf()の実行ごとにデータベースを検索しないでください。それを一度行い、結果をオブジェクトのプロパティに保存して再利用します。

+0

@AlfieGaring私の答えは依然として立っています。あなたが 'tbl_group'を照会しているのと同じ方法で、' tbljoingroup'を照会してユーザーのグループのリストを取得します。ログインしたユーザーのデータを取得し、 'foreach'の中で' foreach'を使用して、 – Linek

+0

なので、ユーザーがグループのメンバーであるかどうかを確認するために別の 'foreach'を作成する必要があります。 <?php if($ value ['g_id'])){?> 'グループのIDを参照していないユーザーのID ...あなたの答えを編集できますか? –

+0

@ AlfieGaringあなたは1人のユーザーしかログインしていません、そのセッションのデータはありますか?私は私の例ではオブジェクトである '$ user'変数でこのユーザを参照しました。このオブジェクトに、現在ログインしているユーザーのデータをそのIDのように保存する必要があります。次に、このクラス 'memberOf($ groupId)'に、ユーザーがメンバーである(データベースからの)グループを検索し、 '$ groupId'が' foreach'ループを使っているかどうかをチェックするメソッドを作成します。 – Linek

関連する問題