函数内部有两个WHILE - 没有执行一个

时间:2013-01-16 06:58:08

标签: php mysql drupal drupal-6

我试图在WHILE的帮助下一个接一个地在函数内添加两个DB_QUERY的结果,但是当我下载CSV时我得到的结果只有一个,我打印的是最终变量。这是代码 -

    <?php

function getPaidScoutUsers($nid) {
  $csv_output = '';
  $all_paid_scouts_entry = db_query("SELECT * FROM {signup_event} WHERE event_nid = %d",$nid);
  while($paid_user = db_fetch_object($all_paid_scouts_entry)){
    $role_name     = 'Scout';
    $profile       = content_profile_load(scout_profile, $paid_user->attendee_uid);
    $firstname     = $profile->field_sfname[0]['value'];
    $lname         = $profile->field_last_name[0]['value'];
    $patrol        = get_term_name($profile->field_scout_patrol[0]['value']);
    $position      = get_term_name($profile->field_scout_rank[0]['value']);    
    $homephone     = "";
    $cellphone     = "";
    $email         = "";
    $paid_status   = 'Paid';
    $payment_date  = date_format_date($paid_user->created_date[0]['value'],$type = 'custom', $format = 'm/d/Y');
    $csv_output .= "\"".$role_name."\"".","."\"".$lname ."\"".","."\"".$firstname."\"".","."\"".$patrol."\"".","."\"".$position."\"".","."\"".$homephone."\"".",".$cellphone.",".$email.","."\"".$paid_status."\"".","."\"".$payment_date."\""."\r";    
  }
  return $csv_output;
}

function getUnpaidUsers($nid) {
    $csv_output = '';
    $all_unpaid_scout_list = db_query("SELECT * FROM users
                                     INNER JOIN users_roles ON users.uid = users_roles.uid
                                     WHERE users_roles.rid =7
                                     AND users.uid NOT IN (
                                     SELECT attendee_uid FROM signup_event WHERE event_nid = %d)
                                     ORDER BY name ASC",$nid);
    while($unpaid_user = db_fetch_object($all_unpaid_scout_list)){
      $role_name     = 'Scout';
      $profile       = content_profile_load(scout_profile, $unpaid_user->uid);
      $firstname     = $profile->field_sfname[0]['value'];
      $lname         = $profile->field_last_name[0]['value'];
      $patrol        = get_term_name($profile->field_scout_patrol[0]['value']);
      $position      = get_term_name($profile->field_scout_rank[0]['value']);   
      $homephone     = trim($profile->home_phone[0]['value']);
      $cellphone     = trim($profile->cell_phone[0]['value']);
      $email         = $profile->email_1;
      $paid_status   = 'Unpaid';
      $payment_date  = '';
      $csv_output .= "\"".$role_name."\"".","."\"".$lname ."\"".","."\"".$firstname."\"".","."\"".$patrol."\"".","."\"".$position."\"".","."\"".$homephone."\"".",".$cellphone.",".$email.","."\"".$paid_status."\"".","."\"".$payment_date."\""."\r";
    }
    return $csv_output;
}

function event_signup_download_detail($nid)
{ 
    //global $user;   
    module_load_include('inc', 'signup_event', 'event_signup_view');
    $csv_output = '';
    $csv_output .= "Role,Last name,First Name,Patrol,Position,Home phone,Cell Phone,Email,Payment Status,Payment Date\n";           
    $nid = 2001;

    // add the paid users to the csv 
    $csv_output .= getPaidScoutUsers($nid);

    // get unpaid users, add them to the csv
    //$csv_output .= getUnpaidUsers($nid);

    echo $csv_output;

    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment;   filename=\"Registration_Dues_Information.csv\"");
    print $csv_output;
    exit; 

}

我错在哪里?有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试将功能拆分为单独的方法。

