Такая тема.
Есть база, в ней есть некий инструмент, для добавления наших оплат поставщикам. Таблица в MySQL вида
CODE (
SQL):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `oplata_to` (
`oplata_id` int(11) NOT NULL AUTO_INCREMENT,
`zayvka_id` int(11) NOT NULL DEFAULT '0',
`opl_date` date DEFAULT NULL,
`summa` decimal(11,2) NOT NULL DEFAULT '0.00',
`summa_rur` decimal(11,2) DEFAULT NULL,
`money_type` char(3) DEFAULT NULL,
`kurs` float DEFAULT NULL,
`kurs_pr` float NOT NULL DEFAULT '0',
`commets` text,
`avtor_id` int(11) DEFAULT NULL,
`slot` int(11) DEFAULT NULL,
PRIMARY KEY (`oplata_id`),
KEY `opl_date` (`opl_date`),
KEY `zayvka_id` (`zayvka_id`),
KEY `avtor_id` (`avtor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3922 ;
Есть код, который записывает в эту таблицу сумму, автора, айди заявки по которой происходит оплата, порядковый номер оплаты в отдельно взятой заявке, создает айди самой оплаты. Выглядит примерно так:
PHP:
скопировать код в буфер обмена
<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?>)">
+<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']?>">% =
<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']?>">
</TD>
<TD align=middle><INPUT <?= $pay_edit_lock?> class=texts maxLength=30
onchange="payment_to_rur_val(oplto1_tourist<?=$oplat_num?>, oplto1_kurs<?=$oplat_num?>,oplto1_sum<?=$oplat_num?>,oplto1_curr<?=$oplat_num?>)"
size=8 name=oplto1_tourist<?=$oplat_num?> value="<?=$RowOP['summa']?>"></TD>
<TD align=middle<? $name="oplto1_sum".$oplat_num; if($oplata_not_filled[$name]!="") echo " bgcolor=\"Red\""; ?>><INPUT <?= $pay_edit_lock?> class=texts maxLength=30
size=8 name=oplto1_sum<?=$oplat_num?> value="<?=$RowOP['summa_rur']?>" <?=!$show_link && !$pay_edit_lock?"id='oplto1_last_rur'":""?>></TD>
</TD>
<TD align="left" class="text"><INPUT <?= $pay_edit_lock?> class=texts maxLength=255
size=70
name=oplto1_info<?=$oplat_num?> value="<?=$RowOP['commets']?>">
<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?>>
<?
$r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal
"]}.`users` where id='".$RowOP['avtor_id']."'"); if($RowOP['avtor_id']=="") $r_opl_user = mysql_query("SELECT * FROM {$_SESSION["picked_legal
"]}.`users` where id='".$USER_ID."'"); if($RowOP_USER['fio']!="") echo $mod_not_saved."Обр.: ".$RowOP_USER['fio'].$mod_not_saved2;
?>
<INPUT <?= $pay_edit_lock?> type=hidden value="<?=$RowOP['slot']?>" name=oplto1_slot<?=$oplat_num?>>
</TD>
Фишка в том, что все работает вроде, но! Первая оплата добавляется абсолютно всегда! Вторая на 99% тоже, по крайней мере я не помню, чтоб были косяки. а вот третья - уже проблемы. НО! Самое смешное, что иногда третья добавляется без проблем, а вот четвертая - не в какую. тупо не создается запись в базе. А сегодня вообще прикол - не добавляется тринадцатая строка! т.е. 12 были добавлены успешно, а вот 13 - нет.
В чем прикол - не могу понять.