Kohana баг с массивом на хостинге, на локалке все работает, а на хостинге баг

phpшник

Новичок
Приветствую ребята! у меня непонятная проблема.

вот код.

PHP:
if($change)
      {
         
        $fdata =  DB::select()->from($post['tname'])
                              ->where('idpath','=',$post['pid'])
                              ->where('id','=', $post['id'])->execute()->as_array();
          $result['fid'] = $post['id'];
          $result['fsort'] = $fdata[0]['sort'];
            // throw new Kohana_Exception(print_r($result));
          foreach($result as  $key => $field)
          {
              if(isset($field['fname']))
                  $field['val'] = $fdata[0][$field['fname']]; //тут ошибка
                     
                 
              if(isset($field['fname']) and $field['ftype'] === 'img' and (!empty($field['val'])))   
                {         
                      $imarr =  explode('/',$field['val']);
                      $field['nval']  = $imarr [2].'.jpg';
                }               
                 
              $result[$key] = $field;
          }
     
      }
Скрипт работает с двумя массивами. Данные в $result из БД, в $fdata понятно что тоже.


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

На локалке все работает, а на vps-е ошибка

Спасибо за внимание и заранее.

вот ссылка ошбки https://cloud.mail.ru/public/96682bb92047/Screenshot003.jpg
 

Фанат

oncle terrible
Команда форума
Так эта...
Ты просишь нас сказать тебе, есть ли некий ключ в данных, которые есть у тебя, но нет (и по определению не может быть) у нас?
Может быть ты сам поднапряжёшься всё-таки и попробуешь найти свой ключ в массиве сам?

Подсказка: throw new Kohana_Exception(print_r($result)); выведет 1. print_r надо вызывать с дополнительным параметром.
 

phpшник

Новичок
Так эта...
Ты просишь нас сказать тебе, есть ли некий ключ в данных, которые есть у тебя, но нет (и по определению не может быть) у нас?
Может быть ты сам поднапряжёшься всё-таки и попробуешь найти свой ключ в массиве сам?

Подсказка: throw new Kohana_Exception(print_r($result)); выведет 1. print_r надо вызывать с дополнительным параметром.
Так я ж, все выводил по 20 раз, не там такого ключа, и его там быть не должно,
 

phpшник

Новичок
Так эта...
Ты просишь нас сказать тебе, есть ли некий ключ в данных, которые есть у тебя, но нет (и по определению не может быть) у нас?
Может быть ты сам поднапряжёшься всё-таки и попробуешь найти свой ключ в массиве сам?

Подсказка: throw new Kohana_Exception(print_r($result)); выведет 1. print_r надо вызывать с дополнительным параметром.
Кохана говорит что есть, а в базах и в выводе его тоже нет , на локалке все работает а на хостинг залью, все проверяю, и все равно такая ошибка
 

Фанат

oncle terrible
Команда форума
ну если не в той - то взять и проверить - не?
тупо выведя реальное и ожидаемое значения рядом и посмотреть глазками
 

phpшник

Новичок
фразы


меня несколько озадачили...

ну если не в той - то взять и проверить - не?
тупо выведя реальное и ожидаемое значения рядом и посмотреть глазками
$result =
Код:
 [0] => Array
        (
            [name] => 0B0
            [fname] => date
            [ftype] => date
            [fparams] =>
        )

    [1] => Array
        (
            [name] => $>B>
            [fname] => foto
            [ftype] => img
            [fparams] =>
        )

    [2] => Array
        (
            [name] => 03>;>2>:
            [fname] => title
            [ftype] => text
            [fparams] =>
        )

    [3] => Array
        (
            [name] => !>1KB8O
            [fname] => text
            [ftype] => textarea
            [fparams] =>
        )
