За последние 24 часа нас посетили 51652 программиста и 1760 роботов. Сейчас ищут 857 программистов ...

Не пойму, что не так?

Тема в разделе "PHP для новичков", создана пользователем Joker2705, 16 янв 2015.

  1. Joker2705

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

    С нами с:
    8 окт 2013
    Сообщения:
    37
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста, в чем проблема. есть вот такой код
    Код (Text):
    1.  
    2. .....
    3. $ndol=$udata[dol]+$unpc[nagdol];
    4. $nexp=$udata[exp]+$unpc[nagexp];
    5. $nzol=$udata[zol]+$unpc[nagzol];
    6. mysqli_query("UPDATE `users` SET `dol` = '$ndol', `zol`='$nzol', `exp`='$nexp' WHERE `login` = '$log'");
    7. .....
    Но после выполнения этого кода в ячейку "zol" результат записывается, а в "dol" и "exp" изменения не происходят, хотя так же должны как и в "zol". Вот и не пойму, в чем моя ошибка.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    для начала научиться включать вывод ошибок на экран
    Код (Text):
    1. error_reporting(E_ALL);
    2. ini_set('display_errors', 'on');
    3. ini_set('display_startup_errors', 'on');
    и потом еще показать какой итоговый запрос отправляется в субд
     
  3. Joker2705

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

    С нами с:
    8 окт 2013
    Сообщения:
    37
    Симпатии:
    0
    эмм... простите за тупость, но куда этот код вставлять и где смотреть итоговый запрос?
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    чем выше тем лучше.
     
  5. Joker2705

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

    С нами с:
    8 окт 2013
    Сообщения:
    37
    Симпатии:
    0
    вставил этот код, и мне пошли писать

    Эт что?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    эт рукожопый программист. то о чем я умолчал...
     
  7. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Всегда работайте на тестовой площадке с включенными
    чтобы потом не разгребать такие простыни.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    рассказываю. к ключу в массиве обращаются через строку $ar['key']. когда рукожопый программист пишет $ar[key] то пых сначала ищет константу key а потом если ее нет - делает строку 'key'. поэтому программа условно работает. просто программист который её пишет не знает что она не правильно работает - у него же вывод ошибок почему-то выключен. ведь он считает что всё прямыми руками написал. и если кто-то случайно сделает так define('key', 'huj'); то всё упадет потому что вместо каста константы кей в строку кей будет подстановка вместо константы кей её значения - ну там не сложно прочитать в общем-то.

    поэтому для начала нужно переписать весь код чтоб он при максимальном уровне (я написал как раз с максимальным) отладки не выдавал ошибок и предупреждений. код должен быть идеальным, всегда.
    а уже потом будем делать отладку некорректного алгоритма. если проблема конечно останется после исправления чистоты кода.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может просто ребёнок писал, опыта пока нет, никто не учил его. всего добился сам.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я должен поощрить то что ребёнок себе руки в жопу пересадил? молодец конечно но еще можно например (сюда можно подставить какой-нибудь критически крутой экшн вроде шагнуть с крыши 12этажного дома или гранату в руке взорвать но сообщение примет оборот призыва к совершению акта насильственных действий и/или суицида что преследуется законом поэтому я промолчу) - от этого он как бы не станет крутым молодцом. вот если бы он качественный код написал тогда ок. я бы в открытую признался что охренел узнать что сей код который по религиозным соображениям я признал шедевром - был написан ребенком.
    а пока не... лучше дрючить и воспитывать хороших программистов. пятница же.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну он же не ракету мастерит, чего ты так психуешь?
     
  12. Joker2705

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

    С нами с:
    8 окт 2013
    Сообщения:
    37
    Симпатии:
    0
    Сделал как вы просили, исправил ошибки, предупреждений не выдает, но все равно записывать не хочет. Все считает, если сделать вывод результата, то выводит правильно, но вот записывать не хочет, так же, только одно значение, а остальные остаются неизменными.
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    покажи строку данных и какой запрос выполняется
     
  14. Joker2705

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

    С нами с:
    8 окт 2013
    Сообщения:
    37
    Симпатии:
    0
    Все разобрался, ошибка и правда очень тупая. Дело в том, что в начале скрипта он у меня брал таблицу и читал из нее данные ($udata), потом выполнялся скрипт дальше, считал, записывал, потом опять считал, к самому первому результату прибавлял и опять записывал, затерая предыдущую запись. Короче что то, типа такого
    Поэтому и не было ожидаемых изменений.

    Добавлено спустя 2 минуты 6 секунд:
    А сделал вот так и все заработало
    Код (Text):
    1.  
    2. .....
    3. $udata=(mysqli_fetch_array(mysqli_query("SELECT * FROM `users` WHERE `login`='$log'")));
    4.  
    5. $ndol=$udata['dol']+$unpc['nagdol']+1;
    6. $nexp=$udata['exp']+$unpc['nagexp']+2;
    7. $nzol=$udata['zol']+$unpc['nagzol'];
    8. mysqli_query("UPDATE `users` SET `dol` = '$ndol', `zol`='$nzol', `exp`='$nexp' WHERE `login` = '$log'");
    9.  
    10. .....
    Добавлено спустя 45 секунд:
    Ну это как пример, на самом деле там сложнее, но смысл такой.
     
  15. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    увидеть бы твое лицо в это время :)