2012-04-18 5 views
2

「真/偽」の値をブール値を返す文字列を取得していません。一般的に、私のPHPはすべて'allDay' => 'false'を設定します。私が時間を指定しなければ、それに時間が追加されていることに気がついたので。PHPは、私は完全なカレンダーを使用していると私はすべての日のイベントでいくつかのイベントがあり

私は真それらを指定しない限り、すべての値の偽すべてのデフォルトを設定します。私のPHPはフェッチ

は次のとおりです。

$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`, 
    `allDay` FROM calender WHERE length('column') > '0'"; 

$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); 

foreach ($result as $row){ 
    $return[]=array('id'=>$row['id'], 
       'title'=>$row['title'], 
       "allDay" =>$row['allDay'], 
       'start'=>$row['start'].' '.$row['time'], 
       'end'=>$row['end'], 
       'url'=>$row['url'], 
       'backgroundColor'=>$row['backgroundColor'], 
       'textColor'=>$row['textColor'], 
       'className' =>$row['className']); 
} 
$dbh = null; 

header('Content-type: application/json'); 
echo json_encode($return); 

とjQueryの機能は次のとおりです。私は値を追加する場所私は

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
    editable: false, 
    events: "json-events.php", 
    eventDrop: function(event, delta) { 
      alert(event.title + ' was moved ' + delta + ' days\n' + 
       '(You cannot update these fields!)'); 
     }, 
     loading: function(bool) { 
      if (bool) $('#loading').show(); 
      else $('#loading').hide(); 
     }, 
    }); 
}); 

を知りません。私は真/偽として 'allDay'を格納するmySQLを持っているが、それは文字列として返されます。だから私は実際にjsonがファイルをエンコードする前にそれを隠す方法を知っている。またはデータを参照した後にjQuery/javascriptを変更する必要があります。

+0

を?また、あなたは良い習慣ではなく、場所全体の一重引用符と二重引用符をミックスしています。 – elclanrs

+0

それは面白いです、私はそれを修正しようとしていたと実際に戻って最後のものを消したことはありません。 –

+0

真偽値を格納するために使用している列の種類は何ですか? – liquorvicar

答えて

2

MySQLのallDayフィールドはどのようなタイプですか? enum('true', 'false')の場合、それはおそらく問題です。それは文字列に変換されます。私は人々にこれをさせてもらったことがあります。なぜ私がブール値(またはint)が文字列であると思ったのか、私は永遠に理解できました。

ダブルは、データベースをチェックし、tinyint(1)それを作ると虚偽と真実のための1のために0を使用してみてください。 PHPのboolean trueとfalseは対応する整数にキャストされ、JavaScriptでは0/1を使用しても問題は発生しません。

+0

もし私がそれを行うならば、その文字列がそのまま残っているかどうか、true/falseが値を返すかどうかについてはJavaScriptを編集する必要がありますか? –

+0

正しく実行された場合は、trueまたはfalseとして評価するだけです。 PHPのjson_encodeの前にvar_dumpを実行して、配列のすべての型と値をリストアップしてください。したがって、allDayの型がわかっています。 – CWSpear

+0

のvar_dumpは、[ "終日"]違う=>の文字列(1) "1" –

0

これを試してみてください:

foreach ($result as $row){ 
    $return[]=array('id'=>$row['id'], 
       'title'=>$row['title'], 
       "allDay" =>$row['allDay'] == "true", 
       'start'=>$row['start'].' '.$row['time'], 
       'end'=>$row['end'], 
       'url'=>$row['url'], 
       'backgroundColor'=>$row['backgroundColor'], 
       'textColor'=>$row['textColor'], 
       'className' =>$row['className']); 
} 
$dbh = null; 
+0

これは実際に私に正しい値を与えましたが、まだそれを文字列として表示しています。 –

+0

'true'を' 1'に切り替えると思います –

0

あなたがallsoこの試みることができる:あなたは配列に二度 `allDay`を持っていないのはなぜ

$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`, IF(`allDay` = 'true',true,false) AS allDay FROM calender WHERE length('column') > '0'"; 
関連する問題