2016-02-03 34 views
0

需要一些指導。我已經在Wordpress中建立了一個排球俱樂部網站,我們已經請求了我在Google表單/電子表格中捕獲的球員個人資料數據,保存爲.csv,然後導入到名爲「個人資料」的自定義表格中。 http://goo.gl/05tu3O顯示匹配WP的數據庫表格行post-id

我試圖添加代碼到播放器模板文件來顯示基於WP po​​st-id匹配的html表中的數據。 http://goo.gl/5bvwzV

我確定了所有播放器頁面post-id,並將它們包含在名爲「post_id」的表的第一列中,並將其設置爲Primary。目標是,例如,如果您打開一個帶有postid-1566的播放器頁面,則應顯示post_id爲1566的配置文件表格中的行。

因爲SELECT *查詢,我現在得到了所有人的配置文件數據。我試圖將查詢的語法更改爲DISTINCT,以便查找配置文件表中具有與您所在的播放器頁面相同的post-id號碼的特定行。

<?php 
    global $wpdb; 
// $result = $wpdb->get_results($wpdb->prepare ("SELECT DISTINCT $wpdb->posts.ID FROM $wpdb->profiles")); 
    $result = $wpdb->get_results($wpdb->prepare ("SELECT * FROM profiles")); 

    foreach ($result as $print) { 

     echo '<h6>Playing Experience </h6><p>' . $print->PlayingExperience.'</p>'; 
     echo '<h6>Previous Clubs </h6><p>' . $print->PreviousClubs.'</p>'; 
     echo '<h6>Athletic Awards & Accolades</h6><p>' . $print->AwardsAccolades.'</p>'; 
     echo '<h6>Fondest Volleyball Memory</h6><p>' . $print->FondestMemory.'</p>'; 
     echo '<h6>Best Finish</h6><p>' . $print->BestFinish.'</p>'; 
     echo '<h6>Online Video</h6><p>' . $print->OnlineVideo.'</p>'; 

     echo '<h3>Profile Details</h3>'; 

//  echo '[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]'; 
//  echo '[content_protector password=&quot;xxxxxxx&quot; cookie_expires=&quot;0&quot; identifier=&quot;xxx&quot;]'; 

// In case there is opening and closing shortcode. 
//  echo do_shortcode('[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"] Private Info [/content_protector]'); 
     echo do_shortcode('[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]'); 
     echo '<h2>' . $print->FirstName.' ' . $print->LastName.' </h2>'; 
     echo '<table class="profile center">'; 
     echo '<tr><td>Team </td><td>' . $print->Team.'</td></tr>'; 
     echo '<tr><td>First Name </td><td>' . $print->FirstName.'</td></tr>'; 
     echo '<tr><td>Nickname </td><td>' . $print->Nickname.'</td></tr>'; 
     echo '<tr><td>Middle Name </td><td>' . $print->MiddleName.'</td></tr>'; 
     echo '<tr><td>Last Name </td><td>' . $print->LastName.'</td></tr>'; 
     echo '<tr><td>Height </td><td>' . $print->Height.'</td></tr>'; 
     echo '<tr><td>Position </td><td>' . $print->Position.'</td></tr>'; 
     echo '<tr><td>Birthday </td><td>' . $print->Birthday.'</td></tr>'; 
     echo '<tr><td>School </td><td>' . $print->School.'</td></tr>'; 
     echo '<tr><td>Grade </td><td>' . $print->Grade.'</td></tr>'; 
     echo '<tr><td>Class </td><td>' . $print->Class.'</td></tr>'; 
     echo '<tr><td>Commitment </td><td>' . $print->Commitment.'</td></tr>'; 
     echo '<tr><td>Standing Reach </td><td>' . $print->Reach.'</td></tr>'; 
     echo '<tr><td>Block Touch </td><td>' . $print->Block.'</td></tr>'; 
     echo '<tr><td>Approach Jump </td><td>' . $print->Approach.'</td></tr>'; 
     echo '<tr><td>GPA (Unweighted) </td><td>' . $print->GPA_Unweighted.'</td></tr>'; 
     echo '<tr><td>GPA (Weighted) </td><td>' . $print->GPA_Weighted.'</td></tr>'; 
     echo '<tr><td>Class Rank </td><td>' . $print->ClassRank.'</td></tr>'; 
     echo '<tr><td>ACT Scores </td><td>' . $print->ACT_Score.'</td></tr>'; 
     echo '<tr><td>SAT Scores </td><td>' . $print->SAT_Score.'</td></tr>'; 
     echo '<tr><td>Parents/Guardians </td><td>' . $print->Parents.'</td></tr>'; 
     echo '<tr><td>Parent 1 Email </td><td>' . $print->ParentEmail1.'</td></tr>'; 
     echo '<tr><td>Parent 2 Email </td><td>' . $print->ParentEmail2.'</td></tr>'; 
     echo '<tr><td>Address </td><td>' . $print->Address.'</td></tr>'; 
     echo '<tr><td>City, State, Zip </td><td>' . $print->City.', ' . $print->State.', ' . $print->Zip.'</td></tr>'; 
     echo '<tr><td>Your Cell # </td><td>' . $print->YourCell.'</td></tr>'; 
     echo '<tr><td>Parent 1 Cell # </td><td>' . $print->ParentCell1.'</td></tr>'; 
     echo '<tr><td>Parent 2 Cell # </td><td>' . $print->ParentCell2.'</td></tr>'; 
     echo '<tr><td>Home Phone </td><td>' . $print->HomePhone.'</td></tr>'; 
     echo '<tr><td>Interest in Beach Volleyball? </td><td>' . $print->BeachInterest.'</td></tr>'; 
     echo '<tr><td>Beach Volleyball experience? </td><td>' . $print->BeachExperience.'</td></tr>'; 
     echo '<tr><td>Next ACT/SAT date </td><td>' . $print->NextACTSATdate.'</td></tr>'; 
     echo '<tr><td>Favorite Subjects </td><td>' . $print->FavoriteSubjects.'</td></tr>'; 
     echo '<tr><td>Desired Area of Study </td><td>' . $print->DesiredMajor.'</td></tr>'; 
     echo '<tr><td>Desired Level of Play </td><td>' . $print->DesiredPlayingLevel.'</td></tr>'; 
     echo '<tr><td>State of College Preference </td><td>' . $print->CollegePreference.'</td></tr>'; 
     echo '<tr><td>Size of School </td><td>' . $print->SchoolSize.'</td></tr>'; 
     echo '<tr><td>Contacting schools? </td><td>' . $print->ContactingSchools.'</td></tr>'; 
     echo '</table>'; 
//  echo '[/content_protector]'; 
     echo do_shortcode('[/content_protector]'); 

    } 
