2016-02-27 100 views
1

我需要一个按钮来取代另一个按钮取决于几个PHP if statements。它的工作方式是,一个用户只能使用另一个用户一次,如果用户已经被使用,它将显示另一个按钮,而不是默认的一组按钮,这些按钮可用于非受欢迎的用户。按钮取代另一个按钮取决于PHP查询

我在我的数据库中有一个表favourites。我插入了一行进行测试。

id - 16 
favourited_who - Freddy 
favourited_by - AliceP 

仅供参考,我的网站目前有三种用户:AlicePFreddyFred。只是为了解释,我登录为AliceP,而且如您所见,Fred不在我的favourites中,在这种情况下,应该为Fred显示两个按钮,分别是Send MessageAdd to Favourites。另一方面,Freddy是我的最爱,在这种情况下,我想显示两个按钮,它们是Send MessageRemove from Favourites

使用下面的代码,FredFreddy将显示Remove from Favourites按钮,但不应该显示该按钮。

我需要覆盖在我的代码,我相信我有三个条件:

// 1. Con 1: Dont display any buttons for the logged in user as they cannot fav or msg themselves. 
// 2. Con 2: Display sendmsg and addfriend btn if the user is not in the logged in users favs 
// 3. Con 3: Display sendmsg and remfriend btn is the user is in the logged in users favs. 

这是我曾尝试:

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

    // Get all the favourites of the logged in user... 
    $q = mysqli_query ($connect, "SELECT * FROM favourites WHERE favourited_by='$username'"); 
    $num_of_favs = mysqli_num_rows($q); 
     $r_query = mysqli_fetch_array($q); 
      $db_fav_who = $r_query['favourited_who']; 
      $db_fav_by = $r_query['favourited_by']; 

    // Check: See if $user isn't already in there favourites. 
    /*if ($db_fav_by == $username){ // if logged in user has anyone favourited 
     // 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')"); 
    } 
} // if isset closed 

// Condition 1: 
if ($user == $username){ 
     // dont display buttons  
} 
// Condition 2: 
if ($user != $username && $favourited_who != $db_fav_who){ // if $user is not equal to db fav_who value 
    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>"; 
    }  
// Condition 3: 
if ($user != $username && $favourited_who == $db_fav_who) { 
     echo "<form method='post'> 
       <input type='submit' class='btn btn-info' name='sendmsg' value='Send Message'/> 
       <input type='submit' class='btn btn-info' name='remfriend' value='Remove from Favourites'> 
       </form>"; 
     } 

我已经覆盖了所有的三个条件,但我无法理解为什么代码没有为每个场景显示正确的按钮?

编辑:

找到了解决办法,原来我不得不添加if isset封闭括号外的以下内容:

$favourited_who = $user; // u variable 
    $favourited_by = $username; // logged in user 
    // Get all the favourites of the logged in user... 
    $q = mysqli_query ($connect, "SELECT * FROM favourites WHERE favourited_by='$username'"); 
    $num_of_favs = mysqli_num_rows($q); 
     $r_query = mysqli_fetch_array($q); 
      $db_fav_who = $r_query['favourited_who']; 
      $db_fav_by = $r_query['favourited_by']; 

回答

0

你需要一个

<form method='post'> 

为以下行?

  echo "<div class='edit_profile'> 
      <input type='submit' class='btn btn-info' name='remfriend' value='Remove from Favourites'> 
     </div>"; 

其他有他们。

+0

嘛'如果statement'导致该回声类似于在'发现的代码//条件3'。尽管如此,我希望''用条件2替换'addfriend'按钮输入,该条件被'form'标记包围。 – Freddy

+0

Feddy,这只是一个猜测!,但在前面的if语句中,$ db_fav_who和favourited_who的值设置为相同的值。在下面的行中。 $ db_fav_who = $ r_query ['favourited_who'];所以当进行中的if语句运行时,它们将匹配并满足第三个条件。是对的还是我错过了什么? –

+0

我第一次给$ db_fav_who分配一个值的行是$ db_fav_who = $ r_query ['favourited_who'];'这是从数据库中获取标记为“favourited_who”列的数据。我希望这回答了你的问题。 – Freddy

0

你写while循环关闭但循环在哪里?

可能

while($r_query = mysqli_fetch_array($q)) { ... }; 

而且你对此有何评论一个{和两个}在此代码

/* if ($db_fav_who == $user){ 
     echo "<div class='edit_profile'> 
      <input type='submit' class='btn btn-info' name='remfriend' value='Remove from Favourites'> 
     </div>"; 
     } 
    }*/ 
+0

我最初确实有一个while循环,它是'while($ r_query = mysqli_fetch_array($ q)){...}',但我后来删除了while循环,并注释掉了结束标记。 – Freddy

+0

一个'}'关闭while循环(我已经删除)。如果语句if($ db_fav_who == $ user){'和最后一个'}'关闭了if if语句if($ db_fav_by == $ username){'。 – Freddy

相关问题