Ошибка в пхп

12
Г
На сайте с 16.06.2008
Offline
60
1051

Подскажите, пож-та, кто понимает в коде:

При сохранении страницы в непонятной цмс выдает ошибку

Fatal error: [] operator not supported for strings in /home/tkfavor4/public_html/engine/admin/static.php on line 205

Код фрагмента этого файла:

	

foreach ( $rows_page as $page ) {

$id_static [] = $page ['id'];
$name_en [] = $page ['name_en'];
$name [] = $page ['name'];
$posi_static [] = $page ['posi'];


205-я строка $name_en................

Далее, если удалить [] в этой строке выдает ошибку в следующей строке.

Как можно это вылечить?

C
На сайте с 04.02.2005
Offline
291
#1

видимо

$name_en []

$name []

уже до этого использовались как строковые переменные

n0name
На сайте с 22.12.2006
Offline
54
#2

$name_en и $name являются строками, а туда пытаются добавить элемент.

Можно конечно перед foreach добавить $name_en = array(); . Ошибка изчезнет, но проблема все равно останется. Надо перед этим код смотреть.

Сервис сравнения цена на VPS (http://vpska.com/)
Г
На сайте с 16.06.2008
Offline
60
#3

Если есть желание, гляньте пож-та код страницы на предмет лечения этой болезни, файл во вложении, заранее спасиб

zip static1.zip
[Удален]
#4

Гений, в вашем архивчике нужная строка несколько сместилась ниже.

При беглом осмотре, ранее по коду данные переменные не использовались. И выполняются они в дефолтном условии, судя всего при добавлении.

В общем, попробуйте, как выше говорилось, полечить, добавив перед foreach

$name_en [] = array();

$name [] = array();

Вот в этом блоке:


default :

if (isset ( $_GET ['sub'] )) {

$rows_page = $DB->select ( "SELECT * FROM static WHERE id_group = ? ORDER BY posi", $_GET ['sub'] );
$rows_group = $DB->selectRow ( "SELECT name_en FROM static_group WHERE id = ?", $_GET ['sub'] );

foreach ( $rows_page as $page ) {

$id_static [] = $page ['id'];
$name_en [] = $page ['name_en'];
$name [] = $page ['name'];
$posi_static [] = $page ['posi'];

}

И эти строки так же добавить перед вторым foreach в блоке:


} else {

$rows_group = $DB->select ( "SELECT * FROM static_group ORDER BY posi" );
$rows_page = $DB->select ( "SELECT * FROM static WHERE id_group = ? ORDER BY posi", 0 );

foreach ( $rows_group as $group ) {

$id_staticgroup [] = $group ['id'];
$posi_group [] = $group ['posi'];
$name_staticgroup [] = $group ['name'];
$name_en_staticgroup [] = $group ['name_en'];

}

foreach ( $rows_page as $page ) {

$id_static [] = $page ['id'];
$name_en [] = $page ['name_en'];
$name [] = $page ['name'];
$posi_static [] = $page ['posi'];

}
Dreammaker
На сайте с 20.04.2006
Offline
569
#5

Гений, а если код "по-людски" писать без дурацких пробелов перед [], что говорит?

[Удален]
#6

Dreammaker, а там у них по всему коду пробелы в массивах )) непривычно

Dreammaker
На сайте с 20.04.2006
Offline
569
#7

FireVal, не совсем понятно как оно работает, попробовал тестовый скриптик:


<?php
$id_static [] = 1;

var_dump($id_static []);

?>

ругнулось на

Fatal error: Cannot use [] for reading in /home/user1/data/www/mysite.com/test.php on line 4

update: Хотя нет, здесь немного на другой нюанс ругается.

S
На сайте с 28.10.2005
Offline
319
#8

В строке 52 и 302 нафига "<?php" и "?>"?

L
На сайте с 07.12.2007
Offline
351
#9
semenov:
В строке 52 и 302 нафига "<?php" и "?>"?

Зачот! Похоже "левый" модуль тупо вставлен в середину кода.

Отступы тоже сбиты.

Г
На сайте с 16.06.2008
Offline
60
#10

FireVal,попробовал не понимает он этого...

Fatal error: [] operator not supported for strings in /home/tkfavor4/public_html/engine/admin/static.php on line 201

ссылаясь на строки $name_en [] = array(); $name [] = array();

и в админке имена страничек вместо имя называться начинают Array (не все)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий