Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться в странной работе кода
Форумы портала PHP.SU » » Вопросы новичков » Помогите разобраться в странной работе кода

Страниц (1): [1]
 

1. anton1488 - 13 Ноября, 2014 - 17:03:21 - перейти к сообщению
Такая тема.

Есть база, в ней есть некий инструмент, для добавления наших оплат поставщикам. Таблица в MySQL вида
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `oplata_to` (
  2.   `oplata_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `zayvka_id` int(11) NOT NULL DEFAULT '0',
  4.   `opl_date` date DEFAULT NULL,
  5.   `summa` decimal(11,2) NOT NULL DEFAULT '0.00',
  6.   `summa_rur` decimal(11,2) DEFAULT NULL,
  7.   `money_type` char(3) DEFAULT NULL,
  8.   `kurs` float DEFAULT NULL,
  9.   `kurs_pr` float NOT NULL DEFAULT '0',
  10.   `commets` text,
  11.   `avtor_id` int(11) DEFAULT NULL,
  12.   `slot` int(11) DEFAULT NULL,
  13.   PRIMARY KEY (`oplata_id`),
  14.   KEY `opl_date` (`opl_date`),
  15.   KEY `zayvka_id` (`zayvka_id`),
  16.   KEY `avtor_id` (`avtor_id`)
  17. ) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3922 ;


Есть код, который записывает в эту таблицу сумму, автора, айди заявки по которой происходит оплата, порядковый номер оплаты в отдельно взятой заявке, создает айди самой оплаты. Выглядит примерно так:

PHP:
скопировать код в буфер обмена
  1. <TD align=middle><INPUT <?= $pay_edit_lock?> class=texts size=4 maxLength=10 value="<? $kbname="oplto_tour_kurs_base".$oplat_num; echo $$kbname; ?>" name=oplto_tour_kurs_base<?=$oplat_num?> onchange="kurs_recalc(z.oplto1_kurs<?=$oplat_num?>,z.oplto1_kurs_pr<?=$oplat_num?>,z.oplto_tour_kurs_base<?=$oplat_num?>);payment_to_rur_val(oplto1_tourist<?=$oplat_num?>, oplto1_kurs<?=$oplat_num?>,oplto1_sum<?=$oplat_num?>,oplto1_curr<?=$oplat_num?>)">
  2.                             +<INPUT <?= $pay_edit_lock?> class=texts maxLength=30 onchange="kurs_recalc(z.oplto1_kurs<?=$oplat_num?>,z.oplto1_kurs_pr<?=$oplat_num?>,z.oplto_tour_kurs_base<?=$oplat_num?>);payment_to_rur_val(oplto1_tourist<?=$oplat_num?>, oplto1_kurs<?=$oplat_num?>,oplto1_sum<?=$oplat_num?>,oplto1_curr<?=$oplat_num?>);" size=4 name=oplto1_kurs_pr<?=$oplat_num?> value="<?=$RowOP['kurs_pr']?>">% =
  3.                             <INPUT <?= $pay_edit_lock?> class=texts maxLength=30 onchange="kurs_recalc(z.oplto1_kurs<?=$oplat_num?>,z.oplto1_kurs_pr<?=$oplat_num?>,z.oplto_tour_kurs_base<?=$oplat_num?>);payment_to_rur_val(oplto1_tourist<?=$oplat_num?>, oplto1_kurs<?=$oplat_num?>,oplto1_sum<?=$oplat_num?>,oplto1_curr<?=$oplat_num?>)" size=4 name=oplto1_kurs<?=$oplat_num?> value="<?=$RowOP['kurs']?>">
  4.  
  5.                             </TD>
  6.                             <TD align=middle><INPUT <?= $pay_edit_lock?> class=texts maxLength=30
  7.                               onchange="payment_to_rur_val(oplto1_tourist<?=$oplat_num?>, oplto1_kurs<?=$oplat_num?>,oplto1_sum<?=$oplat_num?>,oplto1_curr<?=$oplat_num?>)"
  8.                               size=8 name=oplto1_tourist<?=$oplat_num?> value="<?=$RowOP['summa']?>"></TD>
  9.                             <TD align=middle<? $name="oplto1_sum".$oplat_num; if($oplata_not_filled[$name]!="") echo " bgcolor=\"Red\""; ?>><INPUT <?= $pay_edit_lock?> class=texts maxLength=30
  10.                               size=8 name=oplto1_sum<?=$oplat_num?> value="<?=$RowOP['summa_rur']?>" <?=!$show_link && !$pay_edit_lock?"id='oplto1_last_rur'":""?>></TD>
  11.                             </TD>
  12.                             <TD align="left" class="text"><INPUT <?= $pay_edit_lock?> class=texts maxLength=255
  13.                               size=70
  14.                               name=oplto1_info<?=$oplat_num?> value="<?=$RowOP['commets']?>">
  15.                             <INPUT <?= $pay_edit_lock?>  type=hidden value="<? if($RowOP['avtor_id']=="") echo $USER_ID ; else echo $RowOP['avtor_id']; ?>" name=oplto1_avtor_id<?=$oplat_num?>>
  16.                             <?
  17.                                           $r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal"]}.`users` where id='".$RowOP['avtor_id']."'");
  18.                                                                                   if($RowOP['avtor_id']=="")  $r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal"]}.`users` where id='".$USER_ID."'");
  19.                                           $RowOP_USER = @mysql_fetch_assoc($r_opl_user);
  20.                                           if($RowOP_USER['fio']!="") echo $mod_not_saved."Обр.: ".$RowOP_USER['fio'].$mod_not_saved2;
  21.                             ?>
  22.                             <INPUT <?= $pay_edit_lock?> type=hidden value="<?=$RowOP['slot']?>" name=oplto1_slot<?=$oplat_num?>>
  23.                             </TD>


Фишка в том, что все работает вроде, но! Первая оплата добавляется абсолютно всегда! Вторая на 99% тоже, по крайней мере я не помню, чтоб были косяки. а вот третья - уже проблемы. НО! Самое смешное, что иногда третья добавляется без проблем, а вот четвертая - не в какую. тупо не создается запись в базе. А сегодня вообще прикол - не добавляется тринадцатая строка! т.е. 12 были добавлены успешно, а вот 13 - нет.

В чем прикол - не могу понять.
2. esterio - 13 Ноября, 2014 - 17:07:54 - перейти к сообщению
уберите все @ по коду и включите вивод ошибок. многое узнаете нового наверно
3. anton1488 - 14 Ноября, 2014 - 12:29:58 - перейти к сообщению
ничего не произошло... все так и осталось.
4. LIME - 14 Ноября, 2014 - 20:13:07 - перейти к сообщению
я в шоке
этот код используется в бизнесе????
тут никто не разберется без литра самогона
по крайней мере желания без оного литра не появится
esterio пишет:
уберите все @ по коду и включите вивод ошибок
тут явно косяки по логике
и код такая каша что искать их не хочется
PHP:
скопировать код в буфер обмена
  1.  $r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal"]}.`users` where id='".$RowOP['avtor_id']."'");
  2.                                                                                   if($RowOP['avtor_id']=="")  $r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal"]}.`users` where id='".$USER_ID."'");
нормально
бррррр
а я еще думал что повидал говнокода
наивный
(Добавление)
LIME пишет:
и код такая каша что искать их не хочется
мимодумно всетки глянул))
тут нет причины ошибки
она гдето еще наверняка
но боже упаси тебя приводить бОльшие участки
тем более тут нет ни одного участка добавления
хотя косяк и в выборке может быть
в валуе инпутов
оооой....кошмар неподъемный
5. Viper - 14 Ноября, 2014 - 21:50:59 - перейти к сообщению
anton1488 пишет:
В чем прикол - не могу понять.
логирование запросов к базе + дебаг в php.
6. LIME - 14 Ноября, 2014 - 21:52:49 - перейти к сообщению
Viper Не понял
серьезно?
ты реально думаешь что это может исправить всю ситуацию?
вот только честно...думаешь?
7. Viper - 14 Ноября, 2014 - 21:57:21 - перейти к сообщению
LIME кому-то помогает Улыбка У меня просто от такого кода глаза поехали на второй строке... Не понял
8. LIME - 14 Ноября, 2014 - 22:00:55 - перейти к сообщению
Viper я чуть было не ослеп
досихпор зайчики в глазах
реально первый раз такое вижу
anton1488 пишет:
Первая оплата добавляется абсолютно всегда!
мне страшно Не понял Не понял Не понял
вдруг я кому так заплачу!!!

 

Powered by ExBB FM 1.0 RC1