繁体   English   中英

PHP / MySQL根据以前的if语句输出指定的字段

[英]PHP/MySQL outputting specified fields based upon previous if statements

如果$userid等于$row['RequestRecipientID']则脚本将输出所有$row['StatusType'] ,等于“Accepted”。 我需要这个脚本才能输出$row['StatusType'] ,它等于$userid 有任何想法吗?

<?php
include("enc.php");
mysqlcon();
$userid = $_SESSION['userid'];
$results = mysql_query("SELECT requests.RequestRecipientID, requests.StatusType, requests.AddedMessage, requests.FriendType, requests.RequestSentByID, requests.id, users.username, users.firstname, users.lastname, users.email, users.user_pid, users.id FROM requests, users");
while($row = mysql_fetch_array($results)) {
    if ($userid == $row['RequestRecipientID']) {
        if ($row['StatusType'] == "Accepted") {
        echo $row['firstname'] . "has accepted your friend request."; // place inside  notification pane
    } elseif ($row['StatusType'] == "Denied") {
        echo $row['RequestSentByID'] . " has denied your request.";
    } elseif ($row['StatusType'] == "Pending") {
    echo "<span class='text1'>";
    echo $row['firstname'] . " " . $row['lastname'] . "<br>" . $row['AddedMessage'] . "</span>";
    echo "<form method='GET' action='protected/process-friend-request-action.php?" . $row['id'] . "'>";
    echo '<input class="action_button" name="accepted" type="submit" value="Accept" />';
    echo '<input class="action_button" name="denied" type="submit" value="Deny" />';
    echo '<input type="hidden" name="id" value="' . $row["id"] . '" />';
    echo '</form>';
    }
    }
}
?>

如果您只需要与用户标识相关的结果,则应首先使用SQL查询进行过滤。

// Assuming that your SQL query is correct
// added WHERE users.RequestRecipientID = '$userid'
$results = mysql_query("SELECT requests.RequestRecipientID, requests.StatusType, requests.AddedMessage, requests.FriendType, requests.RequestSentByID, requests.id, users.username, users.firstname, users.lastname, users.email, users.user_pid, users.id FROM requests, users WHERE users.RequestRecipientID = '$userid'");

// used fetch_assoc instead of fetch_array since you are 
// not using numeric array
while($row = mysql_fetch_assoc($results)) {
    // normally 3 is my limit to use if-else
    // if i have more than 3, i'll use switch
    if ($row['StatusType'] == "Accepted") {
        // accepted action
    }
    elseif ($row['StatusType'] == "Denied") {
        // denied action
    }
    else {
        // not denied & accepted action
    }
}

一些事情要开始。

首先,阅读,学习和喜欢MySQL联接 - 编码恐怖:MySQL加入

您似乎在RequestRecipientID和RequestSendByID之间感到困惑(对于我的解决方案,我假设您希望查看当前用户发送或发送给当前用户的所有请求。

在与数据库交互时,您确实需要测试错误。 未能测试错误只是要求在没有解释的情况下破解。

<?php

include( 'enc.php' );
mysqlcon();

$userid = $_SESSION['userid'];
$sqlStr = 'SELECT
             `r`.`RequestRecipientID`, `r`.`StatusType`, `r`.`AddedMessage`, `r`.`FriendType`, `r`.`RequestSentByID`, `r`.`id` AS `requestID`,
             `other`.`username`, `other`.`firstname`, `other`.`lastname`, `other`.`email`, `other`.`user_pid`, `other`.`id` AS `otherID`
           FROM `request` AS `r`
             LEFT JOIN `users` AS `other` ON ( IF( `r`.`RequestRecipientID` = '.(int) $userid.' , `r`.`RequestSentByID` , `r`.`RequestRecipientID` ) = `user`.`id` )
           WHERE
             '.(int) $userid.' IN ( `r`.`RequestSentByID` , `r`.`RequestRecipientID` )';

$results = mysql_query( $sqlStr );

if( !$results ){
  // There was an error in the SQL Query
}elseif( mysql_num_rows( $results )==0 ){
  // No Records were returned
}else{
  while( $r = mysql_fetch_array( $results ) ){
    if( $r['RequestSentByID']==$userid ){
      // A Request Sent by the Current User
      switch( strtolower( $r['StatusType'] ) ){
        case 'accepted' :
        case 'denied' :
          echo $r['firstname'].' has '.strtolower( $r['StatusType'] ).' your friend request';
          break;
        case 'pending' :
          echo $r['firstname'].' has not yet responded to your friend request';
        default:
          echo 'This Request has an unexpected Status of '.strtolower( $r['StatusType'] );
      }
    }else{
      // A Request Sent to the Current User
      switch( strtolower( $r['StatusType'] ) ){
        case 'accepted' :
        case 'denied' :
          echo 'You '.strtolower( $r['StatusType'] ).' a friend request from '.$r['firstname'];
          break;
        case 'pending' :
          echo '<span class="text1">'.$r['firstname'].' '.$r['lastname'].'<br>'.$r['AddedMessage'].'</span>';
          echo '<form method="get" action="protected/process-friend-request-action.php">';
            echo '<input class="action_button" name="accepted" type="submit" value="Accept" />';
            echo '<input class="action_button" name="denied" type="submit" value="Deny" />';
            echo '<input type="hidden" name="id" value="'.$r['requestID'].'" />';
          echo '</form>';
        default:
          echo 'This Request has an unexpected Status of '.strtolower( $r['StatusType'] );
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM