FullCalendar动态赋予细胞背景颜色



我的SQL表中有一个fuvar_status字段。现在,全卡伦多细胞具有静态颜色。

我想要的是:如果fuvar_status为0,背景为#ff0000,或者fuvar_status为1,则BG将是另一种颜色。

如何在javascript文件中写下此?

我的PHP,从SQL获取记录:

<?php
include_once("connect.php");
$sql = 
"
    SELECT 
        fuvar.fuvar_id,
        fuvar.fuvar_date,
        fuvar.fuvar_status,
        fuvar.fuvar_kerulet,
        gyarto.gyarto_nev,
        Varosok.VarosNev
    FROM fuvar
    LEFT JOIN gyarto ON fuvar.fuvar_honnan = gyarto.gyarto_id
    LEFT JOIN Varosok ON fuvar.fuvar_hova = Varosok.VarosID
    LIMIT 50
";
// WHERE status != Lezárt fuvar 
$get = mysqli_query($kapcs, $sql) or die("SQL ERROR 1 - " . mysqli_error($kapcs));
if(mysqli_num_rows($get) > 0 )
{
    $VarosNev = array();
    $gyarto_nev = array();
    $fuvar_date = array();
    $fuvar_id = array();
    while( $e = mysqli_fetch_array($get))
    {
        if($e['fuvar_kerulet'] == "0" ) { $VarosNev[] = $e['VarosNev']; }
        else { $VarosNev[] = $e['VarosNev'] .' '. $e['fuvar_kerulet']; }
        $gyarto_nev[] = $e['gyarto_nev'];
        $fuvar_date[] = $e['fuvar_date'];
        $fuvar_id[] = $e['fuvar_id'];
    }
    $res = array
    (
        'VarosNev' => $VarosNev,
        'gyarto_nev' => $gyarto_nev, 
        'fuvar_date' => $fuvar_date, 
        'fuvar_id' => $fuvar_id,
    );
    echo json_encode($res);
}
?>

javaScript,生成事件:

for (i = 0; i < hossz; i++) 
            {
                if (eventArray.fuvar_id[i] != '') 
                {
                    valami.push({
                        title: eventArray.gyarto_nev[i] +'n'+eventArray.VarosNev[i],
                        backgroundColor: '#03674e',
                        start: eventArray.fuvar_date[i],
                        url: '/fuvar-szerkesztes/' + eventArray.fuvar_id[i]
                    });
                } 
                else 
                {
                    valami.push({
                        title: eventArray.gyarto_nev[i] +'n'+eventArray.VarosNev[i],
                        backgroundColor: '#03674e',
                        start: eventArray.fuvar_date[i],
                    });
                }
            }

似乎没有特定的理由在PHP中进行一半的处理,而在JavaScript中进行了一半。您可以使PHP与FullCalendar兼容。您还使用PHP中的冗余平行数组的奇异排列,然后依靠索引值以匹配值。也许您不知道PHP对关联阵列的支持?您可以使用一个数组直接创建实际事件:

$get = mysqli_query($kapcs, $sql) or die("SQL ERROR 1 - " . mysqli_error($kapcs));
if(mysqli_num_rows($get) > 0 )
{
  $events = array();
  while( $e = mysqli_fetch_array($get))
  {
    $VarosNev = ($e['fuvar_kerulet'] == "0" ? $e['VarosNev'] :  $e['fuvar_kerulet']);
    $evt = array(
      "title" => $e['gyarto_nev']."n".$VarosNev,
      "backgroundColor" => ($e["fuvar_status"] == 0 ? "#ff0000" : "#03674e"),
      "start": $e["fuvar_date"]
    );
    if ($e['fuvar_id'] != "") { $evt["url"] = "/fuvar-szerkesztes/".$e["fuvar_id"]; }
    $events[] = $evt;
  }
  echo json_encode($events);
}

那么,您根本不需要JavaScript中的for循环 - 您可以直接从服务器将JSON发送到FullCalendar。

n.b。显然,没有您的数据,我无法完全测试此问题,因此对任何小错误表示歉意 - 如果您无法修复它们,请指出它们,如有必要,我将修改答案。

相关内容

  • 没有找到相关文章

最新更新