Правильный способ реализации цикла if else или else if и могу ли я написать функцию внутри цикла - PullRequest
2 голосов
/ 25 мая 2011
function toltalRetailerComm($userId) {
    //print_r ($shoppeId);
    $sql = "SELECT shoppe_id FROM atm_super_shoppe WHERE user_id='$userId'";
    $query = $this->db->query($sql);
    if ($query->num_rows() > 0) {
        $result = $query->row();
        $shoppeId = $result->shoppe_id;

        $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) {
            $result = $query->row();
            $commission = $result->commission;
            return $commission;
        } else {

blockquote block2

            $sql = "SELECT shoppe_id FROM atm_store WHERE user_id='$userId'";
            $query = $this->db->query($sql);
            if ($query->num_rows() > 0) {
                $result = $query->row();
                $storeId = $result->shoppe_id;
                $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_store_commission WHERE shoppe_id ='$storeId'";
                $query = $this->db->query($sql);
                print_r($storeId);
                if ($query->num_rows > 0) {
                    $result = $query->row();
                    $commission = $result->commission;
                    return $commission;
                }
            }
        }
    }
}

Я новичок в PHP, может кто-нибудь сказать мне правильный способ использования if/else или elseif в кодепоказано выше?Его не в состоянии пойти на второй блок.Кроме того, и я могу написать функцию внутри if/else блока?

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Вы ищете что-то вроде этого:

function toltalRetailerComm($userId) {
    //print_r ($shoppeId);
    $sql = "SELECT shoppe_id FROM atm_super_shoppe WHERE user_id='$userId'";
    $shoppe_query = $this->db->query($sql);

    $sql = "SELECT shoppe_id FROM atm_store WHERE user_id='$userId'";
    $store_query = $this->db->query($sql);

    if ($shoppe_query->num_rows() > 0) {
        $result = $shoppe_query->row();
        $shoppeId = $result->shoppe_id;

        $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) {
            $result = $query->row();
            $commission = $result->commission;
            return $commission;
        }
    } else if ($store_query->num_rows() > 0) {
                $result = $store_query->row();
                $storeId = $result->shoppe_id;
                $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_store_commission WHERE shoppe_id ='$storeId'";
                $query = $this->db->query($sql);
                print_r($storeId);
                if ($query->num_rows > 0) {
                    $result = $query->row();
                    $commission = $result->commission;
                    return $commission;
                }
            }
        }
1 голос
/ 25 мая 2011

Каждый из ваших if s проверяет, есть ли какие-либо результаты запроса. Если есть - секция if выполняется. Если нет - секция else выполняется (а если нет else, ничего не выполняется).

Что касается вашего вопроса о функциях - вы не можете создать функцию внутри блока if/else, но вы можете вызвать функцию из него. Вы создаете функцию:

function total ($a, $b){
    return $a+$b;
}

и вы можете вызвать его из блока if:

if ($a==$b){
   $c = total ($a,$b);
}

РЕДАКТИРОВАТЬ: Что касается вашего вопроса о не попасть во второй блок. Перед вторым блоком стоит if следующим образом:

$sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) 

if проверяет, были ли возвращены какие-либо строки из запроса sql, который должен вернуть первое ненулевое выражение, следующее за условием shoppe_id ='$shoppeId'. Только если строки не возвращаются, он попадает во второй блок, который является else этого условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...