2016-10-14 165 views
0

我知道這已經被問過幾百次了,但我正在跳過某個步驟,並且如果有人能幫我弄清楚什麼是錯誤的(或者幫助我寫得更好),我會很感激它。wpdb用if/else語句foreach循環

我使用wordpress/woocommerce。當用戶購買產品時,我將以下內容插入表中:user_id,email,product_id,timestamp。

在每個產品頁面上,我試圖編寫一些循環遍歷表的代碼來檢查用戶是否購買了相應的視頻;如果是的話,它會顯示視頻,如果沒有,它會顯示一些文字。

我的邏輯有點偏離,或者我做得太多,但我試圖在codex中關注the example。現在使用下面的代碼,它會顯示該頁面的視頻(因爲我已經購買了它),但如果我沒有,它將不會顯示其他文本;我將擁有6-9個視頻,所以如果我可以使此代碼更高效,我很樂意學習如何。謝謝。這裏是我的代碼:

global $wpdb; 
$user_id = get_current_user_id(); 

$results = $wpdb->get_results("SELECT * FROM awdwp_webinar_orders WHERE user_id=" . $user_id . ""); 

if ($results) { 
    foreach($results as $result) { 
     $loop_uid = $result->user_id; 
     $loop_pid = $result->product_id;?> 

     if (is_product(991) && $loop_uid == $user_id && $loop_pid == 991) { 
      echo '<h2>' . get_the_title($id) . '<h2>'; 
      $the_video = get_field('video_file'); 
      //display video code 
     } //end if 
    } //end foreach 
} else { 
    echo "please purchase"; 
} 

回答

0
global $wpdb; 
$user_id = get_current_user_id(); 

$results = $wpdb->get_results("SELECT * FROM awdwp_webinar_orders WHERE user_id=" . $user_id . ""); 

if ($results) { 
    foreach($results as $result) { 
     $loop_uid = $result->user_id; 
     $loop_pid = $result->product_id;?> 

     if (is_product(991) && $loop_uid == $user_id && $loop_pid == 991) { 
      echo '<h2>' . get_the_title($id) . '<h2>'; 
      $the_video = get_field('video_file'); 
      //display video code 
     }else{ 
      echo "please purchase"; 
     }//end if 
    } //end foreach 
} else { 
    echo "please purchase"; 
} 
+0

這將顯示*購買*爲表中的每個條目不匹配的if語句。現在我有兩個購買(產品ID = 1017,991),它會顯示*購買*和視頻文件。 – VCP

0

這種方式解決了這個問題:

global $product; 
global $wpdb; 
$id = $product->id; 
$user_id = get_current_user_id(); 

$results = $wpdb->get_results("SELECT * FROM awdwp_webinar_orders WHERE product_id=" . $id . ""); 

if ($results) { 
    foreach($results as $result) { 
     $loop_uid = $result->user_id; 
     $loop_pid = $result->product_id; 

     if (is_product(991) && $loop_uid == $user_id) { 
      //code 
     } else {} 
    } 
}