$fdata =
Код:
[0] => Array
        (
            [id] => 37
            [idpath] => 99
            [visible] => 1
            [sort] => 0
            [foto] => /99/53aaac3e5dc81/
            [date] => 2014-06-04
            [title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K
            [text] =>
B@>5==K5 181;8>B5:8 PHP 4;O >1@01>B:8 2;>65==KE <=>65AB2 2 MySQL. "5 87 20A, :>B>@K5 2 =0AB>OI55 2@5<O 8A?>;L7C5BAO <>45;L A<56=>AB8 A?8A>: 8 E>B5; 1K, GB>1K M:A?5@8<5=B8@>20BL A <>45;LN 2;>65==KE =01>@ 1C45B =09B8 ?@8<5@ :>40 4;O ?@5>1@07>20=8O <564C =8<8 2 %@0=5=85 85@0@E8G5A:8E 40==KE 2 1075 40==KE
        )


вот
все как и должно быть
 
Последнее редактирование:

Здыхлик

Kohaner
Команда форума
То есть в $result уже лежит какой-то массив под ключом 0, и позже к нему добавляются еще значения по ключам fid и fsort, так? Это ожидаемое поведение, или все-таки должно быть что-то вроде $result[0]['fid'] = $post['id']; ?

PS. на локале тоже будут ошибки выдаваться, если включить отображение ворнингов и нотисов.
 

phpшник

Новичок
То есть в $result уже лежит какой-то массив под ключом 0, и позже к нему добавляются еще значения по ключам fid и fsort, так? Это ожидаемое поведение, или все-таки должно быть что-то вроде $result[0]['fid'] = $post['id']; ?

PS. на локале тоже будут ошибки выдаваться, если включить отображение ворнингов и нотисов.
нет. это массив с дб, то есть там уже существует таблица с полями
Код:
            [idpath] => 99
            [visible] => 1
            [sort] => 0
            [foto] => /99/53aaac3e5dc81/
            [date] => 2014-06-04
            [title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K
            [text] =>
они статичные ни какой динамики
 

phpшник

Новичок
PS. на локале тоже будут ошибки выдаваться, если включить отображение ворнингов и нотисов.[/quote]

ща проверю, хотя наврятли, массивы же вот на лицо , а индекса такого нет
 

phpшник

Новичок
PS. на локале тоже будут ошибки выдаваться, если включить отображение ворнингов и нотисов.[/quote]

ini_set('error_reporting', E_ALL);
ini_set('display_errors',1);
error_reporting(E_ALL);

на локалке все работает как часики,
 

peon

Lok'tar ogar
$result =
Код:
 [0] => Array
        (
            [name] => 0B0
            [fname] => date
            [ftype] => date
            [fparams] =>
        )

    [1] => Array
        (
            [name] => $>B>
            [fname] => foto
            [ftype] => img
            [fparams] =>
        )

    [2] => Array
        (
            [name] => 03>;>2>:
            [fname] => title
            [ftype] => text
            [fparams] =>
        )

    [3] => Array
        (
            [name] => !>1KB8O
            [fname] => text
            [ftype] => textarea
            [fparams] =>
        )
$fdata =
Код:
[0] => Array
        (
            [id] => 37
            [idpath] => 99
            [visible] => 1
            [sort] => 0
            [foto] => /99/53aaac3e5dc81/
            [date] => 2014-06-04
            [title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K
            [text] =>
B@>5==K5 181;8>B5:8 PHP 4;O >1@01>B:8 2;>65==KE <=>65AB2 2 MySQL. "5 87 20A, :>B>@K5 2 =0AB>OI55 2@5<O 8A?>;L7C5BAO <>45;L A<56=>AB8 A?8A>: 8 E>B5; 1K, GB>1K M:A?5@8<5=B8@>20BL A <>45;LN 2;>65==KE =01>@ 1C45B =09B8 ?@8<5@ :>40 4;O ?@5>1@07>20=8O <564C =8<8 2 %@0=5=85 85@0@E8G5A:8E 40==KE 2 1075 40==KE
        )
вот
все как и должно быть
Это дамп с локалки или сервера?
[title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K --- Это корректные данные?
 

Активист

Активист
Команда форума
У вас в чем проблема? Вы пишите про "В этих массивах не такого ключа", так в ключах проблема или в текстовых данных?
 

Здыхлик

Kohaner
Команда форума
нет. это массив с дб, то есть там уже существует таблица с полями
Код:
            [idpath] => 99
            [visible] => 1
            [sort] => 0
            [foto] => /99/53aaac3e5dc81/
            [date] => 2014-06-04
            [title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K
            [text] =>
они статичные ни какой динамики
Ох. На момент начала работы приведенного в топике кода переменная $result является массивом с элементами, соответствующими полям таблицы.

Далее смотрим на код:

PHP:
$result['fid'] = $post['id'];
$result['fsort'] = $fdata[0]['sort'];
и понимаем, что теперь в $result будет что-то вроде:

PHP:
array(
   0 => array(
        'idpath'  => 99,
        'visible'  => 1,
       ...
  ),
  ...
  'fid' => 99,
  'fsort' => 0,
)
Не говорю, что проблема в этом, но как минимум далее при foreach($result as $key => $field) должны быть непредвиденные косяки.

PS. А чтобы не было криков "ПОМОГИТЕ" и "ДА ТУТ ВСЕ ЛОХИ, НИЧЕГО НЕ ЗНАЮТ" - ставьте себе xdebug и учитесь самостоятельно отлаживать свой код.
 

phpшник

Новичок
Ох. На момент начала работы приведенного в топике кода переменная $result является массивом с элементами, соответствующими полям таблицы.

Далее смотрим на код:

PHP:
$result['fid'] = $post['id'];
$result['fsort'] = $fdata[0]['sort'];
и понимаем, что теперь в $result будет что-то вроде:

PHP:
array(
   0 => array(
        'idpath'  => 99,
        'visible'  => 1,
       ...
  ),
  ...
  'fid' => 99,
  'fsort' => 0,
)
Не говорю, что проблема в этом, но как минимум далее при foreach($result as $key => $field) должны быть непредвиденные косяки.

PS. А чтобы не было криков "ПОМОГИТЕ" и "ДА ТУТ ВСЕ ЛОХИ, НИЧЕГО НЕ ЗНАЮТ" - ставьте себе xdebug и учитесь самостоятельно отлаживать свой код.

тогда подскажите как мне быть? говорите?
в каком виде дебаг предоставить?
 

phpшник

Новичок
У вас в чем проблема? Вы пишите про "В этих массивах не такого ключа", так в ключах проблема или в текстовых данных?
проблема в том что,

PHP:
судя по скрипту, я имею два массива

$fdata и $result.

показаный выше

[php]
$fdata =  DB::select()->from($post['tname'])
                              ->where('idpath','=',$post['pid'])
                              ->where('id','=', $post['id'])->execute()->as_array();
          $result['fid'] = $post['id'];
          $result['fsort'] = $fdata[0]['sort'];
            // throw new Kohana_Exception(print_r($result));
          foreach($result as  $key => $field)
          {
              if(isset($field['fname']))
                  $field['val'] = $fdata[0][$field['fname']]; //тут ошибка

                    // если я возьму с  $fdata[0][$field['fname']]
                  // то судя по скрипту я получу
                 
            // [foto] => /99/53aaac3e5dc81/
            // [date] => 2014-06-04
            // [title] => "C@=8@ A@548 ;N18B5;59 3>@>40 <>A:2K
            // [text] =>
// B@>5==K5 181;8>B5:8 PHP 4;O >
// 1@01>B:8 2;>65==KE <=>65AB2 2 MySQL.
// "5 87 20A, :>B>@K5 2 =0AB>OI55 2@5<O 8A?>;L7C5BAO
// <>45;L A<56=>AB8 A?8A>: 8 E>B5; 1K, GB>1K M:A?5@8<5=B8@>20BL A
// <>45;LN 2;>65==KE =01>@ 1C45B =09B8 ?@8<5@ :>40 4;O ?@5>1@07>20=8O
// <564C =8<8 2 %@0=5=85 85@0@E8G5A:8E 40==KE 2 1075 40==KE
               
                // [foto]
            // [date]
            // [title]
            // [text]
           
            // $field['fname'] это из result
           
                // [fname] => foto
              // [fname] => date
              // [fname] => title
              // [fname] => text
         
          //тут никаких t нет

 
         
       

   
         
     
     
               
              if(isset($field['fname']) and $field['ftype'] === 'img' and (!empty($field['val']))) 
                {       
                      $imarr =  explode('/',$field['val']);
                      $field['nval']  = $imarr [2].'.jpg';
                }             
               
              $result[$key] = $field;
          }
   
      }
[/PHP]
 
Сверху