0

astrology.comから星座の毎日の星占いを抽出する簡単なphpクラスを作成しました。これをワードプレス内で使用したいと思います($ wpdbを使用)。

動作原理(理論上):

  1. コンテンツがすでにデータベースにあるかどうかを確認します(そしてそれを返します)。
  2. コンテンツがまだデータベースにない場合は、それを追加します(私が作成したphpクラスを呼び出します)。
  3. クラスがコンテンツを返さない場合は、データベースに前日のエントリがあるかどうかを確認して返します。
  4. これが機能しない場合は、エラーメッセージが返されます

問題は、ポイント2と3の間のどこかでスタックしていることです...(クラスがコンテンツを返しているかどうかを確認し、そうでない場合は前日のコンテンツを表示する方法がわかりません)

<?php require('./wp-blog-header.php');

$horoscope = new Horoscope(); global $wpdb;

$config = array('sign' => 'cancer',
                'type' => 'daily',
                'date' => date('Y-m-d'),);

$query = $wpdb->get_results("SELECT * FROM `wp_horoscope` WHERE zodiacal_sign = '".$config['sign']."' AND last_updated = '".$config['date']."';", ARRAY_A);

// step 1
if( $query && $query['0']['content'] != '' ){ $content = $query['0']['content']; }

// step 2
elseif( empty($query) || $content === '' ){
$content = $horoscope->get_daily_horoscope($config);
$fetched_content = $content;
$update = $wpdb->prepare("INSERT INTO `wp_horoscope` (`last_updated`, `content`, `zodiacal_sign`) values (%s,%s,%s)", $config['date'], $content, $config['sign']);
$wpdb->query($update);}

// step 3
elseif( $fetched_content === '' ) { // if previous function `get_daily_horoscope` does not return any content return the content for previous day
$yesterday_date = date('Y-m-d', strtotime('- 1 day'));
$query = $wpdb->get_results("SELECT * FROM `wp_horoscope` WHERE zodiacal_sign = '".$config['sign']."' AND last_updated = '".$yesterday_date."';", ARRAY_A);
$content = $query['0']['content']; }

// step 4
else{$content = 'The information is not in the DB';}

echo $content;

?>

誰かがこれを手伝ってくれますか?

4

2 に答える 2

2

// step 2コンテンツが初期化されていないため、常にヒットするelseif ( empty($query) || $content == '' )ため、宣言$contentされていないものは「等しい」ため、常に true が返されます。

あなたは試すことができます$content === '':

于 2013-02-07T21:41:56.340 に答える
2

ステップ 3 のケースはステップ 2 で満たされるため、ステップ 3 に到達することはないように思えます。

elseif( a || b) {

}
elseif( b ) {

}

b が true の場合、elseif(a || b) で b が既に true であるため、elseif(b) に到達することはありません。

于 2013-02-07T21:45:08.260 に答える