2013-04-23 2 views
0

У меня есть этот небольшой скрипт для обновления счетчика ОТЧЕТскрипт обновления удваивает счетчик

/********************************* 
    * Report an ad as inappropriate 
    * This happens when a user click 
    * the "Report ad" link on the ad 
    * view page. 
    * 
    * The ad can then be reviewed 
    * and disabled. 
    * 
    * @param int | The ad id 
    *********************************/ 
    function report_ad($aid) { 
     $row = $this->db->dbh->query('UPDATE '. $this->config->db_prefix .'_adverts SET been_reported = 1, num_reports = num_reports + 1 WHERE aid = '.$aid.''); 
     $row->execute();   
    } 

и это JQuery для обработки по ссылке ЩЕЛКНИТЕ

$("#report-ad").click(function(){ 

    var conf = confirm("Do you want to report this ad as inappropriate?"); 
    var aid = {$smarty.get.aid} 

    if(conf == true) { 
    $.ajax({ 
     url: 'reportad.php', 
     type: 'post', 
     data: {literal}{aid: aid}{/literal}, 
     success: function(data) { 
      alert("The ad has been reported as inappropriate"); 
     }, 
     error: function(data) { 
      alert("An error occured"); 
     } 
    }); 
    } 
    return false; 
}); 

reportad.php содержит только это:

$adverts = new Adverts(); 
$adverts->report_ad($_POST["aid"]); 

по какой-то причине обновляет num_reports с 2, поэтому, если он равен 1, он станет 3, а затем 5 и так далее. Я не вижу, где проблема.

+0

Является ли ваш конструктор объявлений конструктором, вызывающим метод report_ad()? –

+0

nope .. это не –

+0

смотреть в браузере console .... есть несколько запросов ajax? – charlietfl

ответ

1

Помогите нам помочь вам: Отследить, где происходит ошибка:

  • Что делать, если вы выполнить запрос вручную? Также +2? (Устанавливается приращение хранимой процедуры всякий раз, когда was_reported)?
  • Является ли функция вызвана несколько раз? если вы новичок в отладке php,

    mail ([email protected] ',' message ');

- плохая практика, но быстро сделать. (также проверьте файл_put_content() для простого ведения журнала, не основанного на объекте).

Кроме того, не так хватает semicolone после

var aid = {$smarty.get.aid} 

Greets

EDIT: Неуверенный, если запрос() делает подготовленное заявление, или непосредственно выполняет запрос? В этом случае query() и execute() будут удваивать ваш эль.

+0

Если я выполнил запрос вручную, он будет правильно его обновлять только с +1. Если я использую 'curl -X PUT http: // www.domain.dk/reportad/43 /' через терминал, он будет обновляться с помощью +2, поэтому это должно быть что-то со скриптом. –

+0

@MortenHagh Я отредактировал свой ответ. –

+0

У меня не было подготовленного заявления! Я изменил его на подготовленное заявление и вуаля! Оно работает! Спасибо! –

Смежные вопросы