За последние 24 часа нас посетили 19324 программиста и 1607 роботов. Сейчас ищут 953 программиста ...

Проблема с массивом, вроде...

Тема в разделе "Прочие вопросы по PHP", создана пользователем Waynez, 15 июн 2009.

  1. Waynez

    Waynez Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    12
    Симпатии:
    0
    Значит есть класс....
    У этого класа есть функция инициализации и она активируется в скрипте дважды:
    Первый раз как изначальная инициализация, а второй раз чтобы обновить данные, которые класс получает из БД и которые были обновленны между первой и второй инициализацией.

    А дело такое - по непонятным причинам, во время второй инициализации данные не хотят обновляться.
    В БД данные обновлены, скрипт делает запрос и всёравно возвращает старые данные, ...Правда после рефреша уже всё нормально!!!

    И пока Z пытался разобраться в чём дело - раставлял в скрипте после запросов var_dump()'ы массивов, я заметил, что если после запроса написана функция вар_дампа, то всё работает замечательно, данные обновляют без рефреша итп, а если вар_дампы убрать то снова всё по старому.

    Поэтому, помогите пожалуйста советом, где искать ошибку и каким образом?
    Как может вывод вар дампа повлиять на работу всего скрипта?
    Я пробовал сбрасывать указатели в масивах - это не помогает...
     
  2. Ошибка в строке 42.
     
  3. Waynez

    Waynez Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    12
    Симпатии:
    0
    Весь код не выкладываю, ибо от этого толку нет...
    Вот тот самый запрос, который в скрипте повторяется дважды:
    Код (Text):
    1.     $query = 'SELECT * FROM tiles WHERE crdx="'.$crdx.'" AND crdy="'.$crdy.'";';
    2.         $mysql_query = mysql_query($query, MYSQL::$cnnn);
    3.         $array = mysql_fetch_assoc($mysql_query);
    4. echo '==================================================<br><br>';
    5. echo 'ARRAY ';
    6. echo var_export($array).'<br><br>';
    если закоментировать все echo то $array['var'] не будет обновлятся - т.е. при первом исполнении mysql_query $array['var'] будет равен данным из бд, потом, в этом же скрипте данные в бд обновятся И снова-во второй раз будет исполнен именно этот mysql_query, только $array['var'] не обновиться, а будет равен значению полученому при первом исполнении mysql_query. А если все echo раскоментировать то всё происзодит правильно, и после второго запроса mysql_query $array['var] будет равен новым значениям.
    Может теперь понятнее?!
     
  4. Вообще, у меня есть мысль, почему бы это могло бы быть, но она достаточно невероятна, что бы я сел ее проверять сам.

    Может, ты сможешь предоставить минимальный нерабочий код, строк в 10-15, который бы реально показывал проблему?
     
  5. Waynez

    Waynez Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    12
    Симпатии:
    0
    Код (Text):
    1. class Blah {
    2.    
    3.     static $var;
    4.    
    5.     static function Init(){
    6.         $query = 'SELECT var1 FROM base1';
    7.         $mysql_query = mysql_query($query);
    8.         $array = mysql_fetch_assoc($mysql_query);
    9.         self::$var = $array['var1'];
    10.     }
    11. }
    12.  
    13. Blah::Init();
    14. //Blah::$var = 'aaaaa';
    15.  
    16. $query = 'UPDATE base1 SET var1="bbbbb"';
    17. $mysql_query = mysql_query($query);
    18.  
    19. Blah::Init();
    20. //Blah::$var = 'aaaaa'; // а должен быть bbbbb. вторая Init() должна, сделав снова запрос к БД, задать уже новое значение $var1
     
  6. Waynez

    Waynez Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    12
    Симпатии:
    0
    разобрался.
    дело в том, что этот -
    Код (Text):
    1. $query = 'UPDATE base1 SET var1="bbbbb"';
    2. $mysql_query = mysql_query($query);
    код,
    в моём случае задавал var1=NULL, а фукция Init() пропускала пустые значения, тем самым не изменяла Blah::$var на новое значение, и Blah::$var был равен тому, что было задано при первом запуске Init().

    Скидывайте в форум для новичков :D
     
  7. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4

    Интересно, кто из гуру php смог бы подсказать это по первому посту)