Bagaimana untuk memaparkan berbilang acara setiap hari dalam kod kalendar php saya
P粉950128819
P粉950128819 2023-09-06 10:03:16
0
1
518

Kalendar saya berfungsi dengan baik seperti yang ditulis, tetapi jika saya menambah acara lain pada hari yang sama, ia hanya memaparkan acara pertama yang direkodkan dalam pangkalan data. Saya perlu dapat memaparkan berbilang acara pada hari yang sama.

Saya cuba menggunakan gelung untuk/seterusnya dan gelung while dalam kod saya untuk mengekstrak maklumat daripada pangkalan data. Tiada satu pun daripadanya berfungsi dengan cara kod ditulis. Pautan ini akan menunjukkan kepada anda kalendar kerja seperti yang ditulis: Blog Dunia Grims Ini kod saya:

'Sun', '2'=>'Mon', '3'=>'Tue', '4'=>'Wed', '5'=>'Thu', '6'=>'Fri', '7'=>'Sat'); $day=date('d'); $endDate=date('t',mktime(0,0,0,$cMonth,$day,$cYear)); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
 «« Prev ".date("F Y",strtotime($cYear."-".$cMonth."-01"))." Next »» 
\n"; echo "\n"; echo "
\n"; echo "\n"; foreach ($short_days as $key=>$val) { echo "\n"; } echo "\n"; $s=date('w', mktime (0,0,0,$cMonth,1,$cYear)); for ($ds=1; $ds<=$s; $ds++) { echo "\n"; } for ($d=1; $d<=$endDate; $d++) { if (date('w',mktime (0,0,0,$cMonth,$d,$cYear)) == 0) { echo "\n"; } $events = mysqli_query($connect, "SELECT * FROM `posts` WHERE SUBSTR(date,7,4)='$cYear' AND month='$cMonth' AND day='$d'"); $rows = mysqli_fetch_assoc($events); $post_id = $rows['id']; $post_title = $rows['title']; $evday = $rows['day']; if ($evday) { echo "\n"; if (date('w',mktime (0,0,0,$cMonth,$d,$cYear)) == 6) { echo ""; } } echo "
".$val."
\n"; } elseif ($d == $day && $cMonth == date('m')) { echo "\n"; } else { echo "\n"; } if ($d == $day && $cMonth == date('m') && $d <> $evday) { $d = str_pad($d,2,'0',STR_PAD_LEFT); echo "$d\n"; } elseif ($d == $day && $cMonth == date('m') && $d == $evday) { $d = str_pad($d,2,'0',STR_PAD_LEFT); echo "$d\n"; } elseif ($evday) { $d = str_pad($d,2,'0',STR_PAD_LEFT); echo "$d\n"; } else { $d = str_pad($d,2,'0',STR_PAD_LEFT); echo "$d\n"; } echo "
\n"; echo "\n"; ?>

P粉950128819
P粉950128819

membalas semua (1)
P粉561438407

Jika pertanyaan SQL adalah betul dan$eventsmengembalikan hasil yang sah, gunakan:

while($row = mysqli_fetch_assoc($events)) { # output events echo '
'; print_r($row); echo '
'; }

Menurut dokumentasiphp, fungsi mysqli_fetch_assoc mengambil satu baris data daripada set hasil dan mengembalikannya sebagai tatasusunan bersekutu. Setiap panggilan seterusnya ke fungsi ini akan mengembalikan baris seterusnya dalam set hasil (atau batal jika tiada lagi baris), jadi kita perlu menggunakan gelungwhile()while()untuk menggelung ke atas set hasil. (Walaupun ada akibatnya...buat begini).

Untuk menambah baik kod lagi, anda boleh menyemak dahulu sama ada terdapat sebarang hasil menggunakan fungsimysqli_num_rowsmysqli_num_rowsterbina dalam. Kami tidak perlu mengulangi keputusan jika tiada acara untuk tarikh kalendar tertentu, jadi kami boleh melangkaunya.

Kod anda mungkin kelihatan seperti:

$sql = "SELECT * FROM posts WHERE SUBSTR(date,7,4)='$cYear' AND month='$cMonth' AND day='$d' "; $results = mysqli_query($connect, $sql); if(mysqli_num_rows($results)) // only if there are results { while($row = mysqli_fetch_assoc($results)) { $post_id = $row['id']; $post_title = $row['title']; // ... # output echo '

'.$post_title.'

'; } }

NOTA- Saya telah menukar pembolehubah$events变量更改为$resultsanda kepada$results

hanya untuk tujuan amalan terbaik umum dan konsisten, tetapi secara teknikal ia tidak perlu.

JugaORDER BY- Pertimbangkan untuk menggunakan klausaORDER BYdalam SQL (Dokumentasi
) untuk mengisih acara mengikut kronologi dalam set hasil.Juga- Pertimbangkan untuk menggunakan Penyata Disediakan

untuk pertanyaan SQL anda, yang lebih selamat.
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!