function getPaidScoutUsers($nid) {

  $csv_output = '';
  $all_paid_scouts_entry = db_query("SELECT * FROM {signup_event} WHERE event_nid = %d",$nid);
  while($paid_user = db_fetch_object($all_paid_scouts_entry)){
    $role_name     = 'Scout';
    $profile       = content_profile_load(scout_profile, $paid_user->attendee_uid);
    $firstname     = $profile->field_sfname[0]['value'];
    $lname         = $profile->field_last_name[0]['value'];
    $patrol        = get_term_name($profile->field_scout_patrol[0]['value']);
    $position      = get_term_name($profile->field_scout_rank[0]['value']);
    $homephone     = trim($paid_user->home_phone);
    $cellphone     = trim($paid_user->cell_phone);
    $email         = $profile->email_1;
    $paid_status   = 'Paid';
    $payment_date  = date_format_date($paid_user->created_date[0]['value'],$type = 'custom', $format = 'm/d/Y');
    $csv_output .= "\"".$role_name."\"".","."\"".$lname ."\"".","."\"".$firstname."\"".","."\"".$patrol."\"".","."\"".$position."\"".","."\"".$homephone."\"".",".$cellphone.","."\"".$paid_status."\"".","."\"".$payment_date."\""."\r";    
  }

  return $csv_output;
}

function getUnpaidUsers($nid) {
    $csv_output = '';
    $all_unpaid_scout_list = db_query("SELECT * FROM users
                                     INNER JOIN users_roles ON users.uid = users_roles.uid
                                     WHERE users_roles.rid =7
                                     AND users.uid NOT IN (
                                     SELECT attendee_uid FROM signup_event WHERE event_nid = %d)
                                     ORDER BY name ASC",$nid);
    while($unpaid_user = db_fetch_object($all_unpaid_scout_list)){
      $role_name     = 'Scout';
      $profile       = content_profile_load(scout_profile, $unpaid_user->uid);
      $firstname     = $profile->field_sfname[0]['value'];
      $lname         = $profile->field_last_name[0]['value'];
      $patrol        = get_term_name($profile->field_scout_patrol[0]['value']);
      $position      = get_term_name($profile->field_scout_rank[0]['value']);   
      $homephone     = trim($profile->home_phone[0]['value']);
      $cellphone     = trim($profile->cell_phone[0]['value']);
      $email         = $profile->email_1;
      $paid_status   = 'Unpaid';
      $payment_date  = '';
      $csv_output .= "\"".$role_name."\"".","."\"".$lname ."\"".","."\"".$firstname."\"".","."\"".$patrol."\"".","."\"".$position."\"".","."\"".$homephone."\"".",".$cellphone.",".$email.","."\"".$paid_status."\"".","."\"".$payment_date."\""."\r";
    }


    return $csv_output;
}

function event_signup_download_detail($nid)
{ 
    global $user;   
    module_load_include('inc', 'signup_event', 'event_signup_view');
    $csv_output = '';
    $csv_output .= "Role,Last name,First Name,Patrol,Position,Home phone,Cell Phone,Email,Payment Status,Payment Date\n";        

    // add the paid users to the csv 
    $csv_output .= getPaidScoutUsers($nid);

    // get unpaid users, add them to the csv
    $csv_output .= getUnpaidUsers($nid);

    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment;   filename=\"Registration_Dues_Information.csv\"");
    print $csv_output;
    exit; 

}

注意:我没有测试此代码

答案 1 :(得分:0)

while($unpaid_user = db_fetch_object($all_unpaid_scout_list)){
      $role_name 1    = 'Scout';
      $profile1       = content_profile_load(scout_profile, $unpaid_user->uid);
      $firstname1     = $profile->field_sfname[0]['value'];
      $lname1         = $profile->field_last_name[0]['value'];
      $patrol1        = get_term_name($profile->field_scout_patrol[0]['value']);
      $position1      = get_term_name($profile->field_scout_rank[0]['value']);   
      $homephone1     = trim($profile->home_phone[0]['value']);
      $cellphone1     = trim($profile->cell_phone[0]['value']);
      $email1         = $profile->email_1;
      $paid_status1   = 'Unpaid';
      $payment_date1  = '';
      $csv_output .= "\"".$role_name1."\"".","."\"".$lname1 ."\"".","."\"".$firstname1."\"".","."\"".$patrol1."\"".","."\"".$position1."\"".","."\"".$homephone1."\"".",".$cellphone1.",".$email1.","."\"".$paid_status1."\"".","."\"".$payment_date1."\""."\r";
    }

echo $csv_output;

只需用第二个while循环替换第二个while循环。