PHP/MySQLを使用しているクライアントのオンラインカレンダーを作成しています。PHP:whileループのmysql_fetch_array()が時間がかかりすぎる
私は<table>
と<tr>
を開始してから、その月の最大日数まで毎日新しい<td>
を作成するwhileループを作成しました。
PHPは、$i
(カウンタ)の値とデータベースのその行内の書式化されたUnixタイムスタンプの値を比較することにより、MySQLデータベースでその日に発生したイベントを検索します。一致したときにのみ内部行カウンタをインクリメントするために、別のwhileループを作成して結果の新しい配列を取り出します。それはローディング時間を大幅に遅くしています。
ここでは、不要なものを読む必要はありませんので、短縮コード、です:
$qry = "SELECT * FROM events WHERE author=\"$author\"";
$result = mysql_query($qry) or die(mysql_error());
$row = mysql_fetch_array($result);
for ($i = 1; $i <= $max_days; $i++) {
echo "<td class=\"day\">";
$rowunixdate_number = date("j", $row['unixdate']);
if ($rowunixdate_number == $i) {
while ($rowunixdate_number == $i) {
$rowtitle = $row['title'];
echo $rowtitle;
$row = mysql_fetch_array($result);
$rowunixdate_number = date("j", $row['unixdate']);
}
}
echo "</td>";
if (newWeek($day_count)) {
echo "</tr><tr>";
}
$day_count++;
}
forループの条件の周りにコードが壊れているようです。修正してください。 – Oddthinking
なぜフェッチがあなたのコードをそんなに遅くしているのか分かりませんが、私は、あなたがSQLに 'ORDER BY unixdate'節を置かない限り、あなたはそれらを順序で取得することは保証されていないことを指摘したいと思いますあなたは欲しい。 –
PHPの代わりにMySQLで日付チェックを使用しない特別な理由はありますか? –