-1

私はWordpressを使用していますが、同じ列から複数の値を取得してそれらを変数に変換する方法を理解する必要があります。

最後のステップは、データを次のようにテーブルに表示することです。

Bob Company1 <br>
Alex Company2

代わりに私はどちらBob Alex Company1 Company 2かを取得します

Bob <br>
Alex<br>
Company1<br>
Company2

これが私が扱っている2つの異なるバージョンです:

$sql = "SELECT meta_value as guest from wp_postmeta INNER JOIN wp_posts ON wp_posts.ID  = wp_postmeta.post_id WHERE post_type='guests' AND meta_key='guest_name' UNION SELECT meta_value as company from wp_postmeta INNER JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id WHERE post_type='guests' AND meta_key='guests_company'";
$result = mysql_query($sql);
$NumberOfResults=mysql_num_rows($result);

if (mysql_num_rows($result) == 0) {
    echo "No Guests yet... stay tuned!";
    exit;
}

while(list($guest,$company)= mysql_fetch_row($result)) 
{ 
    echo "<table><tr><td>".$guest."</td><td>".$company."</td></tr></table>";
}

また

$sql = mysql_query("SELECT meta_value as guest from wp_postmeta INNER JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id WHERE post_type='guests' AND meta_key='guest_name' LIMIT 2 UNION SELECT meta_value as company from wp_postmeta INNER JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id WHERE post_type='guests' AND meta_key='guests_company'");

$i = 1;
while ($get = mysql_fetch_array($sql))
{
    echo '<table><tr><td>'.$get["guest"].'</td><td>'.$get["company"].'</td></tr></table>';

    $i++;
}

どんな助けでもとてもありがたいです!!! ありがとう!

編集:将来誰かがWordpressの高度なカスタムフィールドを使用して独自のウィジェットを作成したい場合に備えて、これが多かれ少なかれ最終製品です:

$sql = "SELECT p.ID AS post_id, g.meta_value as guest, c.meta_value as company, d.meta_value as date
FROM wp_posts p
JOIN wp_postmeta g ON g.post_id = p.id AND g.meta_key = 'guest_name'
JOIN wp_postmeta c ON c.post_id = p.id AND c.meta_key = 'guests_company'
JOIN wp_postmeta d ON d.post_id = p.id AND d.meta_key = 'show_date'
WHERE p.post_status = 'publish'
ORDER by d.meta_value DESC";

$query = mysql_query($sql);


echo '<table><tr><th>Guest</th><th>Company</th><th>Show Date</th></tr>';
while ($get = mysql_fetch_array($query)) {$newDate = date("m-d-Y", strtotime($get["date"]));
    echo '<tr><td><a href="http://yoururl.com/?p='.$get["post_id"].'">'.$get["guest"].'</a></td><td>'.$get["company"].'</td><td>'.$newDate.'</td></tr>';
}
echo '</table>';

これに関するdoublesharpの助けに本当に感謝しています。

4

2 に答える 2

1

私があなたの質問を正しく理解しているなら、あなたはこのようなテーブルを表示するためのコードを書かなければなりません:

echo '<table>';
while ($get = mysql_fetch_array($sql))
{
    echo '<tr><td>'.$get["guest"].'</td><td>'.$get["company"].'</td></tr>';

}
echo '</table>';
于 2012-10-18T04:21:08.810 に答える
0

クエリのさまざまな「post_type」値で示されるように、postmeta値がさまざまな投稿に添付されている場合は、それらをリンクするために他の識別情報が必要になります。guest_nameaとmeta_valueの両方を持つ単一のpost_idがある場合は、guest_companyそれを2回結合して結果を取得できます。aを使用するUNIONと、常に異なる行に戻ってきます。

// Join the postmeta table to posts twice, once for each meta_key. 
$sql = <<<SQL
SELECT p.ID AS post_id, g.meta_value as guest, c.meta_value as company
FROM wp_posts p
JOIN wp_postmeta g ON g.post_id = p.id AND g.meta_key = 'guest_name'
JOIN wp_postmeta c ON c.post_id = p.id AND c.meta_key = 'guests_company'
WHERE p.post_status = 'publish'
SQL;

// Execute the query
$query = mysql_query($sql);

// Start your table for output
echo '<table>';
while ($get = mysql_fetch_array($query)) {
    // Write the output of each row
    echo '<tr><td>'.$get["guest"].'</td><td>'.$get["company"].'</td></tr>';
}
// Close the table
echo '</table>';

これがWordpress内にある場合$wpdbは、クエリにオブジェクトを使用することをお勧めします。

于 2012-10-18T05:28:55.927 に答える