2012-03-13 7 views
0

これは私の学習プロジェクトです。私はこのサイトでいくつかの質問をしてくれて、かなり教えてくれました。しかし、私は "スイッチ"のルーチンに問題があり、私が召集することができるすべての指針を感謝します。このスイッチルーチンは示唆でしたが、エラーが発生します。私はかなりの研究をしましたが、このプロセスをどのように達成するのかまだ分かりません。私はまた、 "@"が "date_create(" @ $ qucls ")"の意味を理解していません。それがあるかどうかは問題ではないようですが、これはルーチンと一緒に提案されたものです。エラーなしでスイッチルーチンを追加することはできません

質問は私が作りたいものを得るまでチェックアウトしますが、一度タイム・ストリングを更新しようとすると、それはうんざりしてしまいます。 エラーは、 "date_format()はパラメータ1がDateTime、ブール値が与えられていることを期待しています..."です。私が知る限り、$ quclsは真偽ではなく数字の文字列でなければなりません。これらのテーブルフィールドには、int型の数値ストリングがあります。

他の投稿を繰り返すだけで、私の頭を越えずにデータベースを変更することはできません。カレンダープログラムからメールリマインダを作成するには、その情報を取得する必要があります。テーブルは、珍しいフォームと長さの日付/時刻文字列で畳み込まれているので、ここに表示されるスクリプトよりもはるかに多くのスクリプトがあります。私のプロセスでは、これは私がそれを理解しているところであり、セプトゥアジャンにとってはそれほど悪くはありません。私は正しい結果を得るプロセスを見つけた後、それを掃除するつもりです。

date_default_timezone_set('UTC'); 
$today = date("Ymd"); 
mysql_select_db($dbname); 
$querydel = "SELECT cal_entry_id, cal_type FROM webcal_entry_log WHERE cal_type = 'D'"; 
$delqu = mysql_query($querydel); 
$i = 0; 
while ($row = mysql_fetch_array($delqu, MYSQL_NUM)) { 
    $qudel[$i] = $row[0]; 
} 
$query1 = "SELECT cal_id, cal_name, cal_date, cal_time, cal_type, cal_description FROM webcal_entry WHERE cal_type = 'M' AND cal_date != ' . $today . ' AND cal_id != " . $qudel[$i]; 
$wequ1 = mysql_query($query1); 
while ($row = mysql_fetch_array($wequ1, MYSQL_NUM)) { 
    $quid1[$i] = $row[0]; 
    $quname[$i] = $row[1]; 
    $qutime[$i] = $row[3]; 
    $qudesc[$i] = $row[5]; 

    $query2 = "SELECT cal_id, cal_type FROM webcal_entry_repeats WHERE cal_id = " . $quid1[$i]; 
    $wer1 = mysql_query($query2); 
    if ($row = mysql_fetch_array($wer1, MYSQL_NUM)) {   
     $qutype[$i] = $row[1]; 
    } 

    $query3 = "SELECT cal_id, cal_last_sent FROM webcal_reminders WHERE cal_id = " . $quid1[$i]; 
    $wer2 = mysql_query($query3); 
    if ($row = mysql_fetch_array($wer2, MYSQL_NUM)) { 
     $qucls[$i++] = $row[1]; 
    } 
} 
for ($j = 0; $j < $i; $j++) { 
} 
// date calculations - switch routine 

$dateObj = date_create("@$qucls"); 

switch($qutype) { 
    case "daily": 
    date_add($dateObj, date_interval_create_from_date_string("1 day")); 
    break; 
    case "weekly": 
    date_add($dateObj, date_interval_create_from_date_string("1 week")); 
    break; 
    case "monthly": 
    date_add($dateObj, date_interval_create_from_date_string("1 month")); 
    break; 
    case "yearly": 
    date_add($dateObj, date_interval_create_from_date_string("1 year")); 
    break; 
} 

$qucls = date_format($dateObj, "U"); 

ありがとう:

ここでは、スクリプトの該当部分です!

編集:$ quclsは、クエリのループが終了した後、Unixタイムスタンプの配列をint()型として出力します。 $ dateObj = date_create( "@ $ qucls")を呼び出すと、$ dateObjはfalseを返します。私はそのトリックを見つけることができないようです。

答えて

1

コードを見ると、$quclsは($qucls[$i++] = $row[1];という行に基づく)配列であるようです。 date_createは、最初のパラメータとして配列を受け入れません。

@の記号は、date_createに、UNIXのタイムスタンプを渡していることを示します。

をチェックして、date_createが適切な値を返すかどうかを確認することをおすすめします。

また、$qutypeは配列であるようです。あなたは、あなたが扱っているデータの種類を知っていることを確認するdate_create ...あなたべきprint_r($qutype)print_r($qucls)を呼び出そうとする前にどのように反応するswitch配列が渡されることに...

本当にわかりません。だから、

、あなたはこのような何かやろうとしている:ありがとうdleiftahが

+0

...あなたはすべての$quclsの値が更新されていることを保証するために、ループの前と後にしますprint_rを行うことができます

foreach($qutype as $key => $type){ $time = $qucls[$key]; $dateObj = date_create("@$time"); switch($type) { case "daily": date_add($dateObj, date_interval_create_from_date_string("1 day")); break; case "weekly": date_add($dateObj, date_interval_create_from_date_string("1 week")); break; case "monthly": date_add($dateObj, date_interval_create_from_date_string("1 month")); break; case "yearly": date_add($dateObj, date_interval_create_from_date_string("1 year")); break; } $qucls[$key] = date_format($dateObj, "U"); } 

を。 $ qutypeは、switch case、daily、weeklyなどの単語の配列です。これらのフィールドは、フィールド内の実際の単語です。 – defacto7

+0

申し訳ありませんが、編集が完了する前にタイムアウトしました。ありがとうdleiftah。 $ qutypeは、スイッチの場合、 "daily"、 "weekly"などの単なる単語です。彼らは現場での実際の言葉です。クエリの後、$ quclsはdatetime型ではなく、日付を表す数値の配列です。その時点で$ quclsの情報は正しいです。スイッチルーチンの後、上記のエラーが発生します。この考え方は$ qutypeの単語に基づいて、$ quclsの日付の配列に1日または1週間などを追加することです。 – defacto7

+0

あなたは値をループしてそれぞれの操作を実行する必要があるように思えます...私は提案で私の答えを編集しました... – keithhatfield

関連する問題