|
|
|
|
<?
$sel = @mysql_select(true,"SELECT DISTINCT marka,model FROM yu_price ORDER BY model",false);
$cs=count($sel)-2;
?>
<script language="javascript">
function sel_mod(lotid)
{
arr = <?=$sel;?>;
ca=<?=$cs?>;
ret1='';
for(i=0;i<=ca;i++)
{
if (lotid==arr[i]['marka'])
ret1+='<option value="' + arr[i]['model'] + '">' + arr[i]['model'] + '</option>';
}
ret='<SELECT name="model"><option><Не имеет значения></opion>'+ ret1 + '</SELECT>';
document.getElementById('sel_mod').innerHTML=ret;
}
</script>
|
В переменной $sel лежит массив такого вида
Array (
[0] => Array ( [0] => Toyota [marka] => Toyota [1] => Allion [model] => Allion )
[1] => Array ( [0] => Mazda [marka] => Mazda [1] => Atenza Wagon [model] => Atenza Wagon )
[2] => Array ( [0] => Nissan [marka] => Nissan [1] => Avenir [model] => Avenir )
[3] => Array ( [0] => Nissan [marka] => Nissan [1] => Bluebird Sylphy [model] => Bluebird Sylphy )
[4] => Array ( [0] => Toyota [marka] => Toyota [1] => Caldina [model] => Caldina )
)
|
так вот этот массив почему то не передаётся в ява переменную
в чём причина? | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:00)
| | В PHP я не силен, но разве такая инструкция
не равнозначна
?
Возможно надо написать
arr = <?$sel;?>;
ca=<?$cs;?>;
|
| |
|
|
|
|
|
|
|
для: yuk
(30.05.2007 в 11:11)
| | с php всё верно
а вот в яве проблемы
для начала он выводит ошибку здесь
if (lotid==arr[i]['marka'])
|
Ошибка вида
"arr[...].marka" - есть NULL или не является обьектом | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:21)
| | но массив в php с таким ключом(параметрами) есть точно! проверял
тоесть проблема получается в передаче массива из php в javascript | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:21)
| | Нельзя явно передать массив из РНР в ява-скрипт. Сначала на РНР преобразуйте массив в строку, потом передайте эту строку ява-скрипту, а потом ява-скриптом снова сделайте массив из этой строки. | |
|
|
|
|
|
|
|
для: coloboc66
(30.05.2007 в 11:24)
| | примерно так?
function sel_mod(lotid)
{
arr='';
<?
for ($j=0;$j<=$cs;$j++)
{
?>
arr[<?=$j?>]['marka']='<?=$sel[$j]['marka']?>';
arr[<?=$j?>]['model']='<?=$sel[$j]['model']?>';
<?
}
?>
ca=<?=$cs?>;
ret1='';
for(i=0;i<=ca;i++)
{
if (lotid==arr[i]['marka'])
ret1+='<option value="' + arr[i]['model'] + '">' + arr[i]['model'] + '</option>';
}
ret='<SELECT name="model"><option><не имеет значения></opion>'+ ret1 + '</SELECT>';
document.getElementById('sel_mod').innerHTML=ret;
}
|
| |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:34)
| | если так то всё равно не работает
Ошибка
"arr.0" - есть NULL или не является обьектом | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:37)
| | http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=37494&page=4 | |
|
|
|
|
|
|
|
для: coloboc66
(30.05.2007 в 11:48)
| | там пример с одномерным массивом а как зделать с двумерным? | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 12:13)
| | Читайте посты CNT | |
|
|
|
|
|
|
|
для: m@rchello
(30.05.2007 в 11:34)
| | Предложу воспользоваться функцией преобразования любых переменных php в правильный объект JavaScript (заимствована из библиотеки Котерова и немного доработана).
Функция buildJSON() возвращает корректный JavaScript код для любой переменной php, который после выполнения eval'ом создает обычный объект, с которым можно делать все, что угодно.
Попробуйте следующий пример:
<?php
$output = array(array('item1', 'item2', 'item3'),
'key1'=>'value1',
'key2'=>array('subkey'=>'subvalue',array('item1', 'item2', 'item3')));
function buildJSON($a=false) {
if(is_null($a)) return 'null';
if($a===false) return 'false';
if($a===true) return 'true';
if(is_scalar($a)) {
if(is_float($a)) $a = str_replace(",", ".", strval($a));
static $jsonReplaces = array(
array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'),
); return '"'.str_replace($jsonReplaces[0], $jsonReplaces[1], $a).'"'; }
$isList = true;
for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
if(key($a)!==$i) {
$isList = false;
break; } }
$result = array();
if($isList) {
foreach($a as $v) $result[] = buildJSON($v);
return '[ '.join(', ', $result).' ]';
} else {
foreach($a as $k=>$v) $result[] = buildJSON($k).': '.buildJSON($v);
return '{ '.join(', ', $result).' }'; }
}
?>
<script type="text/javascript">
eval('var output=<?=buildJSON($output)?>');
alert(output[0]);
alert(output.key1);
alert(output.key2.subkey);
alert(output.key2[0][2]);
</script>
|
т.е. в итоге мы имеем JS-хеш output полностью идентичный php-массиву $output. | |
|
|
|