2010-12-20 10 views
0

次のSQL文を実行すると(完全に動作します)、データベースのすべてのテーブルが白く塗られていることがわかりました。テーブルセルが白く塗りつぶされました

これはなぜ起こっているのですか?

 // check database for necessary updates 

$update = mysql_query("SELECT * FROM rent WHERE colour='3C0'"); 

while($row_update = mysql_fetch_array($update)) { 

$datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 

if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 

    // date is between do nothing 

     mysql_close($update); 

    } else { 

    // date is not between so update 

    echo "date is not between"; 

    $update_result = mysql_query("UPDATE rent SET colour='F0F0F0' WHERE substr(pDate, 0, 10) NOT BETWEEN $min AND $max && colour='3C0'"); 

    mysql_close($update_result); 
} 
} 

私はいくつかの写真を掲載しました。

これは、それが(コード省略の上)のように見えることを意図している方法です。

http://i51.tinypic.com/143gpef.jpg

これは、それが現在(コード本以上)どのように見えるかです:

http://i54.tinypic.com/2lwm4xg.jpg

+3

「色」を使用してそのテーブルのHTMLを出力していますか?そうであれば、HTML/CSSは米国の「色」のスペルを使用しているため、変更しようとする試みは機能せず、デフォルトの「白」が適用されます。 – scunliffe

+0

@scunliffe +1のCSSヒント。スペルのもう1つの仮想+1 –

答えて

1

whileループがテーブルのすべての結果を通過しているように見えます。ループの繰り返しごとにPHPで日付を最初にチェックしてから、更新クエリで日付をもう一度チェックし、一致するすべての行をF0F0F0に更新するように見えます。

#F0F0F0の代わりにコードを白に変更する理由がわかりません。コードに白またはfffがないため、コードをより効率的にする方法を提案するだけです。

rentテーブルにid列(自動インクリメントのプライマリキー)がある場合、whileループの各繰り返しですべての行を更新する代わりに、テストする代わりにwhileループでこの値を使用できます2回目の日付。

$update = mysql_query("SELECT * FROM rent WHERE colour='3C0'"); 
while($row_update = mysql_fetch_array($update)) { 
    $datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
    $datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 
     // date is between do nothing 
     mysql_close($update); 
    } else { 
     // date is not between so update 
     echo "date is not between"; 
     $update_result = mysql_query("UPDATE rent SET colour='F0F0F0' WHERE id=" . $row_update['id'] . " && colour='3C0'"); 
     mysql_close($update_result); 
    } 
} 
+0

はF0F0F0を#F0F0F0に変更し、完全に機能しました! – methuselah

関連する問題