2009-10-20 11 views
7

से ग्राफ मैंने अच्छे ग्राफ को चित्रित करने के लिए jquery के लिए फ़्लोट खोज लिया है। लेकिन मैं उस डेटा को पार्स नहीं कर सकता जिसे मैं MYSQL से प्रस्तुत करना चाहता हूं। यह मुझे पागल गाड़ी चला रहा है क्योंकि मैं इस त्रुटि मिलती है:MYSQL से jquery FLOT

<?php 
include './includes/config.php'; 
include './includes/opendb.php'; 

$ID=$_GET["ID"]; 
$data=$_GET["data"]; 

$query_set = "SET @cnt = -1"; 
$query = "SELECT @cnt +1, {$data} FROM table_inf where ID = {$ID};"; 

$result = mysql_query("{$query_set}"); 
if (!$result) { 
die("Query to show fields from table failed"); 
} 

$result = mysql_query("{$query_select}"); 
if (!$result) { 
die("Query to show fields from table failed"); 
} 

$arr = array(); 
while($obj = mysql_fetch_object($result)) 
{ 
    $arr[] = $obj; 
} 

//NOW OUTPUT THE DATA: 
print json_encode($arr); 

mysql_free_result($result); 
include './includes/closedb.php'; 
?> 

जावास्क्रिप्ट हिस्सा:

uncaught exception: Invalid dimensions for plot, width = 0, height = 0 

वहाँ flot इसके अलावा में MYSQL डेटा डाल करने के लिए किसी भी तरह से

php हिस्सा ?: है

<script type="text/javascript"> 

function get_data() { 

var options = { 
lines: {show: true}, 
points: {show: true}, 
yaxis: { min: 0 }, 
}; 

$.ajax({ url: "return_values.php?ID=1&data=MAG", 
dataType: "json", 
success: function(result) 
{ 
plot = $.plot($("#placeholder"), result, options); 
} 
}); 
}; 
</script> 

मैं बिना किसी सफलता के गुगल रहा हूं .. बहुत सरल लगता है, लेकिन भूखंड केवल डाटा ... या कुछ और ...

php फ़ाइल के उत्पादन के रूप में (उदाहरण के लिए दो प्रविष्टियों के लिए) इस प्रकार है समझ में नहीं होगा:

[{"@cnt := @cnt + 1":"0","MAG":"6.87"},{"@cnt := @cnt + 1":"1","MAG":"11.44"}] 

जहां @ सीएनटी प्रत्येक पंक्ति (0,1,2,3 ...) के एक्स अक्ष वृद्धि के लिए एक काउंटर है और एमएजी वाई अक्ष पर दिखाने के लिए डेटा है।

jQuery मैं उपयोग कर रहा हूँ है:

<script src="./javascripting/jquery-1.3.2.js" type="text/javascript"></script> 
<script src="./javascripting/jquery.tabs.pack.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript" src="./javascripting/jquery.flot.js"></script> 

जहां flot संस्करण 0.5 और ब्राउज़र फ़ायरफ़ॉक्स है।

+0

आप अपनी PHP स्क्रिप्ट के कुछ आउटपुट पोस्ट करना चाहते हैं ताकि लोग देख सकें कि JSON-encoded डेटा कैसा दिखता है। –

+0

हाँ आप सही हैं, बस इसे संपादित करें। धन्यवाद –

+0

आप जो jQuery प्लगइन का उपयोग कर रहे हैं उसे जोड़ना चाहेंगे। फ्लोट प्लगइन हो सकता है, लेकिन वास्तव में अकेले आपके कोड से नहीं बता सकता है। – googletorp

उत्तर

9

मुझे अनुमान लगाएं: आप एक छिपे हुए टैब में प्रतिपादन कर रहे हैं। मुझे अभी तक इसके लिए फिक्स नहीं मिला है, लेकिन ऐसा लगता है कि div छुपा हुआ है (उदा।प्रदर्शन: कोई नहीं) फ्लोट तोड़ता है क्योंकि यह प्लेसहोल्डर div के आयामों को निर्धारित नहीं कर सकता है। डिफ़ॉल्ट कार्यों द्वारा दिखाए गए टैब में प्रस्तुत करना।

