2015-03-13 2 views
-2

У меня есть этот код (JS + PHP)Loop в JS с CanvasJS картировать

 { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
     { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }

Все строки равны, за исключением последнего, это не есть ""

мне нужен цикл этот код, но цикл не работает, я стараюсь, но не работают:

for(var j = 0; j <= 20; j++) 
 
    { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }, 
 
{ x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }

Есть идеи? Спасибо

+0

Таким образом, вы пытаетесь создать массив с форматом, который canvasjs может интерпретировать? Мне кажется, что вы пытаетесь навязать создание массива, который не работает таким образом. Что вы получаете с помощью этого кода? Я не эксперт Javascrit, но для меня ваш код ничего не делает. Вы должны подталкивать разные элементы к переменной, поэтому вам не нужно определять, нужна ли вам запятая или нет. Каков ваш источник данных? Файл JSON? Таблица SQL? – agustin

+0

Я пытаюсь повторить строку js, но это для цикла не работает. CanvasJS может интерпретировать эту строку. Источником массива $ invertir является база данных MySQL. Если я набираю все строки, работаю, но цикл не работает. Спасибо –

ответ

1

Как сказано в комментариях, попытка ручного создания массива с данными является плохим подходом. Поскольку вы используете MySQL, вы можете попробовать что-то вроде этого:

// Creamos una array vacía 

$myDataPoints = array(); 

// Usa la siguiente variable $conexion... 

$conexion = mysqli_connect("tuIP","tuUser","tuPassword","tuDB"); 

// o adapta la siguiente línea con la variable previamente creada por ti 

$rawData = mysqli_query($conexion, "SELECT * FROM tablaConDatos"); 

// Ejecutamos el Loop para cada línea de resultados de la consulta 

while($row = mysqli_fetch_array($rawData)) 
{ 

/* Calculamos la fecha. En tu ejemplo, parece que sólo quieres variar la hora 
sustrayendo 1 hora a cada número de línea. Este método sólo funciona si tu 
tabla de datos tiene menos de 25 líneas */ 

$fecha = date(DATE_ATOM, mktime($row - 1, 0, 0, 1, 1, 2012)); 

// Creamos el objeto... 

$point = array("x" => $fecha , "y" => $row['invertir']); 

// ... y lo mandamos al array 

array_push($myDataPoints, $point); 

echo 'var myDataPoints = '.json_encode($myDataPoints).';'; 

} 

Этот подход формирует массив JSON (myDataPoints), которые вы можете легко использовать в обычном canvasjs вызова:

var chart = new CanvasJS.Chart("chartContainer", { 
        data: [ 
         { 
          dataPoints: myDataPoints 
         } 
        ] 
       });