We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 11255
    • 193 Posts
    чтото я дуплю или что huh
    такой код
    $table='`modx_banner`';
    $fields=array(	'shows' => 1,
    'month' => $today,
    'bannerid' => $bid
    );
    $modx->db->insert($fields, $table);
    

    Запрос проходит, но вставляется не "1", а "2" shocked
    поле: `shows` INT( 10 ) NOT NULL
      • 11255
      • 193 Posts
      проблема оказалась немного в другом.
      у меня идет код так:
      проверка на существование рядка в базе
      -если нету: инсерт (значение 1)
      -если есть: апдейт (значение +1)

      так вот оно как: сначала заходим на страницу - оно видет что рядка нету - делает инсерт. А ПОТОМ непонятно почему еще раз загружает сниппет, и, видя что рядок есть, делает апдейт +1. только вот почему оно еще раз запускает сниппет? вставляю один раз в шаблоне.
        • 28814 ☆ A M B ☆
        • 1,086 Posts
        Quote from: Great-Antique at Nov 10, 2009, 07:18 AM

        А ПОТОМ непонятно почему еще раз загружает сниппет, и, видя что рядок есть, делает апдейт +1. только вот почему оно еще раз запускает сниппет?
        Наверное потому, что чего-то намудрили в коде сниппета smiley
        Или может страницу с этим сниппетом случайно/специально перезагружаете после выполнения запроса.
        Код сниппета покажите, может что-то там найдется.
          Разработка сайтов и программных модулей на MODX.
          Опыт работы на MODx с 2005 года. Высокое качество.
          Компания Baltic Design Colors: http://www.bdcolors.ru.
          • 11255
          • 193 Posts
          в общем походу все страницы загружаются 2 раза embarrassed сайт делал не я. так что даже не знаю куда и начинать лезть. точно не в моем сниппете rolleyes все проверял-перепроверял. а вот по поводу всех других ручаться не могу.
          может подскажите как можно проверить перезагружается страница или нет? визуально не понятно.
            • 1477
            • 515 Posts
            Quote from: Great-Antique at Nov 10, 2009, 09:01 AM

            может подскажите как можно проверить перезагружается страница или нет? визуально не понятно.
            Вставьте такой код в шаблон:
            <script>alert('опа');</script>

            Если Вы увидите два алерта значит страница загружается два раза smiley
              Shopkeeper - сниппет и модуль для создания интернет-магазина.
              TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
              PickDocsInTree - плагин для выбора документов из дерева.
              Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
              • 11255
              • 193 Posts
              Quote from: Andchir at Nov 11, 2009, 01:53 PM
              Вставьте такой код в шаблон:
              <script>alert('опа');</script>

              Если Вы увидите два алерта значит страница загружается два раза smiley
              спасибо за совет smiley помогло. вернее я теперь знаю что страница не загружается 2 раза. но сниппет выполняется.
              вот его код (вернее часть сниппета):
              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);
              }

              вот почему-то выполняются оба условия. может быть такое?
                • 28814 ☆ A M B ☆
                • 1,086 Posts
                Quote from: Great-Antique at Nov 12, 2009, 01:04 AM

                вот почему-то выполняются оба условия. может быть такое?
                Давайте полный код сниппета, чего скромничаете smiley
                А вообще оба условия одновременно выполниться не смогут.
                  Разработка сайтов и программных модулей на MODX.
                  Опыт работы на MODx с 2005 года. Высокое качество.
                  Компания Baltic Design Colors: http://www.bdcolors.ru.
                  • 11255
                  • 193 Posts
                  Quote from: Fuzzy at Nov 12, 2009, 02:02 AM

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

                  вот код:
                  <?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']=='внешние') {$target='target="_blank"';}
                  				elseif ($ans['banner_type']=='наши') {$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']=='внешние') {$target='target="_blank"';}
                  		elseif ($ans['banner_type']=='наши') {$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;
                  ?>