Topic: MySQL INSERT через dbapi  (Read 428 times)

Pages: [1]   Go Down

#1: 10-Nov-2009, 06:08 AM


Great-Antique
Posts: 191

It's all in your mind

чтото я дуплю или что  Huh
такой код
Code:
$table='`modx_banner`';
$fields=array( 'shows' => 1,
'month' => $today,
'bannerid' => $bid
);
$modx->db->insert($fields, $table);
Запрос проходит, но вставляется не "1", а "2"  Shocked
поле: `shows` INT( 10 ) NOT NULL

#2: 10-Nov-2009, 07:18 AM


Great-Antique
Posts: 191

It's all in your mind

проблема оказалась немного в другом.
у меня идет код так:
проверка на существование рядка в базе
-если нету: инсерт (значение 1)
-если есть: апдейт (значение +1)

так вот оно как: сначала заходим на страницу - оно видет что рядка нету - делает инсерт. А ПОТОМ непонятно почему еще раз загружает сниппет, и, видя что рядок есть, делает апдейт +1. только вот почему оно еще раз запускает сниппет? вставляю один раз в шаблоне.

#3: 10-Nov-2009, 07:46 AM

Moderator

Fuzzy
Posts: 1,002

WWW
А ПОТОМ непонятно почему еще раз загружает сниппет, и, видя что рядок есть, делает апдейт +1. только вот почему оно еще раз запускает сниппет?
Наверное потому, что чего-то намудрили в коде сниппета Smiley
Или может страницу с этим сниппетом случайно/специально перезагружаете после выполнения запроса.
Код сниппета покажите, может что-то там найдется.

#4: 10-Nov-2009, 09:01 AM


Great-Antique
Posts: 191

It's all in your mind

в общем походу все страницы загружаются 2 раза  Embarrassed сайт делал не я. так что даже не знаю куда и начинать лезть. точно не в моем сниппете  Roll Eyes все проверял-перепроверял. а вот по поводу всех других ручаться не могу.
может подскажите как можно проверить перезагружается страница или нет? визуально не понятно.

#5: 11-Nov-2009, 01:53 PM


Andchir
Posts: 669

WWW
может подскажите как можно проверить перезагружается страница или нет? визуально не понятно.
Вставьте такой код в шаблон:
Code:
<script>alert('опа');</script>
Если Вы увидите два алерта значит страница загружается два раза  Smiley
Shopkeeper - сниппет и модуль для создания интернет-магазина. [F.A.Q.]
TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
PickDocsInTree - плагин для выбора документов из дерева.
eCommerce 1.0 - сниппет для создания магазина электронных товаров с оплатой через WebMoney.

#6: 12-Nov-2009, 01:04 AM


Great-Antique
Posts: 191

It's all in your mind

Вставьте такой код в шаблон:
Code:
<script>alert('опа');</script>
Если Вы увидите два алерта значит страница загружается два раза  Smiley
спасибо за совет Smiley помогло. вернее я теперь знаю что страница не загружается 2 раза. но сниппет выполняется.
вот его код (вернее часть сниппета):
Code:
if ($banid=='') {
$queryb='INSERT INTO `mytable ` (shows,month,bannerid,what) VALUES (1,"2009-11-01",'.$bid.',"1")';
$modx->db->query($queryb);
}
else {

$querybu='UPDATE `mytable` SET shows='.$shows.' WHERE id = '.$banid;
$modx->db->query($querybu);
}
вот почему-то выполняются оба условия. может быть такое?

#7: 12-Nov-2009, 02:02 AM

Moderator

Fuzzy
Posts: 1,002

WWW
вот почему-то выполняются оба условия. может быть такое?
Давайте полный код сниппета, чего скромничаете Smiley
А вообще оба условия одновременно выполниться не смогут.

#8: 12-Nov-2009, 03:12 AM


Great-Antique
Posts: 191

It's all in your mind

Давайте полный код сниппета, чего скромничаете Smiley
А вообще оба условия одновременно выполниться не смогут.
вот это и странно. но ТОЧНО известно что при открытии страницы проходят оба процесса. Но страница не перезагружается. Т.е. сниппет выполняется 2 раза.

вот код:
Code:
<?php
$ban
='';
$target='target="_blank"';
$tvs=array('banner','banner_type');
$cid=$modx->documentIdentifier;
$ans=$modx->getTemplateVarOutput($tvs$cid'1');
if (
$ans['banner']==''){

$parents=$modx->getParent($cid,1,'id');
if ($parents['id']!=''){

$ans=$modx->getTemplateVarOutput($tvs$parents['id'], '1');
if ($ans['banner']!=''){

$ban=(int)$ans['banner'];
if ((isset($ans['banner_type'])) && ($ans['banner_type']!='')) {
if ($ans['banner_type']=='&#1074;&#1085;&#1077;&#1096;&#1085;&#1080;&#1077;') {$target='target="_blank"';}
elseif ($ans['banner_type']=='&#1085;&#1072;&#1096;&#1080;') {$target='target="_self"';}
else {$target='target="_blank"';}
} else {$target='target="_blank"';}
}
else {

}
}
}
else {

$ban=(int)$ans['banner'];
if ((isset($ans['banner_type'])) && ($ans['banner_type']!='')) {
if ($ans['banner_type']=='&#1074;&#1085;&#1077;&#1096;&#1085;&#1080;&#1077;') {$target='target="_blank"';}
elseif ($ans['banner_type']=='&#1085;&#1072;&#1096;&#1080;') {$target='target="_self"';}
else {$target='target="_blank"';}
} else {$target='target="_blank"';}
}

if ((
$ban!='') && ($ban!=0)){

$bid=$ban;
$bcont=$modx->getDocument($bid,'longtitle,description',1);
$content='<div style="height:5px;"></div><div style="text-align: center;"><a href="/url/?bid='.$bid.'&url='.$bcont['longtitle'].'" '.$target.'><img src="'.$bcont['description'].'"></a></div>';
$myip=getenv(HTTP_X_FORWARDED_FOR);
if ($myip!='#tut moj ip :)') {


$table='modx_banner';
$today=date("Y-m-01"mktime());
$query21='SELECT id,shows FROM `modx_banner` WHERE bannerid='.$bid.' AND month>='.$today;

$res=$modx->db->query($query21);
$row=mysql_fetch_assoc($res);


if ((isset($row)) && (is_array($row))) {

if (isset($row['id'])){

$banid=$row['id'];
} else {$banid='';}
if ((isset($row['shows'])) && (is_numeric($row['shows']))) {

$shows=(int)$row['shows']+1;

} else {$shows=0;}
} else {

$banid=''
$shows=0;
}

if ($banid=='') {

$queryb='INSERT INTO `modx_banner` (shows,month,bannerid,what) VALUES (1,"2009-11-01",'.$bid.',"1")';
$modx->db->query($queryb);

}
else {

$querybu='UPDATE `modx_banner` SET shows='.$shows.' WHERE id = '.$banid;

$modx->db->query($querybu);

}
}
else {}
}
else {

$content='<div style="height:5px;"></div><div class="adwords" style="text-align: center;">{{topbanners}}</div></div>';
}
return 
$content;
?>
Pages: [1]   Go Up
0 Members and 1 Guest are viewing this topic.