Comment afficher plusieurs événements par jour dans mon code de calendrier php
P粉950128819
P粉950128819 2023-09-06 10:03:16
0
1
517

Mon calendrier fonctionne correctement tel qu'écrit, mais si j'ajoute un autre événement le même jour, il n'affiche que le premier événement enregistré dans la base de données. Je dois pouvoir afficher plusieurs événements le même jour.

J'ai essayé d'utiliser les boucles for/next et while dans mon code pour extraire des informations de la base de données. Rien de tout cela ne fonctionne de la façon dont le code est écrit. Ce lien vous montrera le calendrier de travail tel qu'écrit : Grims World Blog Voici mon code :

'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

répondre à tous (1)
P粉561438407

Si la requête SQL est correcte et$eventsrenvoie des résultats valides, utilisez :

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

Selon ladocumentation php, la fonction mysqli_fetch_assoc récupère une ligne de données de l'ensemble de résultats et la renvoie sous forme de tableau associatif. Chaque appel ultérieur à cette fonction renverra la ligne suivante dans l'ensemble de résultats (ou null s'il n'y a plus de lignes), nous devons donc utiliser une bouclewhile()while()pour parcourir l'ensemble de résultats. (Bien qu'il y ait des conséquences... faire cela).

Pour améliorer davantage le code, vous pouvez d'abord vérifier s'il y a des résultats en utilisant la fonction intégréemysqli_num_rowsmysqli_num_rows. Nous n'avons pas besoin de parcourir les résultats s'il n'y a aucun événement pour une date calendaire donnée, nous pouvons donc l'ignorer.

Votre code pourrait ressembler à :

$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.'

'; } }

REMARQUE- J'ai modifié votre variable$events变量更改为$resultsen$results

juste à des fins de bonnes pratiques générales et de cohérence, mais techniquement, ce n'est pas nécessaire.

AussiORDER BY- Pensez à utiliser la clauseORDER BYdans SQL (Documentation
) pour trier les événements par ordre chronologique dans l'ensemble de résultats.Aussi- Pensez à utiliser des Prepared Statements

pour vos requêtes SQL, ce qui est plus sûr.
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!