मैं एक ही समस्या पर काम कर रहा हूं। मैं अपने टैब को दूसरे टैब पर चाहता हूं, जिसमें पहले टैब के साथ कुछ अन्य डेटा हो। .plot को

<script type="text/javascript"> 
    $(function() { 
     $("#tabs").tabs(); 
     $("#tabs").bind('tabsshow', function(event, ui) { 
      if (ui.index == 1) { // second tab 
       show_graph(); 
      } 
     }); 
    }); 

और फिर वास्तविक कॉल() show_graph() फ़ंक्शन के अंदर डाल दिया है: यहाँ मेरी समाधान है।

1

बस जांच रहा है ... आपने प्लेसहोल्डर div शामिल किया है, है ना?

<div id="placeholder" style="width:600px;height:300px;"></div> 
+0

हाँ मैं जिस div का उपयोग कर रहा हूं वह है:

0

आपको फ्लोट प्रलेखन को और अधिक पढ़ने की आवश्यकता है, फ़्लोट की अपेक्षा एक विशिष्ट प्रारूप में श्रृंखला डेटा है। कम से कम आप

[{label: 'Item 1', data: [1,2]},{label: 'Item 2', data: [2,4]}] 

यहाँ होना चाहिए एपीआई है: Flot API, पहला आइटम डाटा स्वरूप कहते हैं, सिर्फ उत्पादन उन मानकों को पूरा करने के लिए बदल सकते हैं और आप ठीक होना चाहिए।

-1

हाँ मैं प्रलेखन के साथ काम किया गया है:।,

[[x 1: कर सकते हैं या तो कच्चे डेटा या गुण के साथ एक वस्तु हो

"एक श्रृंखला कच्चे डेटा स्वरूप अंक की एक सरणी है y1], [x2, y2], ...] "

और इस उदाहरण में:

<script id="source" language="javascript" type="text/javascript"> 
$(function() { 

    var d1 = []; 
    for (var i = 0; i < 14; i += 0.5) 
    d1.push([i, Math.sin(i)]); 

    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]]; 

    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]]; 

    $.plot($("#placeholder"), [ d1, d2, d3 ]); 
}); 
</script> 

लेबल का उपयोग करने की आवश्यकता नहीं है:" लेबल एल के लिए प्रयोग किया जाता है उदाहरण के लिए, यदि आप एक निर्दिष्ट नहीं करते हैं, तो श्रृंखला पौराणिक कथाओं में दिखाई नहीं देगी। "

वैसे भी, JSON इनकोडिंग डेटा तो यह एक लेबल की तरह होना चाहिए MYSQL वक्तव्य के क्षेत्र का नाम शामिल ...

[{"@cnt := @cnt + 1":"0","MAG":"6.87"},{"@cnt := @cnt + 1":"1","MAG":"11.44"}] 
-3

परिवर्तन 'प्लेसहोल्डर के अलावा कुछ करने के लिए अपने प्लेसहोल्डर div के नाम '?

3

मुझे एक ही समस्या थी। समाधान के लिए धन्यवाद edebill। शायद यह नया है, लेकिन jQuery यूआई टैब प्रलेखन साइट अब इस समस्या का उल्लेख है और बदलते सीएसएस स्थिति के माध्यम से एक बहुत ही सरल समाधान है: http://docs.jquery.com/UI/Tabs

बजाय छुपा आप केवल स्क्रीन बंद पैनल के लिए कदम:

.ui-tabs .ui-tabs-hide { 
    position: absolute; 
    left: -10000px; 
} 
+0

अच्छा, धन्यवाद! आप शायद यह शामिल करना चाहें कि यदि आप jquery css को सीधे संपादित नहीं कर रहे हैं तो आपको डिस्प्ले भी जोड़ना चाहिए: इनलाइन! महत्वपूर्ण; या यह काम नहीं करेगा – Cory

संबंधित मुद्दे