?> 

不知道如果我接近這個最好的方式,但感覺我很接近。我認爲解決方案是在這個例子的某個地方,但我無法讓它工作。

$result = $wpdb->get_row($wpdb->prepare ("SELECT DISTINCT $wpdb->posts.ID FROM $wpdb->profiles WHERE post_id = $postid")); 

還無法執行「content_protector」簡碼的結束標記。我可以從do_shortcode開始,但過去的所有內容都需要在[/ content_protector]中,並且無法將該行的後半部分添加到底部。有什麼建議麼?有沒有辦法在短代碼之間嵌套一切?

非常感謝您的任何建議!

+0

當您通過發帖ID限制結果時,爲什麼需要DISTINCT?帖子ID在個人資料表中不唯一嗎?換句話說,'SELECT * FROM profiles WHERE post_id = $ postid'是否返回多於一條記錄? –

+0

只是在嘗試不同的東西。是的,發帖ID是唯一的......每個玩家只有一行。頁面仍然使用這個呈現,但不返回任何內容。 Thx雖然! –

+0

@devlin,你是對的......我只需要添加$ postid = get_the_ID();到頂部,它的作品!嗚呼! 現在我只需要結束content_protector短代碼工作,所以我可以通過密碼隱藏這些個人數據。有任何想法嗎? –

回答

0

選擇DISTINCT對我沒有意義。在您的個人資料表中,每個條目/行都是唯一的,對嗎?每行一個玩家? DISTINCT只會返回任何重複值一次。

我想你想使用$結果,通過每個循環的結果是這樣的

$print = $wpdb->get_row($wpdb->prepare ("SELECT * FROM $wpdb->profiles 
              WHERE post_id = %s," $postid)); 

跳過。 get_row的每個結果都應包含整行玩家數據。而是用每個玩家的ID來查詢整行。

foreach ($postids as $postid){ 

    $print = $wpdb->get_row($wpdb->prepare ("SELECT * FROM $wpdb->profiles 
               WHERE post_id = %s," $postid)); 
    // echo all those print lines 
} 
+0

我在想的這種方法是假設你以某種方式獲得了你想顯示數據的玩家的$ postid(s)。 postids會在你以前擁有的陣列中嗎?或者在每個頁面加載時,你是否用你想要顯示的播放器的ID填充'$ postid'變量? – italiansoda

+0

是的,每個入口/行都是唯一的,每行一個玩家。這些建議不會渲染頁面,只是一個白色屏幕。看起來它應該可以工作。不確定你的問題,但我會傾向於後者。我是一名設計師/網站管理員,只是爲了讓我的無知而做出這項工作。如果有幫助,我可以將post_id中列的名稱更改爲其他內容。許多thx的建議! –

+0

檢查錯誤日誌以查看PHP錯誤說的內容。如果需要,請在wp-config.php中設置以顯示類似的錯誤。 '的ini_set( '的display_errors',1); error_reporting(E_ALL | E_STRICT);' – italiansoda

0

Got it!該工程...

$postid = get_the_ID(); 
$result = $wpdb->get_results($wpdb->prepare ("SELECT * FROM profiles 
               WHERE post_id = $postid")); 
foreach ($result as $print) { 

而且有大量的代碼在打開/關閉標籤中間的簡碼的技巧是:

$the_content = '<h2>' . $print->FirstName.' ' . $print->LastName.' </h2>'; 
$the_content .= '<table class="profile center">'; 
$the_content .= '<tr><td>Team </td><td>' . $print->Team.'</td></tr>'; 
$the_content .= '<tr><td>First Name </td><td>' . $print->FirstName.'</td></tr>'; 
$the_content .= '<tr><td>Nickname </td><td>' . $print->Nickname.'</td></tr>'; 
$the_content .= '<tr><td>Middle Name </td><td>' . $print->MiddleName.'</td></tr>'; 
$the_content .= '<tr><td>Last Name </td><td>' . $print->LastName.'</td></tr>'; 
... 
$the_content .= '/<table>'; 
echo do_shortcode('[content_protector password="xxxxxxx" cookie_expires="0" identifier="xxx"]' . $the_content . '[/content_protector]'); 

THX傢伙對我的幫助找到解決方案。你搖滾!