2016-02-26 95 views
1

我有一個按鈕叫做Add to Favourites。當點擊這個按鈕時,它執行一個PHP查詢,其中的數據進入db。這裏是存儲數據的表:根據PHP和數據庫條件交替顯示按鈕

favourites表:

id 
    favourited_who 
    favourited_by 

用戶可以僅由登錄用戶一次收藏最多。例如,如果Alice已經登錄,那麼Alice只能收藏一次Freddy,如果Freddy已經被收藏,那麼add to favourites按鈕將被替換爲remove from favourites按鈕。

這裏是我的PHP查詢將數據發送到DB:

if (isset($_POST['addfriend'])) { 
    $fav_request = $_POST['addfriend']; 
    $favourited_who = $user; // u variable 
    $favourited_by = $username; // logged in user 

    $q = mysqli_query ($connect, "SELECT * FROM favourites"); 
     while ($r_query = mysqli_fetch_array($q)) { 
      $db_fav_who = $r_query['favourited_who']; 
      $db_fav_by = $r_query['favourited_by']; 

    if ($db_fav_by == $username){ // check to see which users favourites we are checking 
     // if the user already exists in the logged in users favourites, then display remove from favourites button. 
     if ($db_fav_who == $user){ 
      echo "<div class='edit_profile'> 
       <input type='submit' class='btn btn-info' name='remfriend' value='Remove from Favourites'> 
      </div"; 
      } 
     } 
     }// while loop closed 
    if ($user != $username) { // Check: See user isnt favouriting themself. 
     $favourite_user = mysqli_query($connect, "INSERT INTO favourites VALUES ('', '$favourited_who', '$favourited_by')"); 
     $errMsg   = "Favourited"; 
     echo "done "; 
    } 
} 
if ($user == $username){ 
     // dont display buttons 
     } else { 
     echo " <form method='post'> 
      <input type='submit' class='btn btn-info' name='sendmsg' value='Send Message'/> 
      <input type='submit' class='btn btn-info' name='addfriend' value='Add to Favourites'> 
       </form>"; 
     } 

有了這個代碼,將數據插入到數據庫如預期,而remove from favourites按鈕出現,但它與一起出現add to favourites按鈕,當只顯示其中的一個時,取決於用戶是否喜歡。

底線,只有兩個按鈕應該顯示在所有時間,與Add to favourites按鈕沿send message按鈕,如果用戶未啓用在那裏的收藏夾,或者與remove from favourites按鈕沿send message按鈕,如果它們在收藏夾(如果數據在數據庫中,它們已被登錄的用戶所青睞)。

+1

你錯過閉幕'/'中的'>括號。 –

回答

0

您可以使用jQueryjson來解決這個問題。我會這樣做:
- 在加載頁面之前,如果用戶已經被使用(來自諮詢數據庫)並將其設置爲$isFavorited或其他內容,請將一些PHP提取出來。然後,在同一頁中,添加一個<script>元素,它的裏面如下:

var favourited = <?php echo json_encode($isFavorited); ?>; 
if(favourited) 
{ 
    $("#someHtmlElem").after("<button value="remove from favorites">"); 
    //will add <button> after #someHtmlElem 
} else { 
    $("#someHtmlElem").after("<button value="add to favorites">"); 
} 

要與數據庫comunicate當用戶點擊,您可以使用Ajax:

$.ajax({ 
     url: "file.php", 
     type: "POST", 
     data: {favourited: "true"}, //will send "true" to $_POST 
      success: function(d) { 
       alert(d); 
      } 
     });