Как я могу заполнить мой набор записей в моем JavaScript с помощью PHP - PullRequest
4 голосов
/ 31 марта 2012

Хорошо, поэтому, где я положил ZZZ, он должен повторить следующее значение в строке ...

НАСЕЛЕНИЕ ЦЕННОСТИ В ЭТОЙ ЧАСТИ JAVASCRIPT .....

categories: ['<?php echo $row_testresults['date']; ?>', 'ZZZ', 'ZZZ']

Я могу это сделать, сделай это так ... на другой странице ... но я пытаюсь заставить его работать с диаграммой JavaScript

НЕКОТОРЫЙ РАБОЧИЙ НЕ КОД JAVASCRIPT .........

<?php do { ?><?php echo $row_TestResults['date']; ?><?php } while ($row_TestResults =     mysql_fetch_assoc($TestResults)); ?>
</body>
</html>
<?php
mysql_free_result($TestResults);
?>

Ответы [ 4 ]

3 голосов
/ 31 марта 2012

Используйте json_encode() для преобразования объекта / массива / строки PHP в допустимый JavaScript.

0 голосов
/ 31 марта 2012

Мне нравится то, что я вижу выше, однако на самом деле это не так просто ... попробуйте абстрагироваться от двух вещей, которые вы пытаетесь сделать. Во-первых, от руки код примера того, как должен выглядеть HTML-код:

<script type="text/javascript">

// this is bad javascript, but relevant to his situation
series: [{
name: 'Tokyo',
data: [7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6]
}, {
name: 'New York',
data: [-0.2,0.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5]
}, {
name: 'Berlin',
data: [-0.9,0.6,3.5,8.4,13.5,17.0,18.6,17.9,14.3,9.0,3.9,1.0]
}, {
name: 'London',
data: [3.9,4.2,5.7,8.5,11.9,15.2,17.0,16.6,14.2,10.3,6.6,4.8]
}]
</script>

Я собираюсь предположить, что ваши данные находятся в двумерном массиве. Значение $ row_testresults имеет вид $test_results['London']=Array(3.9,4.2,5.7)

Следующее предположение: у вас есть куча данных, приведенных в порядок в этом $ row_testresults. Проверьте этот фрагмент:

<?
function multiRow ( $sql ) {
    if( $sql == "" ) return FALSE;
    //echo "<hr>\$sql=$sql
\n"; // \$row: $Q = mysql_query($sql); if( isData($Q) ) while( $row[]=mysql_fetch_assoc($Q) ) { ;//print_r( $row ); } if( $row == "" ) $rtn_stuff=FALSE; else for($i=0; $iprint_r( $row ): <? print_r( $row ); ?>
<? * / вернуть $ row; }?>

Если вы сделаете что-то вроде $row_testresults=multiRow($TestResults) или измените $ testresults для фактического запроса, который генерирует все эти данные ... тогда мой код ниже упрощает жизнь:

Теперь возьмите повторяющийся бит и поместите его в собственный цикл:

<script type="text/javascript">
series: 
<?php
$java_data=array();
foreach( $row_testresults as $city=>$arr ){
    $tmpstr = "{\nname: '$city',\n";
    $tmpstr.= "data: [".implode( ",", $arr )."]\n} ";
    $java_data[]=$tmpstr;
}
$java_output="[".implode(", ", $java_data)."]";
echo $java_output;
?>
</script>

Смешивать языки, как это, вероятно, плохо, но здорово, когда вы можете это сделать. Лично мне тяжело, даже когда jQuery и Ajax делают все это в java, поэтому, так как я очень удобен с php, я сделаю вышеописанное перед динамическим вызовом ajax.

Мне также важно использовать редактор с отличной подсветкой синтаксиса. В Windows я использую psPad, а в gnome - Geany. Еще до выхода KDE v4 я использовал Kate.

0 голосов
/ 31 марта 2012

Попробуйте это

<?php
functin getvalues() {

     while ($row_TestResults = mysql_fetch_assoc($TestResults)) {
        echo $TestResults[abc] .", "
     }

}

?>


<script type="text/javascript">
<?php
echo "var myCat=[". getvalues() ."]";

?>

</script>
0 голосов
/ 31 марта 2012

Вы просто хотите, чтобы дата из каждой строки была в массиве javascript?Вы довольно близки со своим кодом, но я мог бы сделать это так:

<?php
$categories = '';
while ($row_TestResults = mysql_fetch_assoc($TestResults)) {
    $categories .= (empty($categories) ? '' : "','") . $row_TestResults['date'];
}
<script>
var categories = ['<?= $categories; ?>'];
</script>
...